文章目录
前言
route层是yolo中提出的一个层级概念,在一些文章中也叫做路由层。它的作用是在当前层引出之前卷积所得到的特征层
一、 YOLO V4的网络结构
- 主要有以下三部分组成
BackBone:CSPDarknet53
Neck:SPP+PAN
HEAD:YOLO HEAD
二、分析各部分
1.CSPDarknet53
代码如下(示例):
def darknet_body(x):
'''Darknent body having 52 Convolution2D layers'''
x = DarknetConv2D_BN_Mish(32, (3,3))(x)
x = resblock_body(x, 64, 1, False)
x = resblock_body(x, 128, 2)
x = resblock_body(x, 256, 8)
x = resblock_body(x, 512, 8)
x = resblock_body(x, 1024, 4)
return x
1.1 Mish激活函数
Relu可以实现单侧抑制(即把一部分神经元置0),能够稀疏模型, Sigmoid 型活tanh激活函数会导致一个非稀疏的神经网络,而Relu大约 50% 的神经元会处于激活状态,具有很好的稀疏性。
softplus和ReLU的曲线具有相似性,但是其比ReLU更为平滑。
首先其和ReLU一样,都是无正向边界的,可以避免封顶而导致对称梯度饱和;其次Mish函数是处处光滑的,光滑可以允许更好的信息深入神经网络,则准确性和泛化更好。并且在绝对值较小的负值区域允许一些负值。
两者对比 Mish的梯度更平滑
1.2 Darknet53(yolo v3使用)
YOLO v3 算法使用的骨干网络便是Darknet53。
×8表示该模块重复8次
前52层用于特征提取,最后一层进行最终输出。
1.3 CSPDarknet53网络结构图(YOLO V4使用)
注意:YOLO V4使用时删去了最后的池化层、全连接层以及Softmax层
在每组Residual block(残差网络)加上一个Cross Stage Partial结构。并且,CSP-DarkNet中也取消了Bottleneck的结构,减少了参数使其更容易训练。
CSP输入的时候通道是什么比例划分的?
直接用两路的1x1卷积将输入特征进行变换。参考文章
三.Neck:SPP+PAN
参考文章
目标检测模型的Neck部分主要用来融合不同尺寸特征图的特征信息
3.1 SPP是Spatial pyramid pooling的缩写,即空间金字塔池化。
(SPP网络用在YOLOv4中的目的是增加网络的感受野。)
单纯看这个名字实在是不能理解,其实就是将SPM中的Matching前的处理过程通过池化层Pooling来解决
具体操作方法就是将backbone输出的feature map分别进行尺度为5×5,9×9和13×13的最大池化,然后使用route层将未池化和3种池化结果混合。
3.2 PAN是Path Aggregation Network的缩写,就是路径增强
这个是yolov3的网络结构图
输入的尺寸是416x416,预测的三个特征层大小分别是52,26,13。
YOLOv3是先处理尺度最大的feature map;然后使用route层获取一个倒数第二次downsample的feature map,接着upsample到中尺度;最后在此基础上使用route层获取一个倒数第三次downsample的feature map,接着upsample到小尺度。
PAN(Path Aggregation Network,上图的结构b。与图a 相比在UpSample之后又加了DownSample的操作)
图中(a)部分为常规的FPN,加入一条top-down的旁路连接,能给feature增加high-level的语义性有利于分类。由于low-level的feature是很利于定位,虽然FPN中P5也间接得有了low-level的特征,但是信息流动路线太长了,如红色虚线所示,YOLOv4标准模型达到六七十层卷积,通过图中(b)的Bottom-up Path Augmentation,可以使得最底层的特征流动到N2-N5只需要经过很少的层如绿色需要所示(仅仅有几个降维的卷积)。参考文章
即先将上述的y19进行上采样至大小38x38,然后再和CSPDarknet53的204层输出进行堆叠,最后通过一系列DarknetConv2D_BN_Leaky模块,获得变量y38
四,总结
1.作者没有采用再imagenet上跑分更高的此商品resnext50,选择cspdarknet53.
因为作者结合在目标检测上的精度上分析,cspdarknet53.效果更好。所以说在图像分类任务表现好的模型,未必适合用于目标检测。
** 2.PAN自底向上 的体现 就是y76下采样变成y38吧**