YOLO v3: You Only Look Once (version 3)
YOLO v3: You Only Look Once (version 3)

1. 总体结构

Yolo3总共有106层,借鉴了DSSD的反卷积拓展和多层Feature Map预测结构设计,即对每张图片在3个不同的scale层上进行目标探测,这3层分别是第82层、94层、106层,以此实现对大、中、小目标的探测;
1.1 Residual Block:

1.2 上采样(Upsampling Layer)
YOLO3上采样采用的是双线性插值,详情请参考 Faster R-CNN 2.3.2 RoI Align 中的双线性插值。
1.3 探测层(Detection Layer)
相当于对Faster R-CNN和SSD中的Feature Map层预测后形成的层。
1.4 PFN(Feature Pyramid Network)

2. 目标探测
以第一个探测层(即第82层)为例,原图片尺寸是416 X 416,到达该层累计的Stride是32,则该探测层尺寸是13 X 13(即 416/32=13),这也相当于将原图片分为13 X 13的网格。原始图片,其shape=[416, 416, 3],经过深度学习卷积神经网络形成第一个探测层,其shape=[13, 13, 255]。下图中右图(即探测层)中的红色网格有255个值,表示左图(即原图片)以黄、紫、蓝三个矩形(三者中心都是红框)进行预测的值。

将这255个值按照各自对应的矩形进行分组如下:

其中b_x,,b_y,b_h,b_w:目标物相对位置坐标信息;p_c:有目标物的概率;最后的80个值是80个目标物各自的预测概率。
将上述内容合并,如下图所示:

以黄色矩形对应的85个值为例,其最终预测情况如下图所示:

位置信息值b_x,b_y,b_h,b_w值:表示预测框的位置,其值并非卷积网络直接给出,而是经过如下换算:

其中b_x,b_y,b_h,b_w代表的预测的目标物位置矩形框的中心坐标值x,y以及矩形的长宽值;t_x,t_y,t_h,t_w是卷积网络直接给出的值,而c_x,c_y是指探测层中小红框左上角的点的坐标,示例小红框的c_x和c_y为(6,6)。
目标概率值p_c: 表示预测框中含有目标物的概率,所用激活函数为sigmoid;
目标类别概率c_1~c_80:表示各类别的概率,在yolo3之前的版本,所用激活函数是softmax, yolo3将其修改为sigmoid函数;原因在于softmax具有排它性,即探测到的物体仅仅能归属于某一个目标类,如果目标类中有包含和被包含关系类时,如目标类含有Person类, Man类和Wowan类时,softmax并不能适用,而sigmoid更适用这种情况。
以上是一个网格的一个矩形框的预测,如果输入图片场景较为复杂,整个探测层的所有网格的所有矩形框预测结果可视化如下:

这是一个探测层的预测,yolo3总共用了三个探测层;

每个探测层都分别独立进行如上预测;差异在于其目标物尺寸不同,从左到右三个探测层目标物尺寸分别是大、中、小,即3个大矩形框,3个中矩形框和3个小矩形框;这9个矩形框是针对特定数据集上目标物的所有尺寸进行K-means聚类获取,如在数据集COCO上,最终确定的这9个矩形框尺寸如下:
(373, 326),(156, 198),(116, 90):应用于第一探测层 13 X 13;
(59, 119),(62, 45),(30, 61):应用于第二探测层 26 X 26;
(33, 23),(16, 30),(10, 13):应用于第三探测层 52 X 52;
这样在三个探测层上用9个大小不同的矩形框进行探测,可以更好得识别出图片上大大小小的目标物。
另外,在同一探测层,也用到了NMS,详情请参阅Faster R-CNN中的2.3.1 NMS。
3. Loss函数

4. DC-SPP-YOLO(Dense Connection and Spatial Pyramid Pooling Based YOLO for Object Detection)
这是对YOLO网络结构的一个优化提升,即在探测层前添加DC层和SPP层;
4.1 DC(Dense Connection)层
其结构如下:

其变换详情如下:

4.2 SPP(Improved Spatial Pyramid Pooling )层
其结构如下图所示:

4.3 DC-SPP-YOLO Model
其结构详情如下:


浙公网安备 33010602011771号