一:YOLO_v3改进
相对于YOLO_v2的缺陷,v3版本又进一步升级,更适合小目标检测了,同时还有其他的改进,想了解v2版本的话可以看看本人写的另一篇YOLO_v2详解,下面列出v3中几处改进:
- Darknet-53的提出
- 多尺度预测
- softmax改进,适合多标签任务
二:网络模型
YOLO v3的模型比之前的模型复杂了不少,仅使用卷积层,使其成为一个全卷积网络(FCN),可以通过改变模型结构的大小来权衡速度与精度。下面我对网络细节进行讲解。
三:细节描述
【Darknet-53】
作者提出一个新的特征提取网络,Darknet-53
(类ResNet)。正如其名,它包含53个卷积层,每个后面跟随着batch normalization层和leaky ReLU层。没有池化层,使用步幅为2的卷积层替代池化层进行特征图的降采样过程,这样可以有效阻止由于池化层导致的低层级特征的损失。
【多尺度预测】
其实就是把三种尺寸大小的anchor分配给三种大小的特征图,这样可以很好的针对性检测出不同尺寸大小的物体,其实就是上图中的右侧部分,具体方法如下:
YOLO v3的Bounding Box由YOLOV2又做出了更好的改进。在yolo_v2和yolo_v3中,都采用了对图像中的object采用k-means聚类。feature map中的每一个cell都会预测3个边界框(bounding box)。
三次检测,每次对应的感受野不同,32倍降采样的感受野最大,适合检测大的目标,所以在输入为416×416时,每个cell的三个anchor box为(116 ,90); (156 ,198); (373 ,326)。16倍适合一般大小的物体,anchor box为(30,61); (62,45); (59,119)。8倍的感受野最小,适合检测小目标,因此anchor box为(10,13); (16,30); (33,23)。所以当输入为416×416时,实际总共有(52×52+26×26+13×13)×3=10647个proposal box。
【softmax改进】
物体分数表示一个边界框包含一个物体的概率,对于红色框和其周围的框几乎都为1,但边角的框可能几乎都为0。物体分数也通过一个sigmoid函数,表示概率值。
类置信度表示检测到的物体属于一个具体类的概率值,以前的YOLO版本使用softmax将类分数转化为类概率(训练时是MSE,这里说的是实际测试时)。在YOLOv3中作者决定使用sigmoid函数取代,原因是softmax假设类之间都是互斥的,例如属于“Person”就不能表示属于“Woman”,然而很多情况是这个物体既是“Person”也是“Woman”。
三:总结
YOLO系列到V3版本,其实已经很完善了,对于后面的v4和v5版本,其实都是缝合怪,后面还会持续更新YOLO系列,谢谢。
至此我对YOLO_v3的原理,进行了简单讲解,希望对大家有所帮助,有不懂的地方或者建议,欢迎大家在下方留言评论。
我是努力在CV泥潭中摸爬滚打的江南咸鱼,我们一起努力,不留遗憾!