8

目标检测 | YOLOv3 开启的回归网络下的多尺度策略

 3 years ago
source link: https://bbs.cvmart.net/articles/362
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

目标检测 | YOLOv3 开启的回归网络下的多尺度策略

1年前 ⋅ 3025 ⋅ 2 ⋅ 1

通过文章目标检测 | 让YOLOv1算法告诉你回归网络的能力目标检测 | 让YOLOv2告诉你Trick的力量讲述了YOLO算法的原理和部分改进策略。YOLO系列算法在刚被提出时其目的在于提升检测网络的速度,因此其算法的召回率和检测率相对于Faster RCNN系列算法会要低一些。作者为了提升YOLO算法的实用性,提出了YOLOv2,在不损失速度的情况下提升了网络精度。但从下图的左图中我们可以发现,在输入同等级分辨率图片的情况下,YOLOv2的精度是没有SSD系列算法好的。而YOLOv3的提出,彻底稳固了YOLO系列算法的地位,因为如下图右图所示YOLOv3使得YOLO系列算法的性能超越了SSD系列。因此本文就从原理上来简单阐述下YOLOv3算法的主要改进点,后续会针对YOLOv3算法解析darknet框架下的训练源码。

2.改进点

1.box是否含有物体改进
利用logistic回归计算每个bounding box是否含有物体(二分类:有或者没有)。在该过程中,之前的YOLOv2算法是看ground truth的位置中心坐标在哪,来判定当前bounding box是否含有物体。而在YOLOv3中将与ground truth的IOU最大的那个bounding box认为是包含该物体,因此YOLOv3的特点是每个ground truth都仅仅分配一个bounding box。对于那些没有被分配的bounding box,网络计算损失时,仅仅计算是否包含物体损失,不计算坐标和类概率损失。

2.类概率预测改进
对于类概率预测,在YOLOv2中是直接利用softmax进行类概率预测。而在YOLOv3中对于每一个类,使用独立的logistic分类器,使用交叉熵损失计算类概率损失。用这种策略的原因是,考虑到在利用softmax分类时,需要把所有的类别独立开来(one hot编码的特点),但是一旦遇到如(女人 ,人)这种包含类别时,用softmax就不是那么合适了。因此才引入logistic分类器结合多标签,来处理此类问题。

3.多尺度检测策略改进
YOLOv3的多尺度策略在三个不同的尺度作detection。
v2只有一个detection,v3一下变成了3个,在3个不同尺度的feature map上进行detection。在输入为416的情况下这三个特征图的尺度为13*13,26*26,52*52,这应该是对小目标影响最大的地方。
如下图所示,在输入为640*352的情况下,三个不同尺度的detection位置和特征图大小(分辨率搞成宽高不一样,感觉更直观一点)。

70  conv        27    1*1/1  20*11*256 ->  20*11*27 
71  detection
72  route       29
73  conv        256   3*3/2  80*44*128 ->  40*22*256
74  route      73 48  
75  conv        256   1*1/1  40*22*512 ->  40*22*256
76  conv        256   3*3/1  40*22*512 ->  40*22*256
77  conv        256   1*1/1  40*22*512 ->  40*22*256
78  conv        27    1*1/1  40*22*512 ->  40*22*27
79  detection
80  route       10
81  conv        128   3*3/2  160*88*64 ->  80*44*128
82  route      81 29  
83  conv        256   1*1/1  80*44*256 ->  80*44*256
84  conv        256   3*3/1  80*44*256 ->  80*44*256
85  conv        256   1*1/1  80*44*256 ->  80*44*256
86  conv        27    1*1/1  80*44*256 ->  80*44*27
87  detection

3.YOLOv3的网络框架图

如下图所示,左边虚线框就是YOLOv3网络的特征提取模块的示意图,以416分辨率的图像作为输入,根据网络的深入,会产生3中不同尺度的特征图(52,26,13),YOLOv3在这三个尺度上进行不同尺度的目标检测。

如上图的框架所示,我们发现整个网络中用到了上采样操作,这其实是一种相对比较耗时,而且性价比不高的手段,因此在我用YOLOv3网络时做了一点小改动,在不损失网络精度和网络思想的前提下去掉网络的上采样过程。思路就如下图所示,通过stride为2的卷积实现下采样,最终也能实现三个尺度的detection,而且可以不用到上采样操作。

本文简单介绍了一下YOLOv3的策略,后续会更新一些YOLOv3的源码解读,欢迎持续关注~

版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK