From 38766109d37164f4baf5ad4e9be449d5a69c9b63 Mon Sep 17 00:00:00 2001 From: mzr1996 Date: Mon, 30 Aug 2021 15:37:38 +0800 Subject: [PATCH] Rename the option `--options` in some tools to `--cfg-options`. --- tools/analysis_tools/analyze_results.py | 27 +++++++++++++++++++--- tools/test.py | 28 +++++++++++++++++++---- tools/train.py | 30 ++++++++++++++++++++++--- 3 files changed, 75 insertions(+), 10 deletions(-) diff --git a/tools/analysis_tools/analyze_results.py b/tools/analysis_tools/analyze_results.py index 2cbce465846..0029a02865a 100644 --- a/tools/analysis_tools/analyze_results.py +++ b/tools/analysis_tools/analyze_results.py @@ -1,6 +1,7 @@ # Copyright (c) OpenMMLab. All rights reserved. import argparse import os.path as osp +import warnings import mmcv from mmcv import DictAction @@ -20,13 +21,33 @@ def parse_args(): default=20, type=int, help='Number of images to select for success/fail') + parser.add_argument( + '--cfg-options', + nargs='+', + action=DictAction, + help='override some settings in the used config, the key-value pair ' + 'in xxx=yyy format will be merged into config file. If the value to ' + 'be overwritten is a list, it should be like key="[a,b]" or key=a,b ' + 'It also allows nested list/tuple values, e.g. key="[(a,b),(c,d)]" ' + 'Note that the quotation marks are necessary and that no white space ' + 'is allowed.') parser.add_argument( '--options', nargs='+', action=DictAction, help='override some settings in the used config, the key-value pair ' - 'in xxx=yyy format will be merged into config file.') + 'in xxx=yyy format will be merged into config file (deprecate), ' + 'change to --cfg-options instead.') args = parser.parse_args() + + if args.options and args.cfg_options: + raise ValueError( + '--options and --cfg-options cannot be both ' + 'specified, --options is deprecated in favor of --cfg-options') + if args.options: + warnings.warn('--options is deprecated in favor of --cfg-options') + args.cfg_options = args.options + return args @@ -47,8 +68,8 @@ def main(): args = parse_args() cfg = mmcv.Config.fromfile(args.config) - if args.options is not None: - cfg.merge_from_dict(args.options) + if args.cfg_options is not None: + cfg.merge_from_dict(args.cfg_options) model = build_classifier(cfg.model) diff --git a/tools/test.py b/tools/test.py index daaaedfcc34..b553ac44302 100644 --- a/tools/test.py +++ b/tools/test.py @@ -40,16 +40,27 @@ def parse_args(): parser.add_argument( '--show-dir', help='directory where painted images will be saved') parser.add_argument( - '--gpu_collect', + '--gpu-collect', action='store_true', help='whether to use gpu to collect results') parser.add_argument('--tmpdir', help='tmp dir for writing some results') + parser.add_argument( + '--cfg-options', + nargs='+', + action=DictAction, + help='override some settings in the used config, the key-value pair ' + 'in xxx=yyy format will be merged into config file. If the value to ' + 'be overwritten is a list, it should be like key="[a,b]" or key=a,b ' + 'It also allows nested list/tuple values, e.g. key="[(a,b),(c,d)]" ' + 'Note that the quotation marks are necessary and that no white space ' + 'is allowed.') parser.add_argument( '--options', nargs='+', action=DictAction, help='override some settings in the used config, the key-value pair ' - 'in xxx=yyy format will be merged into config file.') + 'in xxx=yyy format will be merged into config file (deprecate), ' + 'change to --cfg-options instead.') parser.add_argument( '--metric-options', nargs='+', @@ -78,6 +89,15 @@ def parse_args(): args = parser.parse_args() if 'LOCAL_RANK' not in os.environ: os.environ['LOCAL_RANK'] = str(args.local_rank) + + if args.options and args.cfg_options: + raise ValueError( + '--options and --cfg-options cannot be both ' + 'specified, --options is deprecated in favor of --cfg-options') + if args.options: + warnings.warn('--options is deprecated in favor of --cfg-options') + args.cfg_options = args.options + return args @@ -85,8 +105,8 @@ def main(): args = parse_args() cfg = mmcv.Config.fromfile(args.config) - if args.options is not None: - cfg.merge_from_dict(args.options) + if args.cfg_options is not None: + cfg.merge_from_dict(args.cfg_options) # set cudnn_benchmark if cfg.get('cudnn_benchmark', False): torch.backends.cudnn.benchmark = True diff --git a/tools/train.py b/tools/train.py index ff7d1861c1a..adff63d9111 100644 --- a/tools/train.py +++ b/tools/train.py @@ -4,6 +4,7 @@ import os import os.path as osp import time +import warnings import mmcv import torch @@ -46,7 +47,22 @@ def parse_args(): action='store_true', help='whether to set deterministic options for CUDNN backend.') parser.add_argument( - '--options', nargs='+', action=DictAction, help='arguments in dict') + '--options', + nargs='+', + action=DictAction, + help='override some settings in the used config, the key-value pair ' + 'in xxx=yyy format will be merged into config file (deprecate), ' + 'change to --cfg-options instead.') + parser.add_argument( + '--cfg-options', + nargs='+', + action=DictAction, + help='override some settings in the used config, the key-value pair ' + 'in xxx=yyy format will be merged into config file. If the value to ' + 'be overwritten is a list, it should be like key="[a,b]" or key=a,b ' + 'It also allows nested list/tuple values, e.g. key="[(a,b),(c,d)]" ' + 'Note that the quotation marks are necessary and that no white space ' + 'is allowed.') parser.add_argument( '--launcher', choices=['none', 'pytorch', 'slurm', 'mpi'], @@ -57,6 +73,14 @@ def parse_args(): if 'LOCAL_RANK' not in os.environ: os.environ['LOCAL_RANK'] = str(args.local_rank) + if args.options and args.cfg_options: + raise ValueError( + '--options and --cfg-options cannot be both ' + 'specified, --options is deprecated in favor of --cfg-options') + if args.options: + warnings.warn('--options is deprecated in favor of --cfg-options') + args.cfg_options = args.options + return args @@ -64,8 +88,8 @@ def main(): args = parse_args() cfg = Config.fromfile(args.config) - if args.options is not None: - cfg.merge_from_dict(args.options) + if args.cfg_options is not None: + cfg.merge_from_dict(args.cfg_options) # set cudnn_benchmark if cfg.get('cudnn_benchmark', False): torch.backends.cudnn.benchmark = True