1. 整体网络结构
摘自 https://zhuanlan.zhihu.com/p/172121380
YOLOV3
YOLOV4
Yolov4在Yolov3的基础上进行了很多的创新。
比如输入端采用mosaic数据增强,
Backbone上采用了CSPDarknet53、Mish激活函数、Dropblock等方式,
Neck中采用了SPP、FPN+PAN的结构,
输出端则采用CIOU_Loss、DIOU_nms操作。
YOLOV5
Yolov5的结构和Yolov4很相似,但也有一些不同
(1)输入端:Mosaic数据增强、自适应锚框计算、自适应图片缩放
(2)Backbone:Focus结构,CSP结构
(3)Neck:FPN+PAN结构
(4)Prediction:GIOU_Loss
2. 模块
2.1 SPP (Spatial Pyramid Pooling)
摘自 https://blog.csdn.net/qq_39056987/article/details/104327638
最初提出应用在双阶段检测器中,最后的分类层是由全连接组成,这就导致训练时图片的输入尺寸不能改变,推理时输入尺寸要和训练时一致。图片的变形拉伸和裁剪会导致图片失真和信息丢失。因此在当时的环境下,凯明提出了SPP,主要解决两个问题:
- 有效避免了对图像区域剪裁、缩放操作导致的图像失真等问题;
- 解决了卷积神经网络对图像重复特征提取的问题,大大提高了产生候选框的速度,且节省了计算成本。
如图所示,任何输入尺寸的图片,都会得到16+4+1=21长度的输出,channel数量仍为256不变。
但是在YOLOV3~V5中,SPP作用不同于前。YOLO中的SPP module由四个并行的分支构成,分别是kernel size为 5×5, 9×9, 13×13的最大池化和一个跳跃连接。如下图所示,以YOLOv3-SPP为例,作者检测头前面的第5和第6卷积层之间集成SPP模块来获得,而在随后的YOLOV4/V5中,SPP都被借鉴,用在最小的特征输出层。在Feature Map经过SPP module池化后的特征图重新cat起来传到下一层侦测网络中。此部分SPP最主要的作用就是融合了局部与全局特征。YOLOV3-SPP相比YOLOV3提升了好几个点。