def parse_args():
parser = argparse.ArgumentParser(description='YOWOv2')
# CUDA
parser.add_argument('--cuda', action='store_true', default=False,#是否使用CUDA加速。如果指定此参数,将使用GPU进行训练。
help='use cuda.')
# Visualization
parser.add_argument('--tfboard', action='store_true', default=False,#是否使用TensorBoard进行可视化
help='use tensorboard')
parser.add_argument('--save_folder', default='./weights/', type=str, #保存模型权重的路径。
help='path to save weight')
parser.add_argument('--vis_data', action='store_true', default=False,#是否使用TensorBoard进行数据可视化。
help='use tensorboard')
# Evaluation
parser.add_argument('--eval', action='store_true', default=False, #是否在训练过程中进行评估。
help='do evaluation during training.')
parser.add_argument('--eval_epoch', default=1, type=int, #每多少个epoch进行一次评估。
help='after eval epoch, the model is evaluated on val dataset.')
parser.add_argument('--save_dir', default='inference_results/',#保存推理结果的目录。
type=str, help='save inference results.')
parser.add_argument('--eval_first', action='store_true', default=False,#在训练前是否先进行一次评估。
help='evaluate model before training.')
# Batchsize
parser.add_argument('-bs', '--batch_size', default=16, type=int, #单个GPU上的训练批量大小。
help='batch size on a single GPU.')
parser.add_argument('-tbs', '--test_batch_size', default=16, type=int, #单个GPU上的测试批量大小。
help='test batch size on a single GPU.')
parser.add_argument('-accu', '--accumulate', default=1, type=int, #梯度累积步数
help='gradient accumulate.')
parser.add_argument('-lr', '--base_lr', default=0.0001, type=float, #基础学习率。
help='base lr.')
parser.add_argument('-ldr', '--lr_decay_ratio', default=0.5, type=float, #学习率衰减比例。
help='base lr.')
# Epoch
parser.add_argument('--max_epoch', default=10, type=int, #最大训练轮次。
help='max epoch.')
parser.add_argument('--lr_epoch', nargs='+', default=[2,3,4], type=int,#学习率衰减的轮次列表。
help='lr epoch to decay')
# Model
parser.add_argument('-v', '--version', default='yowo_v2_tiny', type=str,#模型版本,指定构建的YOWOv2版本。
help='build YOWOv2')
parser.add_argument('-r', '--resume', default=None, type=str,#继续训练时加载的模型路径。
help='keep training')
parser.add_argument('-ct', '--conf_thresh', default=0.1, type=float,#置信度阈值,建议在UCF24上为0.005,在AVA上为0.1。
help='confidence threshold. We suggest 0.005 for UCF24 and 0.1 for AVA.')
parser.add_argument('-nt', '--nms_thresh', default=0.5, type=float,#非极大值抑制(NMS)阈值,建议在UCF24和AVA上为0.5。
help='NMS threshold. We suggest 0.5 for UCF24 and AVA.')
parser.add_argument('--topk', default=40, type=int,#预测的候选框数量。
help='topk prediction candidates.')
parser.add_argument('-K', '--len_clip', default=16, type=int,#视频剪辑长度。
help='video clip length.')
parser.add_argument('--freeze_backbone_2d', action="store_true", default=False,#是否冻结2D主干网络。
help="freeze 2D backbone.")
parser.add_argument('--freeze_backbone_3d', action="store_true", default=False,# 是否冻结3D主干网络。
help="freeze 3d backbone.")
parser.add_argument('-m', '--memory', action="store_true", default=False,# 是否使用记忆传播。
help="memory propagate.")
# Dataset
parser.add_argument('-d', '--dataset', default='ucf24',# 数据集名称,可以是'ucf24'或'ava_v2.2'。
help='ucf24, ava_v2.2')
parser.add_argument('--root', default='/mnt/share/ssd2/dataset/STAD/',#数据集根目录。
help='data root')
parser.add_argument('--num_workers', default=4, type=int, #数据加载器使用的工作线程数量。
help='Number of workers used in dataloading')
# Matcher
parser.add_argument('--center_sampling_radius', default=2.5, type=float, #中心采样半径。
help='conf loss weight factor.')
parser.add_argument('--topk_candicate', default=10, type=int, #top-k候选数量。
help='cls loss weight factor.')
# Loss
parser.add_argument('--loss_conf_weight', default=1, type=float, #置信度损失权重。
help='conf loss weight factor.')
parser.add_argument('--loss_cls_weight', default=1, type=float, #分类损失权重。
help='cls loss weight factor.')
parser.add_argument('--loss_reg_weight', default=5, type=float, #回归损失权重。
help='reg loss weight factor.')
parser.add_argument('-fl', '--focal_loss', action="store_true", default=False,#是否使用Focal Loss进行分类。
help="use focal loss for classification.")
# DDP train
parser.add_argument('-dist', '--distributed', action='store_true', default=False,#是否使用分布式训练。
help='distributed training')
parser.add_argument('--dist_url', default='env://', #设置分布式训练的URL。
help='url used to set up distributed training')
parser.add_argument('--world_size', default=1, type=int,# 分布式进程的数量。
help='number of distributed processes')
parser.add_argument('--sybn', action='store_true', default=False, #是否使用同步批归一化(SyncBatchNorm)。
help='use sybn.')
欢迎做时空动作检测的人与我交流