mirror of
https://github.com/open-mmlab/mmrazor.git
synced 2025-06-03 15:02:54 +08:00
* Copybook * Newly created copy PR * Newly created copy PR * update op_counters * update subnet/commit/FLOPsCounter * update docs/UT * update docs/UT * add setter for current_mask * replace current_mask with activated_tensor_channel * update subnet training * fix ci * fix ci * fix ci * fix readme.md * fix readme.md * update * fix expression * fix CI * fix UT * fix ci * fix arch YAMLs * fix yapf * revise mmcv version<=2.0.0rc3 * fix build.yaml * Rollback mmdet to v3.0.0rc5 * Rollback mmdet to v3.0.0rc5 * Rollback mmseg to v1.0.0rc4 * remove search_groups in mutator * revert env change * update usage of sub_model * fix UT * fix bignas config * fix UT for dcff & registry * update Ut&channel_mutator * fix test_channel_mutator * fix Ut * fix bug for load dcffnet * update nas config * update nas config * fix api in evolution_search_loop * update evolu_search_loop * fix metric_predictor * update url * fix a0 fine_grained * fix subnet export misskey * fix ofa yaml * fix lint * fix comments * add autoformer cfg * update readme * update supernet link * fix sub_model configs * update subnet inference readme * fix lint * fix lint * Update autoformer_subnet_8xb256_in1k.py * update test.py to support args.checkpoint as none * update DARTS readme * update readme --------- Co-authored-by: gaoyang07 <1546308416@qq.com> Co-authored-by: aptsunny <aptsunny@tongji.edu.cn> Co-authored-by: sunyue1 <sunyue1@sensetime.com> Co-authored-by: aptsunny <36404164+aptsunny@users.noreply.github.com> Co-authored-by: wang shiguang <xiaohu_wyyx@163.com>
79 lines
2.6 KiB
Python
79 lines
2.6 KiB
Python
# Copyright (c) OpenMMLab. All rights reserved.
|
|
import argparse
|
|
import os
|
|
import os.path as osp
|
|
|
|
from mmengine.config import Config, DictAction
|
|
from mmengine.runner import Runner
|
|
|
|
from mmrazor.utils import register_all_modules
|
|
|
|
|
|
# TODO: support fuse_conv_bn, visualization, and format_only
|
|
def parse_args():
|
|
parser = argparse.ArgumentParser(
|
|
description='MMRazor test (and eval) a model')
|
|
parser.add_argument('config', help='test config file path')
|
|
parser.add_argument('checkpoint', help='checkpoint file')
|
|
parser.add_argument(
|
|
'--work-dir',
|
|
help='the directory to save the file containing evaluation metrics')
|
|
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'],
|
|
default='none',
|
|
help='job launcher')
|
|
parser.add_argument('--local_rank', type=int, default=0)
|
|
args = parser.parse_args()
|
|
if 'LOCAL_RANK' not in os.environ:
|
|
os.environ['LOCAL_RANK'] = str(args.local_rank)
|
|
return args
|
|
|
|
|
|
def main():
|
|
register_all_modules(False)
|
|
args = parse_args()
|
|
|
|
# load config
|
|
cfg = Config.fromfile(args.config)
|
|
cfg.launcher = args.launcher
|
|
if args.cfg_options is not None:
|
|
cfg.merge_from_dict(args.cfg_options)
|
|
|
|
# work_dir is determined in this priority: CLI > segment in file > filename
|
|
if args.work_dir is not None:
|
|
# update configs according to CLI args if args.work_dir is not None
|
|
cfg.work_dir = args.work_dir
|
|
elif cfg.get('work_dir', None) is None:
|
|
# use config filename as default work_dir if cfg.work_dir is None
|
|
cfg.work_dir = osp.join('./work_dirs',
|
|
osp.splitext(osp.basename(args.config))[0])
|
|
|
|
if args.checkpoint == 'none':
|
|
# NOTE: In this case, `args.checkpoint` isn't specified. If you haven't
|
|
# specified a checkpoint in the `init_cfg` of the model yet, it may
|
|
# cause the invalid results.
|
|
cfg.load_from = None
|
|
else:
|
|
cfg.load_from = args.checkpoint
|
|
|
|
# build the runner from config
|
|
runner = Runner.from_cfg(cfg)
|
|
|
|
# start testing
|
|
runner.test()
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|