深度学习|YOLO v4网络实现及解析

简介 ?yolo是继rcnn后,针对目标检测速度问题提出的另一种框架。其核心思想是利用整张 图片作为网络输入,直接在输出层回归bbox的位置和所述类别。
网络架构 ?目标检测一般由两部分组成:backbone和head。其中backbone是主干网络主要用来 提取图像的特征,head部分根据图像特征来进行目标检测。对于head部分,通常分为两类: one-stage和two-stage的目标检测器。Two-stage的目标检测器的代表是R-CNN系列,它将目 标检测分成两步,第一步先预测出目标框所在的位置,然后在根据该位置上的特征来预测类别。 One-stage目标检测器的代表模型是YOLO, SSD和RetinaNet。它是将rcnn中的两部分放到一起 进行预测。
?yolo的网络结构主要可以分为三部分,如下图所示:
深度学习|YOLO v4网络实现及解析
文章图片

?三个部分分别是backbone、neck、head。backbone主要负责特征提取,neck一般是负责 加强特征,然后head负责预测。
Backbone
?yolo v4的主干网络使用的是CSPDarkent53。
? CSPDarkent53即引入了CSPNet中的主要思想的Darknet53网络结构。CSPNet的主 要内容如下图:
深度学习|YOLO v4网络实现及解析
文章图片

? CSPNet主要结构如上图中(b)所示,输入层(base layer)会被分为两部分:part1 和part2。这里一般是将通道数分为两部分。然后part2的内容继续进行卷积等操作,最后再直接与 part1聚合。
? 然后是darknet53,这是yolo v3提出的一种主干网络,主要由一些卷积层和残差结构 组成,其网络结构如下:
深度学习|YOLO v4网络实现及解析
文章图片

Neck
? 在neck部分yolo v4最终选用了spp和PANet。spp的主要结构如下:
深度学习|YOLO v4网络实现及解析
文章图片

? 如上图,SPP的思路是对于任意大小的feature map首先分成16、4、1 个块,然后在每个块上最大池化,池化后的特征拼接得到一个固定维度的输出。
? 然后是PANet,其主要结构如下:
深度学习|YOLO v4网络实现及解析
文章图片

? 如图所示,其中(a)是FPN的结构,(b)是该网络提出的bottom-up路径增强, 它与a模块的右侧类似,只是方向不同。然后是(c),它用于融合各个特征层的特征。最后是(d) 与(e),他们分别负责目标检测和语义分割。
HEAD
【深度学习|YOLO v4网络实现及解析】? yolo v4使用的head与yolo v3的相同。

    推荐阅读