Yolov4整理 您所在的位置:网站首页 CBM计算方法与技巧 Yolov4整理

Yolov4整理

2024-07-09 14:57| 来源: 网络整理| 查看: 265

YOLOv4对深度学习中一些常用Tricks进行了大量的测试,最终选择了这些有用的Tricks:WRC、CSP、CmBN、SAT、 Mish activation、Mosaic data augmentation、CmBN、DropBlock regularization 和 CIoU loss。

基础知识:

CBL:由Conv+Bn+Leaky_relu激活函数三者组成。 CBM: Yolov4网络结构中的最小组件,由Conv+Bn+Mish激活函数三者组成。 DBL:代码中的Darknetconv2d_BN_Leaky,是yolo_v3的基本组件。就是卷积+BN+Leaky relu。 SPP:采用1×1,5×5,9×9,13×13的最大池化的方式,进行多尺度融合. CSP:CSPNet全称是Cross Stage Partial Networks,也就是跨阶段局部网络,CSPNet解决了其他大型卷积神经网络框架Backbone中网络优化的梯度信息重复问题,将梯度的变化从头到尾地集成到特征图中,因此减少了模型的参数量和FLOPS数值,既保证了推理速度和准确率,又减小了模型尺寸。 CSPX:借鉴CSPNet网络结构,由三个卷积层和X个Res unint模块Concate组成。 Res unit:则是一个经典的Resnet残差模块,一个输入分别经过2个DBL,和直连,再进行相加,这一经典的连接目前也大量应用到了各种网络中,让网络可以构建的更深,包括后面的YOLOV4也是在此基础上的衍生。 RESn:先经过一个DBL再+N个Res unit单元组成 Concat:张量拼接,维度会扩充,和Yolov3中的解释一样,对应于cfg文件中的route操作。 Add:张量相加,不会扩充维度,对应于cfg文件中的shortcut操作。

 Yolo v4的结构图和Yolo v3相比,多了CSP结构,PAN结构。蓝色框中为网络中常用的几个模块:CBM:Yolo v4网络结构中的最小组件,其由Conv(卷积)+ BN + Mish激活函数组成。CBL:Yolo v4网络结构中的最小组件,其由Conv(卷积)+ BN + Leaky relu激活函数组成。Res unit:残差组件,借鉴ResNet网络中的残差结构,让网络可以构建的更深。CSPX:借鉴CSPNet网络结构,由三个CBM卷积层和X个Res unint模块Concat组成。SPP:采用1×1,5×5,9×9,13×13的最大池化的方式,进行多尺度融合

张量拼接与张量相加Concat:张量拼接,会扩充两个张量的维度,例如26×26×256和26×26×512两个张量拼接,结果是26×26×768。Add:张量相加,张量直接相加,不会扩充维度,例如104×104×128和104×104×128相加,结果还是104×104×128。

Backbone中卷积层的数量: 每个CSPX中包含3+2×X个卷积层,因此整个主干网络Backbone中一共包含2+(3+2×1)+2+(3+2×2)+2+(3+2×8)+2+(3+2×8)+2+(3+2×4)+1=72。

1.2 YOLO V4的创新点

为了便于分析,将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

1.2.1 输入端的创新

(1)Mosaic数据增强 Yolov4中使用的Mosaic是参考2019年底提出的CutMix数据增强的方式,但CutMix只使用了两张图片进行拼接,而Mosaic数据增强则采用了4张图片,随机缩放、随机裁剪、随机排布的方式进行拼接。根据论文所说其拥有一个巨大的优点是**丰富检测物体的背景!**且在BN计算的时候一下子会计算四张图片的数据!

1.2.1 BackBone的创新

(1)CSPDarknet53 CSPDarknet53是在Yolov3主干网络Darknet53的基础上,借鉴2019年CSPNet的经验,产生的Backbone结构,其中包含了5个CSP模块。

 每个CSP模块前面的卷积核的大小都是3×3,步长为2,因此可以起到下采样的作用。 因为Backbone有5个CSP模块,若输入图像是608608,则特征图变化的规律是:608->304->152->76->38->19 经过5次CSP模块后得到1919大小的特征图。

完整的网络结构图如下:

 YOLOv4的网络结构是由 CSPDarknet53、 SPP、 PANet、YOLOv3头部等组成,下面对各部分逐一讲解:

 

Yolov4在主干网络Backbone采用CSPDarknet53网络结构,主要有三个方面的优点: 优点一:增强CNN的学习能力,使得在轻量化的同时保持准确性。 优点二:降低计算瓶颈 优点三:降低内存成本 

(2)Mish激活函数 Mish激活函数是2019年下半年提出的激活函数,和leaky_relu激活函数的图形对比如下:

Yolov4的Backbone中都使用了Mish激活函数,而后面的网络则还是使用Leaky_relu函数。

Yolov4作者实验测试时,使用CSPDarknet53网络在ImageNet数据集上做图像分类任务,发现使用了Mish激活函数的TOP-1和TOP-5的精度比没有使用时都略高一些。 因此在设计Yolov4目标检测任务时,主干网络Backbone还是使用Mish激活函数。

(3)Dropblock Yolov4中使用的Dropblock,其实和常见网络中的Dropout功能类似,也是缓解过拟合的一种正则化方式。传统的dropout对FC层效果更好,对conv层效果较差,原因可能是conv层的特征单元是空间相关的,使用dropout随机丢弃一些特征,网络仍旧能从相邻区域获取信息,因而输入的信息仍旧能够被送到下一层,导致网络过拟合。而DropBlock则是将在特征图上连续的信息一起丢弃。 下图是一个简单示例。(a)为输入图像,狗的头、脚等区域具有相关性。(b)为以dropout的方式随机丢弃信息,此时能从临近区域获取相关信息(带x的为丢弃信息的mask)。c为DropBlock的方式,将一定区域内的特征全部丢弃。

Dropblock算法框架 

DropBlock有两个参数:block_size(drop块的大小),γ(伯努利分布的参数) 

 

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有