yolov5源码解读--训练策略
- 超参数解读
- 命令行参数
- train
- 模型迭代
- 测试
超参数解读
hyp.scratch.yaml
lr0: 0.0032 初始学习率
lrf: 0.12 使用余弦函数动态降低学习率(lr0*lrf)
momentum: 0.843 动量
weight_decay: 0.00036 权重衰减项
warmup_epochs: 2.0 预热(较小的学习率那时候)
warmup_momentum: 0.5 预热动量
warmup_bias_lr: 0.05 预热学习率
不同的损失函数开始了
box: 0.0296
cls: 0.243
cls_pw: 0.631
obj: 0.301
obj_pw: 0.911
iou_t: 0.2
anchor_t: 2.91
# anchors: 3.63
fl_gamma: 0.0
hsv_h: 0.0138
hsv_s: 0.664
hsv_v: 0.464
degrees: 0.373
translate: 0.245
scale: 0.898
shear: 0.602
perspective: 0.0
flipud: 0.00856
fliplr: 0.5
mosaic: 1.0
mixup: 0.243
命令行参数
我这里是训练自己的口罩数据集
–resume参数:接着上一次的权重继续训练。。。。。
train
控制台打印log + 保存训练数据,参数等
训练的超参数保存文件为:hyp.yaml
opt.yaml文件:
标签分布:
tensorboard展示文件
是否使用预训练模型:
model = Model(opt.cfg, ch=3, nc=nc).to(device)
加载完成了模型
是否冻结层训练
和反向传播更新参数有关
更新权重、偏置
衰减率
图像大小要是32的倍数。。。
滑动平均: EMA
模型迭代
创建训练集和测试集:
模型超参数相关:
模型训练:
其中(pytorch1.6新功能 fp32与fp16混合 提速比较多)
训练: