Yolo系列理解:
yolov1:
输入:448x448x3
输出:7x7x30
网络结构:
优点:
快速,pipline简单.背景误检率低。通用性强。YOLO对于艺术类作品中的物体检测同样适用。它对非自然图像物体的检测率远远高于DPM和RCNN系列检测方法。
(1)结构简单,速度快;
缺点:
由于输出层为全连接层,因此在检测时,YOLO训练模型只支持与训练图像相同的输入分辨率。虽然每个格子可以预测B个bounding box,但是最终只选择只选择IOU最高的bounding box作为物体检测输出,即每个格子最多只预测出一个物体。当物体占画面比例较小,如图像中包含畜群或鸟群时,每个格子包含多个物体,但却只能检测出其中一个。这是YOLO方法的一个缺陷。YOLO loss函数中,大物体IOU误差和小物体IOU误差对网络训练中loss贡献值接近(虽然采用求平方根方式,但没有根本解决问题)。因此,对于小物体,小的IOU误差也会对网络优化过程造成很大的影响,从而降低了物体检测的定位准确性。
(1)输入图像大小不能改变,为448;
(2)每个格子预测B个bounding box,但最后只能保留一个物体,对于小物体来说不适用。
yolov2:
相比yolov1,改进包括:
(1)Batch Normalization(解决梯度消失,梯度爆炸问题);
(2)高分辨率图像分类器;
(3)使用先验框,添加anchor box,可预测一个grid内存在多个物体的情况;
(4)采用预测bounding box相对于anchor box的偏移位置。
(5)…
yolov3
(1)引入FPN;
(2)更好的基础分类网络(darknet-53);
(3)分类器不再使用softmax,分类损失采用二分类交叉熵损失;
网络结构:输出包括三个分支:分别为32、16、8倍下采样。输出的feature map上每个小格子对应三个anchor,三个尺度的feature map对应9组anchor;anchor大小通过前期聚类获得,最小的feature map对应最大的三个anchor,用来负责预测大物体;最大的feature map对应最小的三个anchor,负责预测小物体。之所以采用anchor的概念,是因为学习ground truth与anchor之间的偏差比直接像yolov1那样直接预测目标宽高更容易。
损失函数这里,正例产生置信度、检测框、类别loss,负例只产生置信度loss,置信度采用交叉熵损失函数,检测框为L2 Loss(MSE),也可采用smooth L1损失,类别标签使用交叉熵损失函数。
yolov4
相对于yolov3,v4结构上几乎没有做改变,backbone那里采用了mish激活函数,还有各种各样的trich,另外值得一提的是yolov4的数据增强方法,如马赛克等,待研究。