[net]
batch=64 //batch:每次迭代要进行训练的图片数量
subdivisions=8 //subdivisions:源码中的图片数量int imgs = net.batch * net.subdivisions * ngpus,按subdivisions大小分批进行训练
width=416
height=416 // width:输入图片宽度, height:输入图片高度,channels :输入图片通道数
channels=3
momentum=0.9 //动量
decay=0.0005 //权重衰减正则项,防止过拟合
angle=0 //angle:图片角度变化,单位为度,假如angle=5,就是生成新图片的时候随机旋转-5~5度
saturation = 1.5 //saturation & exposure: 饱和度与曝光变化大小,tiny-yolo-voc.cfg中1到1.5倍,以及1/1.5~1倍
exposure = 1.5
hue=.1 //hue:色调变化范围,tiny-yolo-voc.cfg中-0.1~0.1
learning_rate=0.001
max_batches = 40100 //max_batches:最大迭代次数 训练达到max_batches后停止学习
policy=steps //调整学习率的policy,有如下policy:CONSTANT, STEP, EXP, POLY, STEPS, SIG, RANDOM
steps=-1,100,20000,30000 //
scales=.1,10,.1,.1 //学习率变化的比例,累计相乘
对于每次迭代训练,YOLOv2会基于角度(angle),饱和度(saturation),曝光(exposure),色调(hue)产生新的训练图片
[convolutional]
batch_normalize=1 //是否做BN
filters=32 // 输出多少个特征图
size=3 //卷积核的尺寸
stride=1 //做卷积运算的步长
pad=1 // 如果pad为0,padding由 padding参数指定。如果pad为1,padding大小为size/2
activation=leaky // 激活函数:logistic,loggy,relu,elu,relie,plse,hardtan,lhtan,linear,ramp,leaky,tanh,stair
[maxpool]
size=2 // 池化层尺寸
stride=2 // 池化步进
[route] // the route layer is to bring finer grained features in from earlier in the network
layers=-9
[region]
anchors = 1.08,1.19, 3.42,4.41, 6.63,11.38, 9.42,5.11, 16.62,10.52
bias_match=1 //bias_match:如果为1,计算best iou时,预测宽高强制与anchors一致
classes=20
coords=4
num=5
softmax=1 //softmax:如果为1,使用softmax
jitter=.2
rescore=1 //rescore:决定使用哪种方式计算IOU的误差,为1时,使用当前best iou计算,为0时,使用1计算
object_scale=5
noobject_scale=1
class_scale=1
coord_scale=1 //YOLOv1论文中cost function的权重,哪一个更大,每一次更新权重的时候,对应方面的权重更新相对比重更大
absolute=1
thresh = .6 //thresh:决定是否需要计算IOU误差的参数,大于thresh,IOU误差不会夹在cost function中
random=1 //random:如果为1每次迭代图片大小随机从320到608,步长为32,如果为0,每次训练大小与输入大小一致
虽然region(YOLOv1的detection)在最后一层,但是很多参数都是一开始就载入使用的,尤其是对于图片数据处理的参数
classes:类别数量
coords:BoundingBox的tx,ty,tw,th,tx与ty是相对于左上角的gird,同时是当前grid的比例,tw与th是宽度与高度取对数
num:每个grid预测的BoundingBox个数
jitter:利用数据抖动产生更多数据,YOLOv2中使用的是crop,filp,以及net层的angle,flip是随机的,crop就是jitter的参数,tiny-yolo-voc.cfg中jitter=.2,就是在0~0.2中进行crop
anchors:预测框的初始宽高,第一个是w,第二个是h,总数量是num*2,YOLOv2作者说anchors是使用K-MEANS获得,其实就是计算出哪种类型的框比较多,可以增加收敛速度,如果不设置anchors,默认是0.5,还有就是anchors读入参数中名字是biases
这里有一个计算样本anchors的python脚本,anchors生成脚本