mirror of https://github.com/open-mmlab/mmocr.git
Add benchmark_processing script (#261)
* Flush data script Signed-off-by: lizz <lizz@sensetime.com> * Update tools/run_data.py Co-authored-by: jeffreykuang <kuangzhanghui@sensetime.com> * Update tools/run_data.py Co-authored-by: jeffreykuang <kuangzhanghui@sensetime.com> * Update tools/run_data.py Co-authored-by: jeffreykuang <kuangzhanghui@sensetime.com> * rename to benchmark_processing Signed-off-by: lizz <lizz@sensetime.com> Co-authored-by: jeffreykuang <kuangzhanghui@sensetime.com>pull/270/head
parent
179ab3719c
commit
bb4447585f
|
@ -0,0 +1,59 @@
|
|||
#!/usr/bin/env python
|
||||
"""This file is for benchmark data loading process. It can also be used to
|
||||
refresh the memcached cache. The command line to run this file is:
|
||||
|
||||
$ python -m cProfile -o program.prof tools/analysis/benchmark_processing.py
|
||||
configs/task/method/[config filename]
|
||||
|
||||
Note: When debugging, the `workers_per_gpu` in the config should be set to 0
|
||||
during benchmark.
|
||||
|
||||
It use cProfile to record cpu running time and output to program.prof
|
||||
To visualize cProfile output program.prof, use Snakeviz and run:
|
||||
$ snakeviz program.prof
|
||||
"""
|
||||
import argparse
|
||||
|
||||
import mmcv
|
||||
from mmcv import Config
|
||||
|
||||
from mmdet.datasets import build_dataloader
|
||||
from mmocr.datasets import build_dataset
|
||||
|
||||
assert build_dataset is not None
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description='Benchmark data loading')
|
||||
parser.add_argument('config', help='Train config file path.')
|
||||
args = parser.parse_args()
|
||||
cfg = Config.fromfile(args.config)
|
||||
|
||||
dataset = build_dataset(cfg.data.train)
|
||||
|
||||
# prepare data loaders
|
||||
if 'imgs_per_gpu' in cfg.data:
|
||||
cfg.data.samples_per_gpu = cfg.data.imgs_per_gpu
|
||||
|
||||
data_loader = build_dataloader(
|
||||
dataset,
|
||||
cfg.data.samples_per_gpu,
|
||||
cfg.data.workers_per_gpu,
|
||||
1,
|
||||
dist=False,
|
||||
seed=None)
|
||||
|
||||
# Start progress bar after first 5 batches
|
||||
prog_bar = mmcv.ProgressBar(
|
||||
len(dataset) - 5 * cfg.data.samples_per_gpu, start=False)
|
||||
for i, data in enumerate(data_loader):
|
||||
if i == 5:
|
||||
prog_bar.start()
|
||||
for _ in range(len(data['img'])):
|
||||
if i < 5:
|
||||
continue
|
||||
prog_bar.update()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
Loading…
Reference in New Issue