PaddleDetection训练文件的参数配置(仔细的读)

依据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 9000(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]
 

你可能感兴趣的:(深度学习,paddle,paddledetection)