xingchenshanyao / NNLearning

这里只是学习深度学习过程中的一些记录
4 stars 0 forks source link

CSPDarkNet———YOLOv4的backbone #1

Open xingchenshanyao opened 1 year ago

xingchenshanyao commented 1 year ago

CSPDarkNet

参考来源:

https://blog.csdn.net/bule_sky_wait_me/article/details/118547757

主要讨论YOLOv4中的backbone(特征提取网络)——CSP-DarkNet,以及其实现的所必需的Mish激活函数,CSP结构和DarkNet。

  1. Mish激活函数 激活函数的目的是:提高网络的学习能力,提升梯度的传递效率。 目前的普遍看法是,平滑的激活函数允许更好的信息深入神经网络,从而得到更好的准确性和泛化。 早期神经网络常用的激活函数有ReLU,LeakyReLU,softplus等,后来又有了Swish,Mish等。 Mish激活函数的计算复杂度比ReLU要高不少,如果计算资源不足,可以考虑使用LeakyReLU代替Mish。

1.1 softplus激活函数 1 2 上图是其输出曲线,softplus和ReLU的曲线具有相似性,但是其比ReLU更为平滑。 1.2 tanh激活函数 3 1.3 Mish激活函数 4 5 上图为Mish的曲线。首先其和ReLU一样,都是无正向边界的,可以避免梯度饱和;其次Mish函数是处处光滑的,并且在绝对值较小的负值区域允许一些负值。

xingchenshanyao commented 1 year ago
  1. CSP结构 Cross Stage Partial(CSP)结构,其初衷是减少计算量并且增强梯度的表现。 主要思想是:在输入block之前,将输入分为两个部分,其中一部分通过block进行计算,另一部分直接通过一个shortbut进行concatenate(连接)。 CSP结构的优点: (1)加强CNN的学习能力;(2)减少计算瓶颈;(3)减少内存消耗。 1 上图中,上者为原始的Dense Block,下者为Partial Dense Block。假设将输入按照part_ratio=0.5的比例分成两部分,并且假设一个Dense Block的输入为w h c,growth rate为 d,Dense block的layer数量为m,则:对于原始的DenseBlock,其CIO为(Convolutional input/Output)为cm + [(mm+m)d]/2;而对于使用了CSP结构的结构来说,其CIO下降为[cm + (mm+m)d]/2。
xingchenshanyao commented 1 year ago

3.DarkNet结构 YOLOv3的作者在其论文中提出,他们调了一个对目标检测效果很好的网络结构,叫做DarkNet-53。其基本结构是Residual block,但是不同于ResNet中的Basic block和BottleNeck,这个Residual block采用1x1卷积接着一组3x3卷积,比bottleneck少了后面的1x1卷积层。该block中的3x3 filter的数量是1x1的两倍。整体网络结构,如下图: 1

xingchenshanyao commented 1 year ago

4.CSPDarknet53 网络结构图如下: 2 注意:YOLO V4使用时删去了最后的池化层、全连接层以及Softmax层 CSP-DarkNet和CSP-ResNe(X)t的整体思路是差不多的,沿用网络的滤波器尺寸和整体结构,在每组Residual block加上一个Cross Stage Partial结构。并且,CSP-DarkNet中也取消了Bottleneck的结构,减少了参数使其更容易训练。

作者参考了一些源码以及darknet配置文件中的网络参数,得到的结构是这样的: 3