一.YOLOV1
1.1论文思想
通常每个网格要预测2个bounding box,每个bounding box要预测5个值(x,y,w,h)和一个confidence值,如下图中第二个黄色框所指,confidence值是该bounding box和GT box的IOU值。
所以每个网格预测5X2+class个数。 其中x,y是相对于网格的值,在(0,1)之间,w,h是相对于整张图片的相对值,也在(0,1)之间。
最后测试时的预测分数就为class预测分数Xconfidence值。
1.2网络结构
s-2指的是步距为2,没标就是步距为1。
1.3损失函数
这里bounding box损失用开根号,是因为当误差相同时,小目标的IOU值损失大,大目标的IOU值损失小,为了达到这一效果,开根号处理。confidence损失,预测框里有目标,C值为1,预测框里无目标,C值为0。
二.YOLOV2
2.1Batch Normalization
在卷积层后加入BN层,可以替换掉dropout的操作并且达到同样避免过拟合的效果,同时mAP有2%的提升。
2.2High Resolution Classifier
选择则更大分辨率448X448的输入训练backbone,结果mAP可增长4%。
2.3Convolutional with anchor boxes
使用anchor进行边界框预测,mAP下降极少,但是recall上升很多。
2.4Dimension Clusters
对训练集中的目标边界框使用K-meas聚类方法获取priors,等同于anchor。
2.5 Direct location prediction
因为之前的anchor是预测偏移量,并没有条件限制,所以可能导致某个网格预测的偏移值经过公式处理后跑到另外一个网格上,所以会导致网络初始训练时不稳定。因此本文使用sigmoid函数(0,1)将预测偏移值限制在该网格中,这样更改后,网络训练更稳定了,mAP也提升了。
同时也对confidence值进行sigmoid限制。
2.6Fine-Grained Features
最终在13X13的特征图上进行预测,对大目标来说是足够的,但是对于小目标来说细粒度不够,因此这里将更底层的26X26的特征图与13X13预测特征图进行拼接。首先将26X26用1X1的卷积变换通道,然后再通过Pass Through层进行长宽缩减一倍,通道增加四倍,最后和13X13进行通道上的拼接。
2.7Multi-Scale Training
为了增加网络的鲁棒性,采用多尺度训练。从上图可看出该网络的缩放因子为 416/13=32,每十个epoch,随机更改网络大小(320,608)。
2.9YOLOV2整体框架
将Darknet19最后三个卷积层去掉,额外增加卷积层如下所示,5个bounding box,故总共是5X(5+20)=125。
三.YOLOV3
3.1网络结构
上图中特征图1大小为13X13用来预测大物体,特征图2大小为26X26用来预测中等物体,特征图3大小为52X52用来预测小物体。
3.2目标边界框的预测
同YOLOV2一样。
3.3正负样本分配策略
将GT和anchor左上角对齐,计算IOU,大于阈值则为正样本。下图中AT2为正样本,则因为GT中心点落在(3,3)网格中,所以该网格中的AT2为正样本。
3.4损失计算
负样本只有置信度损失,正样本有以下三种损失。
蓝色代表anchor,绿色代表GT,黄色代表anchor经过预测偏移量调整后的预测框。
当预测目标边界框i中存在第j类目标,Oi为1,否则为0。
四.YOLOV3 SPP
4.1网络结构
与YOLOV3相比只是将Convolutional Set拆开添加了SPP模块。
SPP前卷积大小为16X16X512,故经过SPP后的通道增加四倍,变为1616X2048。
4.2IOU Loss
4.3GIOU Loss
Ac指的时蓝色框的面积,u指的是并集的面积。
(1)当GT和预测框重合100%时,Ac=R,u=R,IOU=1,则此时GIOU=1.
(2)当GT与预测框相差无穷远时,u为常熟,IOU=0,GIOU=0-1=-1.
下面表格处指的是当分别用MSE,IOU,GIOU做损失时,mAP的值逐渐提升。
缺点:当预测框和GT下面这种情况时,GIOU退化为IOU,因为此时Ac=U。
4.3DIOU
左图中的黑色是anchor,绿色是GT,蓝色是预测边界框,上面三个是使用GIOU训练,在第400轮时还不能很好的拟合GT,左下面三张图使用的是DIOU,当第120轮时就已经能很好的拟合GT了。
右面三张图中可以看出只有DIOU能很好反映GT和预测框的位置信息。
DIOU计算公式就是IOU与两个框中心点距离的平方与斜对角线距离平方之比的差值。
4.4CIOU
4.5Focal loss
正样本p值小增大损失权重,负样本p值小减小损失权重。
五.YOLOV4
5.1网络结构
5.1.1Backbone
以下网络除了第一个CSP通道没有减半,剩下的都是通道减半。
根据卷积推到公式,以下三种变换后,卷积的长和宽以及通道均无变化。例如输入为7,则(7+2X2-5)/1+1=7。
5.1.2Neck
从高层向底层融合的FPN+从底层向高层融合的FPN即为PAN,右侧指的是相加而非YOLOV4的通道相加。
5.1.3Head
5.2优化策略
5.2.1Eliminate grid sensitivity
以上用sigmoid函数存在不足,当GT的中心点落在(Cx=0,Cy=0)时,激活函数值要给出0,但只有Tx趋近于负无穷大时才接近0。给网络训练带来负担,因此下面张图加入缩放因子,使得y的值很容易在(0,1)之间调节。
5.2.2Mosaic data augmentation
将四张图拼在一起进行训练,以扩充样本多样性。
5.2.3Iou threshold(match posotive samples)
不同于YOLOV3,这里根据GT中心点落在cell的坐标位置,相应的多分配两个cell的anchor作为正样本。比如第一个,坐标对1取余后均小于0.5,在左上角,可以看到5.2.1中的y范围是(-0.5,1.5),故左和上cell中的anchor均作为正样本。
5.2.4Optimizered Anchors
5.2.5CIOU
六.YOLOV5
6.1网络结构
Backbone:New CSP-Darknet53
Neck:SPPF,New CSP-PAN
Head:YOLOv3 Head
(1)
(2)两个maxpool2d等价于一个k9,三个等于一个k13,所以下图中达到同样的效果但计算量小。
6.2数据增强
(1)Mosaic
(2)Copy paste
将多张图片中的目标抠下来放在同一张图片中。
(3)Random affine
随机缩放平移旋转。
(4)Mixup
将两张图片按照一定透明程度混合在一起。
(5)Augment
调整色度饱和度亮度
(6)Random horizontal flip
随即水平翻转
6.3训练策略
(1)Muti-sacle training(0.5~1.5x)
例如输入图片为640X640,则训练时实际输入大小为640X0.5~640X1.5,且为32的整数倍。
(2)AutoAnchor(For training custom data)
根据自定义数据集的大小重新由K-means聚类得到anchor。
(3)Warmup and Cosine LR scheduler
初始学习率由0上升至设定值,然后再通过cosine方式下降学习率
(4)EMA(Exponential Moving Average)
学习变量加上动量,这样更新参数就会平滑一些。
(5)Mixed precision
混合精度训练,减少显存的利用。加快网络训练。
(6)Evolve hyper-parameters
建议使用官方提供的超参数。
6.4其他
6.4.1损失计算
6.4.2平衡不同尺度损失
P3预测大目标,P4预测中等目标,P5预测小目标。因为小目标预测有难度,所以权重占比大。
6.4.3消除Grid敏感度
中心点依旧采用YOLOV4,这里对长和宽进行限制,原来的公式当tw过大时bw就为无穷大,训练时容易出现损失为nan的情况,改进后的值限制在(0,4)之间。
6.4.4匹配正样本(Build Targets)
GT要在anchor长宽的0.25~4之间才算匹配成功。为啥是4,因为上图中其长宽的值只能为(0,4)