PaddleClas配置说明

简介

PaddleClas 配置文件(ppcls/configs/*.yaml),paddleclas可以通过配置的yaml文件来进行训练

此处以PaddleClas 2.3为例。

分类模型

此处以 ResNet50_vdImageNet-1k 上的训练配置为例,详解各个参数的意义。配置路径 (../../../ppcls/configs/ImageNet/ResNet/ResNet50_vd.yaml)。

Global(全局配置)

参数名字具体含义默认值可选值
checkpoints断点模型路径,用于恢复训练nullstr
pretrained_model预训练模型路径,也可以填写存放预训练模型的 http 地址。nullstr
output_dir保存模型路径"./output/"str
save_interval每隔多少个 epoch 保存模型1int
eval_during_train是否在训练时进行评估Truebool
eval_interval每隔多少个 epoch 进行模型评估1int
epochs训练总 epoch 数 int
print_batch_step每隔多少个 mini-batch 打印输出10int
use_visualdl是否是用 visualdl 可视化训练过程Falsebool
image_shape图片大小[3, 224, 224]list, shape: (3,)
save_inference_dirinference 模型的保存路径"./inference"str
eval_modeeval 的模式"classification""retrieval"
to_static是否改为静态图模式FalseTrue
ues_dali是否使用 dali 库进行图像预处理FalseTrue

Arch(结构)

参数名字具体含义默认值可选值
name模型结构名字ResNet50PaddleClas 提供的模型结构
class_num分类数1000int
pretrained预训练模型Falsebool, str

:此处的 pretrained 可以设置为 True 或者 False,也可以设置权重的路径。另外当 Global.pretrained_model 也设置相应路径时,此处的 pretrained 失效。

Loss(损失函数)

参数名字具体含义默认值可选值
CELoss交叉熵损失函数————
CELoss.weightCELoss 在整个 Loss 中的权重1.0float
CELoss.epsilonCELoss 中 label_smooth 的 epsilon 值0.1float, 0-1 之间

Optimizer (优化器)

参数名字具体含义默认值可选值
name优化器方法名"Momentum""RmsProp"等其他优化器
momentummomentum 值0.9float
lr.name学习率下降方式"Cosine""Linear"、"Piecewise"等其他下降方式
lr.learning_rate学习率初始值0.1float
lr.warmup_epochwarmup 轮数0int,如 5
regularizer.name正则化方法名"L2"["L1", "L2"]
regularizer.coeff正则化系数0.00007float

DataLoader (数据读取模块)

dataset

参数名字具体含义默认值可选值
name读取数据的类的名字ImageNetDatasetVeriWild 等其他读取数据类的名字
image_root数据集存放的路径./dataset/ILSVRC2012/str
cls_label_path数据集标签 list./dataset/ILSVRC2012/train_list.txtstr
transform_ops单张图片的数据预处理————
batch_transform_opsbatch 图片的数据预处理————

transform_ops 中参数的意义:

功能名字参数名字具体含义
DecodeImageto_rgb数据转 RGB
channel_first按 CHW 排列的图片数据
RandCropImagesize随机裁剪
RandFlipImage 随机翻转
NormalizeImagescale归一化 scale 值
mean归一化均值
std归一化方差
order归一化顺序
CropImagesize裁剪大小
ResizeImageresize_short按短边调整大小

batch_transform_ops 中参数的含义:

功能名字参数名字具体含义
MixupOperatoralphaMixup 参数值,该值越大增强越强

sampler

参数名字具体含义默认值可选值
namesampler 类型DistributedBatchSamplerDistributedRandomIdentitySampler 等其他 Sampler
batch_size批大小64int
drop_last是否丢掉最后不够 batch-size 的数据Falsebool
shuffle数据是否做 shuffleTruebool

loader

参数名字具体含义默认值可选值
num_workers数据读取线程数4int
use_shared_memory是否使用共享内存Truebool

Metric (评估指标)

参数名字具体含义默认值可选值
TopkAccTopkAcc[1, 5]list, int

Infer (预测)

参数名字具体含义默认值可选值
infer_imgs被 infer 的图像的地址docs/images/whl/demo.jpgstr
batch_size批大小10int
PostProcess.name后处理名字Topkstr
PostProcess.topktopk 的值5int
PostProcess.class_id_map_fileclass id 和名字的映射文件ppcls/utils/imagenet1k_label_list.txtstr

:Infer 模块的 transforms 的解释参考数据读取模块中的 dataset 中 transform_ops 的解释。

蒸馏模型

注**:此处以 MobileNetV3_large_x1_0ImageNet-1k 上蒸馏 MobileNetV3_small_x1_0 的训练配置为例,详解各个参数的意义。配置路径(../../../ppcls/configs/ImageNet/Distillation/mv3_large_x1_0_distill_mv3_small_x1_0.yaml)。这里只介绍与分类模型有区别的参数。

Arch (结构)

参数名字具体含义默认值可选值
name模型结构名字DistillationModel——
class_num分类数1000int
freeze_params_list冻结参数列表[True, False]list
models模型列表[Teacher, Student]list
Teacher.name教师模型的名字MobileNetV3_large_x1_0PaddleClas 中的模型
Teacher.pretrained教师模型预训练权重True布尔值或者预训练权重路径
Teacher.use_ssld教师模型预训练权重是否是 ssld 权重True布尔值
infer_model_name被 infer 模型的类型StudentTeacher

Loss (损失函数)

参数名字具体含义默认值可选值
DistillationCELoss蒸馏的交叉熵损失函数————
DistillationCELoss.weightLoss 权重1.0float
DistillationCELoss.model_name_pairs["Student", "Teacher"]————
DistillationGTCELoss.weight蒸馏的模型与真实 Label 的交叉熵损失函数————
DistillationGTCELos.weightLoss 权重1.0float
DistillationCELoss.model_names与真实 label 作交叉熵的模型名字["Student"]——

Metric (评估指标)

参数名字具体含义默认值可选值
DistillationTopkAccDistillationTopkAcc包含 model_key 和 topk 两个参数——
DistillationTopkAcc.model_key被评估的模型"Student""Teacher"
DistillationTopkAcc.topkTopk 的值[1, 5]list, int

DistillationTopkAcc 与普通 TopkAcc 含义相同,只是只用在蒸馏任务中。

识别模型

:此处以 ResNet50LogoDet-3k 上的训练配置为例,详解各个参数的意义。配置路径(../../../ppcls/configs/Logo/ResNet50_ReID.yaml)。这里只介绍与分类模型有区别的参数。

Arch (结构)

参数名字具体含义默认值可选值
name模型结构"RecModel"["RecModel"]
infer_output_keyinference 时的输出值“feature”["feature", "logits"]
infer_add_softmaxinfercne 是否添加 softmaxFalse[True, False]
Backbone.nameBackbone 的名字ResNet50_last_stage_stride1PaddleClas 提供的其他 backbone
Backbone.pretrainedBackbone 预训练模型True布尔值或者预训练模型路径
BackboneStopLayer.nameBackbone 中的输出层名字TrueBackbone 中的特征输出层的 full_name
Neck.name网络 Neck 部分名字VehicleNeck需传入字典结构,Neck 网络层的具体输入参数
Neck.in_channels输入 Neck 部分的维度大小2048与 BackboneStopLayer.name 层的大小相同
Neck.out_channels输出 Neck 部分的维度大小,即特征维度大小512int
Head.name网络 Head 部分名字CircleMarginArcmargin 等
Head.embedding_size特征维度大小512与 Neck.out_channels 保持一致
Head.class_num类别数3000int
Head.marginCircleMargin 中的 margin 值0.35float
Head.scaleCircleMargin 中的 scale 值64int

Metric (评估指标)

参数名字具体含义默认值可选值
Recallk召回率[1, 5]list, int
mAP平均检索精度NoneNone

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×