赞
踩
YOLOv3为例
snapshot_iter: 2000 #建议设置为最大训练batch数除以50,即总共保存50个模型
use_fine_grained_loss: false # 细粒度损失,在目标类别非常相近(例如任务为分辨狗的种类)的时候设为True
Max_Iters x Batch_Size = 训练集
Max_Epoch ÷ Batch_Size = Max_Iters
使用单卡训练,将LearningRate.base_lr减小4倍至0.00025
修改训练轮数与学习率等参数:
batch_size
大小计算epoch数,然后将epoch数换算得到训练总轮数max_iters
。milestones
(学习率变化界限)也是同理。原配置文件中总batch_size
=2*8=16(8卡训练),训练集数量约为12万张,max_iters
=90000,所以epoch数=16x90000/120000=12。在AI识虫数据集中,训练集数量约为1700,在单卡GPU上训练,max_iters
=12x1700/2=10200。同理计算milestones为: [6800, 9000]。16(batch_size) x 90000(max_iters) / 120000(训练集) = 12(epoch)
12(epoch) x 1700(训练集) / 2(batch_size) = 10200(max_iters)
milestones中的参数一般是max_iters分别除以1.5和1.125得到
在使用ImageNet的预训练模型时,训练时使用1张卡,单卡batch_size=1, base_lr=0.00125,base_lr随着(batch_size * GPU卡数)
等比例变化。
1x表示训练12个epoch,1个epoch是将所有训练数据训练一轮。由于YOLO系列算法收敛比较慢,在COCO数据集上YOLO系列算法换算后约为270 epoch,PP-YOLO约380 epoch。
默认学习率是适配多GPU训练(8x GPU),若使用单GPU训练,须对应调整学习率(例如,除以8)。 计算规则表如下所示,它们是等价的,表中变化节点即为piecewise decay
里的boundaries
:
GPU数 | 学习率 | 最大轮数 | 变化节点 |
---|---|---|---|
2 | 0.0025 | 720000 | [480000, 640000] |
4 | 0.005 | 360000 | [240000, 320000] |
8 | 0.01 | 180000 | [120000, 160000] |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。