《YOLOv3: An Incremental Improvement》论文笔记

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m_buddy/article/details/82765660

1. 论文工作

在这篇文章中又对之前的YOLO-v2进行了优化,优化之后的网络变大了,准确率也提升了。但是,升级之后得到的YOLO-v3也是一样的快。在分辨率 320 320 320*320 的情况下运行只需要22ms且拥有28.2mAP,比同精度SSD快三倍。使用老的0.5AP检测度量,YOLO-v3运行只要51ms并且取得57.9 A P 50 AP_{50} 。这都是好于RetinaNet的,速度比它快3.8倍。
在这里插入图片描述

2. 优化细节

2.1 边界框预测

在YOLO9000中使用锚点框与维度聚类实现边界预测。下面这张图就是YOLO-v2里面的图
在这里插入图片描述
在YOLO9000中使用的损失函数,而在YOLO-v3中使用逻辑回归预测每个边界框的对象评分。如果边界框先验与ground truth重叠是多余于其他边界框先验的,那么该值应该是1。如果边界框先验与ground truth重叠没有超过设定好的阈值,则就会将其抛弃掉,一般来讲阈值为0.5。论文中为每个ground truth对象预先分配一个边界框。如果一个边界框先验没有被分配给一个ground truth对象,那么它不会导致坐标或类预测的损失。

2.2 分类预测

对于每个框使用多标签分类预测可能包含的类。这里将softmax替换为了逻辑分类,以获得更好的性能。在训练过程中,使用二元交叉熵损失进行分类预测。
当转移到更复杂的领域,比如开放图像数据集时,这个办法会有所帮助。在这个数据集中有许多重叠的标签(即女人和人)。使用softmax强加了这样的假设,即每个框只有一个类,而实际情况往往不是这样。多标签方法可以更好地建模数据。

2.3跨尺度进行预测

YOLO-v3在三个不同的尺度上预测边界框。使用的是类似于金字塔网络的概念从这些尺度中提取特征。在基本特征提取器中添加了几个卷积层。最后一个预测了一个3-d张量编码边界框,对象,和分类类预测。在COCO数据集上对每个尺度上预测三个边界框,因而输出的三维张量就可以描述为 N N [ 3 ( 4 + 1 + 80 ) ) ] N*N[3*(4+1+80))] ,包含4个边界框偏移,是否是目标以及80类预测。
接下来,从之前的两个层提取特征映射,并以2倍向上采样。除此之外还从网络的前端获取一个特征映射,并使用连接将其与我们的上采样特征合并。这种方法是的可以从上采样的特征中获得更有意义的语义信息,从早期的特征映射中获得更细粒度的信息。然后添加更多的卷积层来处理这个组合特征图,并最终预测出一个类似的张量,尽管现在是它的两倍大。

2.4 特征抽取网络

YOLO-v3使用了新的特征抽取网络结构,部分借鉴了YOLO-v2中的DarkNet-19,并且加入了shortcut connections,最后使得网络有53个卷积层,因而网络的名字是DarkNet-53。
在这里插入图片描述
新的网络自然也更加牛皮了,论文里面给出了该网络与DarkNet-19与ResNet-100+的比较:
在这里插入图片描述

3. YOLO-v3与其它网络的对比

论文中将YOLO-v3与其它检测网络进行对比,得到如下表格
在这里插入图片描述
值的一提的是,在YOLO-v3中使用多尺度预测的方式提升了小目标检测的性能。但是相对的对于中等以及大目标结果变得稍差一些。

4. 之前踩过的坑

作者在研究YOLO-v3的时候试过很多种方法,但是很多被证实是没用的,论文里面罗列了一些出来。
(1)边界框x,y偏移预测。作者尝试使用常规的锚点框预测机制,用线性激活来预测x, y偏移量作为边界框宽度或高度的倍数。但是发现这种方法降低了模型的稳定性,并没有很好地工作。
(2)线性x, y的预测,而不是逻辑。尝试使用线性激活去预测 ( x , y ) (x, y) 的偏移而不是逻辑激活,这导致了mAP的下降几个点。
(3)焦点损失函数。试过在网络中加入焦点损失函数,但是发现mAP下降了2个点,这或许是YOLO-v3对于焦点损失要解决的问题已经足够好了。
(4)双重IOU阈值。借鉴了Faster R-CNN训练中的双重阈值机制,但是没有取得好的结果。

猜你喜欢

转载自blog.csdn.net/m_buddy/article/details/82765660