YoloV4核心基础内容

 网络结构图

Yolov4的结构图和Yolov3相比,因为多了CSP结构,PAN结构,如果单纯看可视化流程图,会觉得很绕,不过在绘制出上面的图形后,会觉得豁然开朗,其实整体架构和Yolov3是相同的,不过使用各种新的算法思想对各个子结构都进行了改进。

先整理下Yolov4的五个基本组件:

  1. CBM:Yolov4网络结构中的最小组件,由Conv+Bn+Mish激活函数三者组成。
  2. CBL:由Conv+Bn+Leaky_relu激活函数三者组成。
  3. Res unit:借鉴Resnet网络中的残差结构,让网络可以构建的更深。
  4. CSPX:借鉴CSPNet网络结构,由卷积层和X个Res unint模块Concate组成。
  5. SPP:采用1×1,5×5,9×9,13×13的最大池化的方式,进行多尺度融合。

其他基础操作:

  1. Concat:张量拼接,维度会扩充,和Yolov3中的解释一样,对应于cfg文件中的route操作。
  2. add:张量相加,不会扩充维度,对应于cfg文件中的shortcut操作。

Backbone中卷积层的数量:

和Yolov3一样,再来数一下Backbone里面的卷积层数量。

每个CSPX中包含5+2*X个卷积层,因此整个主干网络Backbone中一共包含1+(5+2*1)+(5+2*2)+(5+2*8)+(5+2*8)+(5+2*4)=72。

这里大白有些疑惑,按照Yolov3设计的传统,这么多卷积层,主干网络不应该叫CSPDaeknet73吗????

4.3 核心基础内容

Yolov4本质上和Yolov3相差不大,可能有些人会觉得失望。

但我觉得算法创新分为三种方式:

  1. 第一种:面目一新的创新,比如Yolov1、Faster-RCNN、Centernet等,开创出新的算法领域,不过这种也是最难的
  2. 第二种:守正出奇的创新,比如将图像金字塔改进为特征金字塔
  3. 第三种:各种先进算法集成的创新,比如不同领域发表的最新论文的tricks,集成到自己的算法中,却发现有出乎意料的改进

Yolov4既有第二种也有第三种创新,组合尝试了大量深度学习领域最新论文的20多项研究成果,而且不得不佩服的是作者Alexey在github代码库维护的频繁程度。

目前Yolov4代码的star数量已经1万多,据我所了解,目前超过这个数量的,目标检测领域只有Facebook的Detectron(v1-v2)、和Yolo(v1-v3)官方代码库(已停止更新)。

所以Yolov4中的各种创新方式,大白觉得还是很值得仔细研究的。

为了便于分析,将Yolov4的整体结构拆分成四大板块:

大白主要从以上4个部分对YoloV4的创新之处进行讲解,让大家一目了然。

  1. 输入端:这里指的创新主要是训练时对输入端的改进,主要包括Mosaic数据增强、cmBN、SAT自对抗训练
  2. BackBone主干网络:将各种新的方式结合起来,包括:CSPDarknet53、Mish激活函数、Dropblock
  3. Neck:目标检测网络在BackBone和最后的输出层之间往往会插入一些层,比如Yolov4中的SPP模块、FPN+PAN结构
  4. Prediction:输出层的锚框机制和Yolov3相同,主要改进的是训练时的损失函数CIOU_Loss,以及预测框筛选的nms变为DIOU_nms
 
posted @ 2022-04-16 08:00  青竹之下  阅读(57)  评论(0编辑  收藏  举报