目标检测算法丨YOLOv3-Darknet53构建特征金字塔及分类预测和回归预测
网络构建
前面我们已经完成了Darknet53的骨干网络构建,接下来我们来了解一下如何利用前面提取的特征构建特征金字塔和进行分类预测以及回归预测。

1. 构建FPN特征金字塔,进行加强特征提取
特征图金字塔网络FPN(Feature Pyramid Networks)是2017年提出的一种网络,FPN主要解决的是物体检测中的多尺度问题,通过简单的网络连接改变,在基本不增加原有模型计算量的情况下,大幅度提升了小物体检测的性能。
2. 利用YOLO Head对三组有效特征层进行预测
YOLO Head 本质上是一个3 x 3 卷积加上1 x 1卷积,一个起到特征整合,一个用于调整通道数
构建FPN特征金字塔进行加强特征提取
我们可以通过YOLO的网络结构可以看到,YOLOv3提取多特征层进行检测的,一共提取了三层特征层,位于骨干网络中的不同位置,这个三个特征层的shape分别为(52,52,256)(26,26,512)(13,13,1024)
所以在获得了这个三个特征层之后,我们就可以进行FPN层的构建,构建方式如下:
1. 13 x 13 x 1024的特征层会进行5次的卷积处理,然后利用YOLO Head获得预测结果。一部分经过上采样之后和26 x 26 x512特征层进行结合,
2. 经过结合的特征再进行5次的卷积处理,同样的会利用YOLO Head获得预测结果,然后进行上采样与52 x 52 x256特征层进行结合
3. 然后52 x 52 x256也同样的会进行5次的卷积处理,然后利用YOLO Head获得预测结果。
通过特征金字塔,我们就可以将不同尺寸的特征层进行融合,能够提取出更好的特征。
利用YOLO Head获取预测结果
在经过特征金字塔加强了特征提取之后,我们就可以利用这三种不同尺寸的特征输入到YOLO Head中得到预测结果。
对三个特征层分别进行处理,假设我们现在要对VOC数据进行预测,那么我们的输出层的shape分别为(13,13,75)(26,26,75)(52,52,75),最后一个75是通道数,是基于VOC数据的,该数据集的类别为20种,而YOLOv3针对每一个特征层的每一个特征点存在3个先验框,所以最后预测的通道数为 3 x 25(20个类别 + 4个坐标 + 1个置信度)
使用coco数据集的时候,类别数量为80,所以最后的维度是255。
网络代码实现