| | |
| | |
| | """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 mmpose import __version__ |
| | from mmpose.datasets import build_dataloader, build_dataset |
| | from mmpose.utils import get_root_logger |
| |
|
| |
|
| | 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) |
| |
|
| | |
| | logger = get_root_logger() |
| | logger.info(f'MMPose Version: {__version__}') |
| | logger.info(f'Config: {cfg.text}') |
| |
|
| | dataset = build_dataset(cfg.data.train) |
| | data_loader = build_dataloader( |
| | dataset, |
| | samples_per_gpu=1, |
| | workers_per_gpu=cfg.data.workers_per_gpu, |
| | dist=False, |
| | shuffle=False) |
| |
|
| | |
| | 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 data['img']: |
| | if i < 5: |
| | continue |
| | prog_bar.update() |
| |
|
| |
|
| | if __name__ == '__main__': |
| | main() |
| |
|