CSPDarkNet

1 YOLOv4目标检测模型

自从Redmon说他不在更新YOLO系列之后,我一度以为这么好用的框架就要慢慢淡入历史了,事实是我多虑了。YOLOv4在使用YOLO Loss的基础上,使用了新的backbone,并且集成了很多新的优化方法及模型策略,如Mosaic,PANet,CmBN,SAT训练,CIoU loss,Mish激活函数,label smoothing等等。可谓集SoAT之大成,也实现了很好的检测精度和速度。 这篇博客主要讨论YOLOv4中的backbone——CSP-DarkNet,以及其实现的所必需的Mish激活函数,CSP结构和DarkNet

开源项目YOLOv5相比YOLOv4有了比较夸张的突破,成为了全方位吊打EfficientDet的存在,其特征提取网络也是CSP-DarkNet。

1.1 Mish激活函数

激活函数是为了提高网络的学习能力,提升梯度的传递效率。CNN常用的激活函数也在不断地发展,早期网络常用的有ReLU,LeakyReLU,softplus等,后来又有了Swish,Mish等。Mish激活函数的计算复杂度比ReLU要高不少,如果你的计算资源不是很够,可以考虑使用LeakyReLU代替Mish。在介绍之前,需要先了解softplus和tanh函数。

softplus激活函数的公式如下: 

上图是其输出曲线,softplus和ReLU的曲线具有相似性,但是其比ReLU更为平滑。

目前的普遍看法是,平滑的激活函数允许更好的信息深入神经网络,从而得到更好的准确性和泛化。

tanh的公式如下: 

Mish激活函数的公式为: 

上图为Mish的曲线。首先其和ReLU一样,都是无正向边界的,可以避免梯度饱和;其次Mish函数是处处光滑的,并且在绝对值较小的负值区域允许一些负值。

1.2 CSP结构和DarkNet

CSP和DarkNet的结构我在之前的博客中有介绍,如果不清楚的同学,欢迎戳链接:CSPNetDarkNet

这里为了方便对比,给出DarkNet-53的架构图:

1.3 CSP-DarkNet

博客【darknet】darknet——CSPDarknet53网络结构图(YOLO V4使用)画出了DarkNet-53的结构图,画得很简明清晰,我借过来用一下:

CSP-DarkNet和CSP-ResNe(X)t的整体思路是差不多的,沿用网络的滤波器尺寸和整体结构,在每组Residual block加上一个Cross Stage Partial结构。并且,CSP-DarkNet中也取消了Bottleneck的结构,减少了参数使其更容易训练。

但是,有个地方看图还是不清楚——CSP输入的时候通道是什么比例划分的? 查看了一些源码,最终确认了结构,在一下部分进行讨论。

【讨论】

按照CSP论文中的思路,我开始认为的CSP结构应该是这样的——特征输入之后,通过一个比例将其分为两个部分(CSPNet中是二等份),然后再分别输入block结构,以及后面的Partial transition处理。这样符合CSPNet论文中的理论思路。

但是实际上,我参考了一些源码以及darknet配置文件中的网络参数,得到的结构是这样的:

和我所理解不同的是,实际的结构在输入后没有按照通道划分成两个部分,而是直接用两路的1x1卷积将输入特征进行变换。 可以理解的是,将全部的输入特征利用两路1x1进行transition,比直接划分通道能够进一步提高特征的重用性,并且在输入到resiudal block之前也确实通道减半,减少了计算量。虽然不知道这是否吻合CSP最初始的思想,但是其效果肯定是比我设想的那种情况更好的。性能是王道,我们也按照实际的结构来复现。

  • 2
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
CSPDarknet53是一种主干网络结构,用于目标检测算法YOLOv4中。根据引用\[1\]和引用\[2\]的内容,CSPDarknet53的结构可以描述如下: 1. 特征输入后,通过一个比例将其分为两个部分(CSPNet中是二等份)。 2. 分别对这两个部分进行处理,其中一个部分经过一系列的残差块(ResBlock),另一个部分经过一系列的Resblock_body。 3. 在处理完两个部分后,将它们进行融合,具体的融合方式是使用torch.cat()函数将两个部分的特征进行连接。 4. 在融合后的特征上进行一层卷积操作。 5. 经过上述步骤后,得到的特征再次被分为两个部分,然后分别输入到下一层的残差块和Resblock_body中进行处理。 6. 重复上述步骤,直到达到网络的最后一层。 需要注意的是,CSPDarknet53中的第一个Resblock_body与后面的4个Resblock_body的结构存在差异,具体差异可以参考引用\[3\]中的图示。此外,CSPDarknet53的结构中还包括一些其他的操作,如1x1卷积和Partial transition处理,这些操作有助于提高特征的重用性和减少计算量。 总结来说,CSPDarknet53是一种具有特殊结构的主干网络,通过分割特征并进行不同的处理,然后将它们融合在一起,以提取更丰富的特征信息。这种结构在YOLOv4中被广泛应用,并取得了较好的性能。 #### 引用[.reference_title] - *1* [【目标检测】YOLOv4特征提取网络——CSPDarkNet53结构解析及PyTorch实现](https://blog.csdn.net/m0_47405013/article/details/125687676)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [对于YOLOv4的CSPDarknet53的网络结构详细结构图](https://blog.csdn.net/Brillian123/article/details/122259296)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值