【目标检测】YOLOv3 ,多尺度检测与特征融合

文章目录

    • 一、YOLOv3简介
    • 二、YOLOv3的改进
      • 2.1 新的Backbone网络:DarkNet-53
      • 2.2 多尺度检测
    • 三、YOLOv3的网络结构
    • 四、YOLOv3的优缺点
      • 4.1 优点
      • 4.1 缺点

一、YOLOv3简介

相关阅读:

【目标检测】YOLOv1 ,one-stage 目标检测算法的开山之作

【目标检测】YOLOv2 ,对YOLOv1的多种改进

YOLOv3是2018年在CVPR发表的,其网络的创新点并不多,主要是整合了当时最新的网络结构。其中有两个值得一提的亮点:

(1)使用残差模型,进一步加深了网络结构.
(2)使用FPN架构实现多尺度检测。

YOLOv3有哪些创新点?

(1)新网络结构:DarkNet-53
(2)融合FPN
(3)用逻辑回归替代softmax作为分类器

二、YOLOv3的改进

2.1 新的Backbone网络:DarkNet-53

YOLOv3在YOLOv2的 Darknet-19网络的基础上引入了残差块,并进一步加深了网络,改进后的网络有53个卷积层,取名为Darknet-53,其网络结构如下图所示(以256*256的输入为例)。

【目标检测】YOLOv3 ,多尺度检测与特征融合_第1张图片
DarkNet-53是一个全卷积网络,大量使用了残差连接。并且为了降低池化带来的梯度负面效果,作者直接摒弃了pooling,用conv的stride来实现降采样。在这个网络结构中,使用的是步长为2的卷积来进行降采样。

为了比较Darknet-53与其它网络结构的性能,作者在TitanX上,采用相同的实验设置,将256x256的图片分别输入以Darknet-19,ResNet-101,ResNet-152和Darknet-53为基础网络的分类模型中,实验得到的结果如下图所示。

【目标检测】YOLOv3 ,多尺度检测与特征融合_第2张图片

可以看到Darknet-53比ResNet-101的性能更好,而且速度是其1.5倍,Darknet-53与ResNet-152性能相似但速度几乎是其2倍。注意到,Darknet-53相比于其它网络结构实现了每秒最高的浮点计算量,说明其网络结构能更好的利用GPU。

2.2 多尺度检测

首先推荐参考资料 你一定从未看过如此通俗易懂的YOLO系列(从v1到v5)模型解读 (中)

根据我们在YOLOv2中“目标检测模型的改进思路”提到的:

检测模型 = 特征提取器 + 检测头

针对YOLOv2对小目标检测精度不高的问题,YOLOv3继续对检测头进行改进。YOLOv3的网络结构简图如下图所示(以输入416 * 146 * 3 为例):

【目标检测】YOLOv3 ,多尺度检测与特征融合_第3张图片

        

我们知道,YOLOv2的检测头已经由YOLOv1的 77 变为 1313了,再看YOLOv3检测头分叉了,分成了3部分:

小尺度(32倍下采样):13 * 13 * 255
中尺度(16倍下采样):26 * 26 * 255
大尺度(8倍下采样): 52 * 52 * 255

其中 255 = 3 * (4+1+80),表示每个分支预测3个框,每个框预测5元组(x,y,w,h,confidence)和80个分类(COCO数据集有80个分类)。

所以在YOLOv3 中,每个网格(grid)设置9个先验框,3个大的,3个中的,3个小的。所谓的多尺度检测就是这三个尺度。预测的框更多更全面了,并且检测性能提高了。那么为什么要这样设计呢?

因为32倍下采样每个点感受野更大,所以去预测大目标,8倍下采样每个点感受野最小,所以去预测小目标。正所谓专人专事就是如此。

这里就有两个设计上的问题了:

问题一:为什么是3个分支,我改成5个,6个分支会不会更好?

理论上应该会。但还是那句话,作者平衡了检测精度和recall选择了3个分支。

问题二:为什么每个网格设置9个先验框呢,从而使得每个分支预测3个框。而不是其他数目。

应该还记得YOLOv2中每个网格初始化5个anchor,这个数量是作者通过对训练集进行k-means聚类得到的。YOLOv3同样也采用了k-means聚类的方法。

对于COCO数据集,通过聚类预先选择9个聚类簇。以输入图像的尺寸为416×416 计算,anchor的宽度和高分别为:

10 ×13,16 ×30,33 ×23
30 ×61,62 ×45,59 ×119
116 × 90,156 ×198,373×326

解答了所有疑惑,我们来看一下YOLOv3预测多少个bounding box:

在这里插入图片描述
YOLOv3可以预测的bounding box是YOLOv2的12倍,加强了模型的检测能力。

        

三、YOLOv3的网络结构

YOLOv3的网络结构图如下,原创图片来源于 yolo系列之yolo v3【深度解析】

【目标检测】YOLOv3 ,多尺度检测与特征融合_第4张图片
对图中内容做一些解释:

(1)DBL:如图左下角所示,表示Darknetconv2d_BN_Leaky,是YOLOv3 的基本组件。就是卷积+BN+Leaky relu。对于YOLOv3 来说,BN和leaky relu已经是和卷积层不可分离的部分了(最后一层卷积除外),共同构成了最小组件。

(2)resn:n代表数字,有res1,res2, … ,res8等等,表示这个res_block(残差快)里含有多少个res_unit。这是YOLOv3的大组件,YOLOv3借鉴了ResNet的残差结构,使用这种结构可以让网络结构更深。对于res_block的解释,可以在图中的右下角直观看到,其基本组件也是DBL。

(3)concat:张量拼接。将darknet中间层和后面的某一层的上采样进行拼接。拼接的操作和残差层add的操作是不一样的,拼接会扩充张量的维度,而add只是直接相加不会导致张量维度的改变。

四、YOLOv3的优缺点

4.1 优点

(1)速度快是YOLO系列最重要的特质。

(2)YOLO系列的通用性很强。

(3)由于YOLO系列正样本的生成过程较为严格,因此背景的误检率较低。

4.1 缺点

位置的准确性较差,召回率也不高。尤其是对于遮挡和拥挤这种难以处理的情况,难以做到高精度。

你可能感兴趣的:(#,yolo系列,目标检测,深度学习)