YOLOV3整体运行流程整理

时间:2024-04-09 09:50:02

YOLOV3整体运行流程整理

1.网络输入:

       YOLO V3依然采用YOLOV2中Multi-Scale Training的思想,每隔几次迭代后就会微调网络的输入尺寸。

       训练时每迭代10次就会随机选择新的输入图像尺寸,因为YOLOV3的网络使用的下采样倍率为32,所以使用32的倍数调整输入图像尺寸{320,352,…,608},训练使用的最小的图像尺寸为320 x 320,最大的图像尺寸为608 x 608,这使得网络可以适应多种不同尺度的输入。

 

2.网络结构Darknet-53:

       作者首先训练了一个Darknet-53,YOLO V3网络就是使用了Darknet-53去除全连接层的前面52层。主要目的为:

        1)这个网络结构能在ImageNet上有好的分类结果,从而说明这个网路能学习到好的特征;

        2)Darknet-53相对于ResNet-152和ResNet-101,不仅在分类精度上相差不大,计算速度优于ResNet-152和ResNet-101,网络结构也更加简洁。

              Darknet-53采用了残差网络的跳层连接方式,性能优于ResNet-152和ResNet-101这两种深层网络可能的原因为:

                 a.网络的基本单元的差异;

                 b.网络层数越少,参数少,需要的计算量少。

              基础网络结构如下所示,可见这个网络大量使用残差的跳层连接,并去除池化层,使用的是步长为2的卷积来进行降采样。

YOLOV3整体运行流程整理

 

3.多尺度预测:

       如下图所示,在Darknet-53的基础上通过上采样和concat操作,输出了三个大小不同的特征图,从上到下分别对应深层/中层/浅层特征,实现了深浅层特征的融合。

       1)尺度1: 在基础网络之后添加一些卷积层再输出box信息;

       2)尺度2: 从尺度1中的倒数第二层的卷积层上采样(x2)再与最后一个16x16大小的特征图相加,再次通过多个卷积后输出box信息.相比尺度1变大两倍;

       3)尺度3: 与尺度2类似,使用了32x32大小的特征图。

YOLOV3整体运行流程整理

 

 4.Anchors:

       YOLO V3使用聚类算法得到9种不同宽高的先验框,前面输出的三种不同尺寸的特征图,每个特征图上的一个点只需要预测三个先验框。如COCO数据集在特征图上的anchors分布如下所示(默认输入为416*416*3):

特征图大小 感受野 先验框
13*13 (116*90)(156*198)(373*326)
26*26 (30*61)(62*45)(59*119)
52*52 (10*13)(16*30)(33*23)

       因此在默认输入为416*416时,实际总共有(13*13+26*26+52*52)*3=10647个推荐框。

 

5.网络输出:

       以COCO数据集为例,COCO数据集共有80个物体类别,因此每个先验框需要预测85维(80维类别预测值/4个位置预测值/1个置信度预测值);由于特征图中的每一个cell都会预测3个边界框,因此每一个特征图的预测通道数为:3*85=255维。

       关于分类预测值,YOLO V3采用Logistic函数代替了Softmax函数,使得各个分类相互独立,实现了类别解耦。

       关于位置预测值,YOLO V3通常不会预测边界框中心的确切坐标,它预测的是与预测目标的网格单元左上角相关的偏移,并且使用特征图中的cell大小进行了归一化。

       当输入图像为416*416时,假设边框中心偏移预测值是 (0.4, 0.7),则实际边框在 13 x 13 特征图上预测所得的相对坐标是 (1.4, 1.7),具体的位置x坐标还需要1.4乘以cell的宽,y坐标为1.7乘以cell的高。

       YOLO V3得出的宽/高偏移预测值使用图像的高和宽进行了归一化,假设预测值为(0.3, 0.8)则13 x 13 特征图的实际宽和高是 (13 x 0.3, 13 x 0.8)。

6.参考文献:

       (1)https://www.cnblogs.com/xbit/p/10036981.html

       (2)https://blog.csdn.net/chandanyan8568/article/details/81089083

       (3)《深度学习之pytorch物体检测实战》