姓名:李泽铭 学号:22011210787 通信工程学院
转载自:YOLO v3 详解_*青云*的博客-CSDN博客_yolov3介绍
【嵌牛导读】YOLO v3 是目前工业界用的非常多的目标检测的算法。YOLO v3 没有太多的创新,主要是借鉴一些好的方案融合到 YOLO v2 里面。不过效果还是不错的,在保持速度优势的前提下,提升了预测精度,尤其是加强了对小物体的识别能力。
【嵌牛鼻子】Yolo V3;卷积神经网络;
【嵌牛提问】 Yolo V3相比其他类型的卷积神经网络,优势具体体现在哪里?
【嵌牛正文】
一、核心思想
YOLO v3 的核心思想就是用 3 种不同的网格来划分原始图像。其中 13 * 13 的网格划分的每一块最大,用于预测大物体。26 * 26 的网格划分的每一块中等大小,用于预测中等物体。52 * 52 的网格划分的每一块最小,用于预测小物体。
二、Darknet-53
YOLO v3 的 backbone 采用了自己设计的 Darknet-53 的网络结构(含有53个卷积层),它借鉴了残差网络 residual network 的做法,在一些层之间设置了快捷链路(shortcut connections)。
上图的 Darknet-53 网络采用 256 * 256 * 3 作为输入,最左侧那一列的 1、2、8 等数字表示多少个重复的残差组件。每个残差组件有两个卷积层和一个快捷链路,示意图如下:
三、网络结构
YOLO v2 曾采用 passthrough 结构来检测细粒度特征,在 YOLO v3 更进一步采用了 3 个不同尺度的特征图来进行对象检测。
结合上图看,卷积网络在 79 层后,经过下方几个黄色的卷积层得到一种尺度的检测结果。相比输入图像,这里用于检测的特征图有 32 倍的下采样。比如输入是 416 * 416 的话,这里的特征图就是 13 * 13 了。由于下采样倍数高,这里特征图的感受野比较大,因此适合检测图像中尺寸比较大的对象。
为了实现细粒度的检测,第 79 层的特征图又开始作上采样(从 79 层往右开始上采样卷积),然后与第 61 层特征图融合(Concatenation),这样得到第 91 层较细粒度的特征图,同样经过几个卷积层后得到相对输入图像 16 倍下采样的特征图。它具有中等尺度的感受野,适合检测中等尺度的对象。
最后,第 91 层特征图再次上采样,并与第 36 层特征图融合(Concatenation),最后得到相对输入图像 8 倍下采样的特征图。它的感受野最小,适合检测小尺寸的对象。
四、9 种尺度先验框
随着输出的特征图的数量和尺度的变化,先验框的尺寸也需要相应的调整。YOLO v2 已经开始采用 K-means 聚类得到先验框的尺寸,YOLO v3 延续了这种方法,为每种下采样尺度设定 3 种先验框,总共聚类出 9 种尺寸的先验框。在 COCO 数据集这 9 个先验框是:(10x13),(16x30),(33x23),(30x61),(62x45),(59x119),(116x90),(156x198),(373x326)。
分配上,在最小的 13 * 13 特征图上(有最大的感受野)应用较大的先验框(116x90),(156x198),(373x326),适合检测较大的对象。中等的 26 * 26 特征图上(中等感受野)应用中等的先验框(30x61),(62x45),(59x119),适合检测中等大小的对象。较大的 52 * 52 特征图上(较小的感受野)应用较小的先验框(10x13),(16x30),(33x23),适合检测较小的对象。
我们可以通过下面的图片来感受一下先验框的大小和 feature map 大小的关系。其中蓝色框为聚类得到的先验框。黄色框式 ground truth,红框是对象中心点所在的网格。
五、输入与输出
不考虑神经网络结构细节的话,总的来说,对于一个输入图像,YOLO v3 将其映射到 3 个尺度的输出张量,代表图像各个位置存在各种对象的概率。
我们看一下 YOLO v3 共进行了多少个预测。对于一个 416 * 416 的输入图像,在每个尺度的特征图的每个网格设置 3 个先验框,总共有 13 * 13 * 3 + 26 * 26 * 3 + 52 * 52 * 3 = 10647 个预测。每一个预测是一个 (4 + 1 + 80) = 85 维向量,这个 85 维向量包含边框坐标(4 个数值),边框置信度(1 个数值),对象类别的概率(对于 COCO 数据集,有 80 种对象)。
对比一下,YOLO v2 采用 13 * 13 * 5 = 845 个预测,YOLO v3 的尝试预测边框数量增加了 10 多倍,而且是在不同分辨率上进行,所以 mAP 以及对小物体的检测效果有一定的提升。
六、检测效果
如果采用 COCO mAP-50 做评估指标(不是太介意预测框的准确性的话),YOLO v3 的表现相当惊人,如下图所示,在精确度相当的情况下,YOLO v3 的速度是其它模型的 3、4 倍。
不过如果要求更精准的预测边框,采用 COCO AP 做评估标准的话,YOLO v3 在精确率上的表现就弱了一些。如下图所示。