NNUNet 分割管道参数解析详解
这段代码使用 argparse 库解析命令行参数,方便用户通过命令行设置模型训练和推理的各种参数。argparse 是 Python 标准库中的一个模块,用于解析命令行参数并生成帮助信息。
首先,创建了一个 ArgumentParser 对象 parser,并设置了描述参数的字符串 'description'。
parser = argparse.ArgumentParser(description='NNUNet segmentation pipeline')
然后,使用 add_argument() 方法添加了一系列参数。每个 add_argument() 方法的参数解释如下:
'--checkpoint':参数名称,用于在命令行中指定一个检查点文件的路径。'default=None':参数的默认值为 None。'help':参数的帮助信息。
parser.add_argument('--checkpoint', default=None, help='start training from saved checkpoint')
'--logdir':参数名称,用于在命令行中指定一个保存 tensorboard 日志的目录。'default='test'':参数的默认值为 'test'。'type=str':参数的类型为字符串。'help':参数的帮助信息。
parser.add_argument('--logdir', default='test', type=str, help='directory to save the tensorboard logs')
'--pretrained_dir':参数名称,用于在命令行中指定一个预训练模型的检查点目录。'default='./pretrained_models/'':参数的默认值为 './pretrained_models/'。'type=str':参数的类型为字符串。'help':参数的帮助信息。
parser.add_argument('--pretrained_dir', default='./pretrained_models/', type=str, help='pretrained checkpoint directory')
'--data_dir':参数名称,用于在命令行中指定一个数据集的目录。'default='D:/URE/MONAI-dev/dataset/amos22'':参数的默认值为 'D:/URE/MONAI-dev/dataset/amos22'。'type=str':参数的类型为字符串。'help':参数的帮助信息。
parser.add_argument('--data_dir', default='D:/URE/MONAI-dev/dataset/amos22', type=str, help='dataset directory')
'--json_list':参数名称,用于在命令行中指定一个数据集的 JSON 文件。'default='dataset.json'':参数的默认值为 'dataset.json'。'type=str':参数的类型为字符串。'help':参数的帮助信息。
parser.add_argument('--json_list', default='dataset.json', type=str, help='dataset json file')
'--pretrained_model_name':参数名称,用于在命令行中指定一个预训练模型的名称。'default=None':参数的默认值为 None。'type=str':参数的类型为字符串。'help':参数的帮助信息。
parser.add_argument('--pretrained_model_name', default=None, type=str, help='pretrained model name')
'--save_checkpoint':参数名称,用于在命令行中指定是否保存训练过程中的检查点。'default=True':参数的默认值为 True。'help':参数的帮助信息。
parser.add_argument('--save_checkpoint', default=True, help='save checkpoint during training')
'--max_epochs':参数名称,用于在命令行中指定训练的最大轮数。'default=3000':参数的默认值为 3000。'type=int':参数的类型为整数。'help':参数的帮助信息。
parser.add_argument('--max_epochs', default=3000, type=int, help='max number of training epochs')
'--batch_size':参数名称,用于在命令行中指定批次大小。'default=4':参数的默认值为 4。'type=int':参数的类型为整数。'help':参数的帮助信息。
parser.add_argument('--batch_size', default=4, type=int, help='number of batch size')
'--sw_batch_size':参数名称,用于在命令行中指定滑动窗口的批次大小。'default=4':参数的默认值为 4。'type=int':参数的类型为整数。'help':参数的帮助信息。
parser.add_argument('--sw_batch_size', default=4, type=int, help='number of sliding window batch size')
'--optim_lr':参数名称,用于在命令行中指定优化算法的学习率。'default=1e-4':参数的默认值为 1e-4。'type=float':参数的类型为浮点数。'help':参数的帮助信息。
parser.add_argument('--optim_lr', default=1e-4, type=float, help='optimization learning rate')
'--optim_name':参数名称,用于在命令行中指定优化算法的名称。'default='adamw'':参数的默认值为 'adamw'。'type=str':参数的类型为字符串。'help':参数的帮助信息。
parser.add_argument('--optim_name', default='adamw', type=str, help='optimization algorithm')
'--reg_weight':参数名称,用于在命令行中指定正则化权重。'default=1e-5':参数的默认值为 1e-5。'type=float':参数的类型为浮点数。'help':参数的帮助信息。
parser.add_argument('--reg_weight', default=1e-5, type=float, help='regularization weight')
'--momentum':参数名称,用于在命令行中指定动量。'default=0.99':参数的默认值为 0.99。'type=float':参数的类型为浮点数。'help':参数的帮助信息。
parser.add_argument('--momentum', default=0.99, type=float, help='momentum')
'--noamp':参数名称,用于在命令行中指定是否使用 amp 进行训练。'action='store_true'':参数的类型为布尔值,如果在命令行中指定了该参数,则为 True,否则为 False。'help':参数的帮助信息。
parser.add_argument('--noamp', action='store_true', help='do NOT use amp for training')
'--val_every':参数名称,用于在命令行中指定验证的频率。'default=100':参数的默认值为 100。'type=int':参数的类型为整数。'help':参数的帮助信息。
parser.add_argument('--val_every', default=100, type=int, help='validation frequency')
'--distributed':参数名称,用于在命令行中指定是否进行分布式训练。'action='store_true'':参数的类型为布尔值,如果在命令行中指定了该参数,则为 True,否则为 False。'help':参数的帮助信息。
parser.add_argument('--distributed', action='store_true', help='start distributed training')
'--world_size':参数名称,用于在命令行中指定分布式训练的节点数。'default=1':参数的默认值为 1。'type=int':参数的类型为整数。'help':参数的帮助信息。
parser.add_argument('--world_size', default=1, type=int, help='number of nodes for distributed training')
'--rank':参数名称,用于在命令行中指定分布式训练的节点排名。'default=0':参数的默认值为 0。'type=int':参数的类型为整数。'help':参数的帮助信息。
parser.add_argument('--rank', default=0, type=int, help='node rank for distributed training')
'--dist-url':参数名称,用于在命令行中指定分布式训练的 URL。'default='tcp://127.0.0.1:23456'':参数的默认值为 'tcp://127.0.0.1:23456'。'type=str':参数的类型为字符串。'help':参数的帮助信息。
parser.add_argument('--dist-url', default='tcp://127.0.0.1:23456', type=str, help='distributed url')
'--dist-backend':参数名称,用于在命令行中指定分布式训练的后端。'default='nccl'':参数的默认值为 'nccl'。'type=str':参数的类型为字符串。'help':参数的帮助信息。
parser.add_argument('--dist-backend', default='nccl', type=str, help='distributed backend')
'--workers':参数名称,用于在命令行中指定工作线程的数量。'default=8':参数的默认值为 8。'type=int':参数的类型为整数。'help':参数的帮助信息。
parser.add_argument('--workers', default=8, type=int, help='number of workers')
'--model_name':参数名称,用于在命令行中指定模型的名称。'default='BasicUNet'':参数的默认值为 'BasicUNet'。'type=str':参数的类型为字符串。'help':参数的帮助信息。
parser.add_argument('--model_name', default='BasicUNet', type=str, help='model name')
'--spatial_dims':参数名称,用于在命令行中指定空间维度。'default=3':参数的默认值为 3。'type=int':参数的类型为整数。'help':参数的帮助信息。
parser.add_argument('--spatial_dims', default=3, type=int, help='spatial_dims')
'--features':参数名称,用于在命令行中指定特征数量。'default=(32, 32, 64, 128, 256, 32)':参数的默认值为 (32, 32, 64, 128, 256, 32)。'type=int':参数的类型为整数。'help':参数的帮助信息。
parser.add_argument('--features', default=(32, 32, 64, 128, 256, 32), type=int, help='features')
'--in_channels':参数名称,用于在命令行中指定输入通道数。'default=1':参数的默认值为 1。'type=int':参数的类型为整数。'help':参数的帮助信息。
parser.add_argument('--in_channels', default=1, type=int, help='number of input channels')
'--out_channels':参数名称,用于在命令行中指定输出通道数。'default=16':参数的默认值为 16。'type=int':参数的类型为整数。'help':参数的帮助信息。
parser.add_argument('--out_channels', default=16, type=int, help='number of output channels')
'--res_block':参数名称,用于在命令行中指定是否使用残差块。'action='store_true'':参数的类型为布尔值,如果在命令行中指定了该参数,则为 True,否则为 False。'help':参数的帮助信息。
parser.add_argument('--res_block', action='store_true', help='use residual blocks')
'--conv_block':参数名称,用于在命令行中指定是否使用卷积块。'action='store_true'':参数的类型为布尔值,如果在命令行中指定了该参数,则为 True,否则为 False。'help':参数的帮助信息。
parser.add_argument('--conv_block', action='store_true', help='use conv blocks')
'--use_normal_dataset':参数名称,用于在命令行中指定是否使用 monai Dataset 类。'action='store_true'':参数的类型为布尔值,如果在命令行中指定了该参数,则为 True,否则为 False。'help':参数的帮助信息。
parser.add_argument('--use_normal_dataset', action='store_true', help='use monai Dataset class')
'--a_min':参数名称,用于在命令行中指定ScaleIntensityRanged的a_min值。'default=-175.0':参数的默认值为 -175.0。'type=float':参数的类型为浮点数。'help':参数的帮助信息。
parser.add_argument('--a_min', default=-175.0, type=float, help='a_min in ScaleIntensityRanged')
'--a_max':参数名称,用于在命令行中指定ScaleIntensityRanged的a_max值。'default=250.0':参数的默认值为 250.0。'type=float':参数的类型为浮点数。'help':参数的帮助信息。
parser.add_argument('--a_max', default=250.0, type=float, help='a_max in ScaleIntensityRanged')
'--b_min':参数名称,用于在命令行中指定ScaleIntensityRanged的b_min值。'default=0.0':参数的默认值为 0.0。'type=float':参数的类型为浮点数。'help':参数的帮助信息。
parser.add_argument('--b_min', default=0.0, type=float, help='b_min in ScaleIntensityRanged')
'--b_max':参数名称,用于在命令行中指定ScaleIntensityRanged的b_max值。'default=1.0':参数的默认值为 1.0。'type=float':参数的类型为浮点数。'help':参数的帮助信息。
parser.add_argument('--b_max', default=1.0, type=float, help='b_max in ScaleIntensityRanged')
'--space_x':参数名称,用于在命令行中指定 x 方向的间距。'default=1.5':参数的默认值为 1.5。'type=float':参数的类型为浮点数。'help':参数的帮助信息。
parser.add_argument('--space_x', default=1.5, type=float, help='spacing in x direction')
'--space_y':参数名称,用于在命令行中指定 y 方向的间距。'default=1.5':参数的默认值为 1.5。'type=float':参数的类型为浮点数。'help':参数的帮助信息。
parser.add_argument('--space_y', default=1.5, type=float, help='spacing in y direction')
'--space_z':参数名称,用于在命令行中指定 z 方向的间距。'default=2.0':参数的默认值为 2.0。'type=float':参数的类型为浮点数。'help':参数的帮助信息。
parser.add_argument('--space_z', default=2.0, type=float, help='spacing in z direction')
'--roi_x':参数名称,用于在命令行中指定 x 方向的 ROI 大小。'default=96':参数的默认值为 96。'type=int':参数的类型为整数。'help':参数的帮助信息。
parser.add_argument('--roi_x', default=96, type=int, help='roi size in x direction')
'--roi_y':参数名称,用于在命令行中指定 y 方向的 ROI 大小。'default=96':参数的默认值为 96。'type=int':参数的类型为整数。'help':参数的帮助信息。
parser.add_argument('--roi_y', default=96, type=int, help='roi size in y direction')
'--roi_z':参数名称,用于在命令行中指定 z 方向的 ROI 大小。'default=96':参数的默认值为 96。'type=int':参数的类型为整数。'help':参数的帮助信息。
parser.add_argument('--roi_z', default=96, type=int, help='roi size in z direction')
'--dropout':参数名称,用于在命令行中指定 dropout 比例。'default=0.0':参数的默认值为 0.0。'type=float':参数的类型为浮点数。'help':参数的帮助信息。
parser.add_argument('--dropout', default=0.0, type=float, help='dropout')
'--RandFlipd_prob':参数名称,用于在命令行中指定RandFlipd数据增强方法的概率。'default=0.2':参数的默认值为 0.2。'type=float':参数的类型为浮点数。'help':参数的帮助信息。
parser.add_argument('--RandFlipd_prob', default=0.2, type=float, help='RandFlipd aug probability')
'--RandRotate90d_prob':参数名称,用于在命令行中指定RandRotate90d数据增强方法的概率。'default=0.2':参数的默认值为 0.2。'type=float':参数的类型为浮点数。'help':参数的帮助信息。
parser.add_argument('--RandRotate90d_prob', default=0.2, type=float, help='RandRotate90d aug probability')
'--RandScaleIntensityd_prob':参数名称,用于在命令行中指定RandScaleIntensityd数据增强方法的概率。'default=0.1':参数的默认值为 0.1。'type=float':参数的类型为浮点数。'help':参数的帮助信息。
parser.add_argument('--RandScaleIntensityd_prob', default=0.1, type=float, help='RandScaleIntensityd aug probability')
'--RandShiftIntensityd_prob':参数名称,用于在命令行中指定RandShiftIntensityd数据增强方法的概率。'default=0.1':参数的默认值为 0.1。'type=float':参数的类型为浮点数。'help':参数的帮助信息。
parser.add_argument('--RandShiftIntensityd_prob', default=0.1, type=float, help='RandShiftIntensityd aug probability')
'--infer_overlap':参数名称,用于在命令行中指定滑动窗口推理时的重叠比例。'default=0.5':参数的默认值为 0.5。'type=float':参数的类型为浮点数。'help':参数的帮助信息。
parser.add_argument('--infer_overlap', default=0.5, type=float, help='sliding window inference overlap')
'--lrschedule':参数名称,用于在命令行中指定学习率调度策略。'default='warmup_cosine'':参数的默认值为 'warmup_cosine'。'type=str':参数的类型为字符串。'help':参数的帮助信息。
parser.add_argument('--lrschedule', default='warmup_cosine', type=str, help='type of learning rate scheduler')
'--warmup_epochs':参数名称,用于在命令行中指定学习率预热阶段的轮数。'default=50':参数的默认值为 50。'type=int':参数的类型为整数。'help':参数的帮助信息。
parser.add_argument('--warmup_epochs', default=50, type=int, help='number of warmup epochs')
'--resume_ckpt':参数名称,用于在命令行中指定是否从预训练的检查点文件恢复训练。'action='store_true'':参数的类型为布尔值,如果在命令行中指定了该参数,则为 True,否则为 False。'help':参数的帮助信息。
parser.add_argument('--resume_ckpt', action='store_true', help='resume training from pretrained checkpoint')
'--resume_jit':参数名称,用于在命令行中指定是否从预训练的 torchscript 检查点文件恢复训练。'action='store_true'':参数的类型为布尔值,如果在命令行中指定了该参数,则为 True,否则为 False。'help':参数的帮助信息。
parser.add_argument('--resume_jit', action='store_true', help='resume training from pretrained torchscript checkpoint')
'--smooth_dr':参数名称,用于在命令行中指定 dice 系数分母中添加的常数,以避免出现 NaN 值。'default=1e-6':参数的默认值为 1e-6。'type=float':参数的类型为浮点数。'help':参数的帮助信息。
parser.add_argument('--smooth_dr', default=1e-6, type=float, help='constant added to dice denominator to avoid nan')
'--smooth_nr':参数名称,用于在命令行中指定 dice 系数分子中添加的常数,以避免出现零值。'default=0.0':参数的默认值为 0.0。'type=float':参数的类型为浮点数。'help':参数的帮助信息。
parser.add_argument('--smooth_nr', default=0.0, type=float, help='constant added to dice numerator to avoid zero')
通过这些参数,用户可以灵活地控制模型训练和推理的过程。例如,用户可以通过 --checkpoint 参数指定从某个已保存的检查点文件开始训练,或者通过 --data_dir 参数指定训练数据集的目录。
最后,可以使用 parser.parse_args() 方法解析命令行参数,并将参数的值存储在一个命名空间对象中。例如:
args = parser.parse_args()
然后就可以使用 nargs 对象访问每个参数的值,例如:
checkpoint_path = nargs.checkpoint
data_dir = nargs.data_dir
这样就可以使用解析后的命令行参数进行模型训练和推理了。
总结
这段代码使用 argparse 库解析命令行参数,并设置了一系列参数,方便用户通过命令行控制模型训练和推理的各个方面。
注意
代码中的一些参数的默认值可能需要根据具体情况进行调整,例如数据集的目录、模型的名称等。此外,还可以根据需要添加其他参数,以满足不同的应用场景。
原文地址: https://www.cveoy.top/t/topic/fzQS 著作权归作者所有。请勿转载和采集!