def parse_args():
parser = argparse.ArgumentParser(
description='Generate 2D pose annotations for a custom video dataset')
# * Both mmdet and mmpose should be installed from source
# parser.add_argument('--mmdet-root', type=str, default=default_mmdet_root)
# parser.add_argument('--mmpose-root', type=str, default=default_mmpose_root)
parser.add_argument('--det-config', type=str, default=default_det_config)
parser.add_argument('--det-ckpt', type=str, default=default_det_ckpt)
parser.add_argument('--pose-config', type=str, default=default_pose_config)
parser.add_argument('--pose-ckpt', type=str, default=default_pose_ckpt)
# * Only det boxes with score larger than det_score_thr will be kept
parser.add_argument('--det-score-thr', type=float, default=0.7)
# * Only det boxes with large enough sizes will be kept,
parser.add_argument('--det-area-thr', type=float, default=1600)
# * Accepted formats for each line in video_list are:
# * 1. "xxx.mp4" ('label' is missing, the dataset can be used for inference, but not training)
# * 2. "xxx.mp4 label" ('label' is an integer (category index),
# * the result can be used for both training & testing)
# * All lines should take the same format.
parser.add_argument('--video-list', type=str, help='the list of source videos')
# * out should ends with '.pkl'
parser.add_argument('--out', type=str, help='output pickle name')
parser.add_argument('--tmpdir', type=str, default='tmp')
parser.add_argument('--local_rank', type=int, default=0)
# * When non-dist is set, will only use 1 GPU
parser.add_argument('--non-dist', action='store_true', help='whether to use distributed skeleton extraction')
parser.add_argument('--compress', action='store_true', help='whether to do K400-style compression')
args = parser.parse_args()
if 'LOCAL_RANK' not in os.environ:
os.environ['LOCAL_RANK'] = str(args.local_rank)
args = parser.parse_args()
return args
这是一个用于解析命令行参数的函数 parse_args()
。下面是这个函数的输入和输出的解释:
输入:
- 无
输出:
args
:包含解析后的命令行参数的命名空间(Namespace)对象。
函数的功能是解析命令行参数并返回一个包含这些参数的命名空间对象。具体的解释如下:
-
创建一个
argparse.ArgumentParser
对象parser
,用于解析命令行参数。 -
添加各种命令行参数选项,包括检测模型和姿态模型的配置文件路径、检测模型和姿态模型的权重文件路径、检测阈值、目标框面积阈值、视频列表、输出文件名等参数。
-
调用
parser.parse_args()
解析命令行参数,并将解析结果赋值给args
。 -
检查是否存在环境变量中的
LOCAL_RANK
,如果不存在,则将args.local_rank
的值转换为字符串并设置为环境变量中的LOCAL_RANK
。 -
再次调用
parser.parse_args()
解析命令行参数,并将解析结果赋值给args
。 -
返回包含解析后的命令行参数的命名空间对象
args
。
因此,这个函数的输入是空的,输出是一个包含解析后的命令行参数的命名空间对象,可以通过对象的属性来访问解析后的参数值。
def parse_args():
parser = argparse.ArgumentParser(
description='Generate 2D pose annotations for a custom video dataset')
# * Both mmdet and mmpose should be installed from source
# parser.add_argument('--mmdet-root', type=str, default=default_mmdet_root)
# parser.add_argument('--mmpose-root', type=str, default=default_mmpose_root)
# parser.add_argument('--det-config', type=str, default='../refe/faster_rcnn_r50_caffe_fpn_mstrain_1x_coco-person.py')
# parser.add_argument('--det-ckpt', type=str,
# default='../refe/faster_rcnn_r50_fpn_1x_coco-person_20201216_175929-d022e227.pth')
parser.add_argument(
'--det-config',
# default='../refe/faster_rcnn_r50_fpn_2x_coco.py',
default=default_det_config,
help='human detection config file path (from mmdet)')
parser.add_argument(
'--det-ckpt',
default=default_det_ckpt,
help='human detection checkpoint file/url')
parser.add_argument('--pose-config', type=str, default=default_pose_config)
parser.add_argument('--pose-ckpt', type=str, default=default_pose_ckpt)
# * Only det boxes with score larger than det_score_thr will be kept
parser.add_argument('--det-score-thr', type=float, default=0.7)
# * Only det boxes with large enough sizes will be kept,
parser.add_argument('--det-area-thr', type=float, default=1300)
# * Accepted formats for each line in video_list are:
# * 1. "xxx.mp4" ('label' is missing, the dataset can be used for inference, but not training)
# * 2. "xxx.mp4 label" ('label' is an integer (category index),
# * the result can be used for both training & testing)
# * All lines should take the same format.
parser.add_argument('--video-list', type=str, help='the list of source videos')
# * out should ends with '.pkl'
parser.add_argument('--out', type=str, help='output pickle name')
parser.add_argument('--tmpdir', type=str, default='tmp')
parser.add_argument('--local_rank', type=int, default=1)
# pdb.set_trace()
# if 'RANK' not in os.environ:
# os.environ['RANK'] = str(args.local_rank)
# os.environ['WORLD_SIZE'] = str(1)
# os.environ['MASTER_ADDR'] = 'localhost'
# os.environ['MASTER_PORT'] = '12345'
args = parser.parse_args()
return args
这段代码是前面提供的 parse_args()
函数的一个修改版本。下面是这段代码的区别和中文解释:
-
注释掉了
--mmdet-root
和--mmpose-root
参数:这段代码不再使用--mmdet-root
和--mmpose-root
参数,这些参数之前可能用于指定mmdet
和mmpose
的安装路径。 -
更新了
--det-config
和--det-ckpt
参数的默认值:这段代码修改了--det-config
和--det-ckpt
参数的默认值。之前的默认值是注释掉的路径,而现在使用了名为default_det_config
和default_det_ckpt
的变量作为新的默认值。 -
更新了
--det-area-thr
参数的默认值:这段代码修改了--det-area-thr
参数的默认值。之前的默认值是 1600,而现在修改为 1300。 -
注释掉了
pdb.set_trace()
:这段代码注释掉了pdb.set_trace()
,这是一个调试工具,用于在代码中设置断点进行调试。 -
注释掉了与环境变量相关的代码:这段代码注释掉了与环境变量相关的代码,包括
os.environ['RANK']
、os.environ['WORLD_SIZE']
、os.environ['MASTER_ADDR']
和os.environ['MASTER_PORT']
。
总结起来,这段代码是对前面提供的 parse_args()
函数进行了修改。主要修改包括更新了部分参数的默认值,注释掉了调试工具的断点设置,并注释掉了与环境变量相关的代码。
参考: