论文笔记-YOLOv3: An Incremental Improvement

1. YOLOv3的改进

1.1 边界框预测

YOLOv2的边界框预测引入了anchor boxes。每一个边界框由网络预测出的4个坐标表示,分别为tx,ty,tw,th。网格相对图像左上角的距离为(cx,cy),真实边界框的宽度和高度为pw,ph,那么预测边界框的坐标就为:
这里写图片描述
YOLOv3使用logistic回归来预测每一个边界框的对象分数。如果一个真实边界框交叠一个真实对象的面积超过任何其它的真实边界框,那么这个边界框的对象分数就是1。如果一个真实边界框确实交叠一个真实对象面积超过了一个阈值,但是它还不是最好的,那么我们就忽略预测。每一个真实对象只与一个真实边界框对应。

1.2 分类预测

每一个边界框采用多标签分类的方法来预测边框中包含的类别。不再使用softmax,而是采用独立的logistic分类器。使用分类预测的交叉熵损失作为代价函数。

这种方案使得网络可以在更复杂的数据集上运行,例如Open Images Dataset。在这个数据集中有很多交叠的标签,如女人和人。使用softmax引入了每一个边界框都确定的包含一类对象的假设,但是有时并不是这样的。多标签方法能够更好的拟合数据。

1.3 横跨多个规模进行预测 Prediction Across Scales

YOLOv3在三种不同的规模上预测边框。整个网络采用一种金字塔的形式,从不同的卷积层提取出3种不同规模的特征映射,在各自以特征映射作为卷积网络的输入,分别预测出3个anchor boxes。

规模1:在YOLOv2网络的基础上,再添加几层卷积层。网络的最后输出一个N*N*[3*(4+1+80)]的tensor1。

N*N:分割图像的网格数
33个预测边界框
4:每一个anchor box的4个坐标
1:每一个anchor box包含对象的概率
80:每一个anchor box预测80个类别

规模2:将规模1输出的特征映射进行上采样,将尺寸扩大2倍;取规模1网络的倒数第二层卷积输出的特征映射,与扩大后的规模1网络输出的特征映射相叠加,得到一个叠加后的特征映射。再将这个叠加后的特征映射输入到一个卷积网络中,得到一个形状与tensor1相似,知识尺寸扩大2倍的tensor2。

规模3:采用相同的思路,将规模2的映射上采样,将尺寸再扩大2倍;去规模1网络的倒数第三层卷积输出的特征映射,将两个特征映射进行叠加。然后预测3个anchor boxes。

YOLOv3仍然使用k-means聚类来选择anchor boxes。按照大小排序了9个类,将9个类任意分成3个规模。在COCO数据集上,分别为(10*13),(16*30),(33*23),(30*61),(62*45),(59*119),(116*90),(156*198),(373*326)。

1.4 特征提取

使用了一个新的网络来进行特征提取。与v2相比较,除了层数增加外,最大的变化就是加入了残差网络,防止过深的网络造成梯度消失。
这里写图片描述
这个网络被起名叫DarkNet-53,因为有53个卷积层。该网络比DarkNet-19,ResNet-101和ResNet-152的性能都要优越。下面是对比:
这里写图片描述

1.5 训练

作者仍然训练完整的图像。使用了多规模训练,大量的数据增强,批量归一化和所有的标准组件。

2. YOLOv3与其它网络的性能对比

这里写图片描述

扫描二维码关注公众号,回复: 2249022 查看本文章

3. 作者尝试的,没有起作用的方法

Anchor boxes x,y补偿预测
网络尝试将anchor boxes的坐标x和y作为边界框宽度和高度的倍数进行预测,但是效果不好,使模型容易不稳定。

用线性x,y预测取代logistic预测
尝试使用线性激活,取代logistic激活,这导致mAP下降了2个点。

Focal loss
尝试使用focal loss。这导致mAP下降2个点。

双IOU阈值和真实分配
Faster R-CNN在训练过程中采用双阈值。如果一个预测与真实的IOU超过0.7,那它就是一个正例,如果IOU在0.3到0.7之间,那它就被忽略,小于0.3,就是一个负例。作者尝试了这种方案,但是效果不好。
这里写图片描述

猜你喜欢

转载自blog.csdn.net/liven_zhu/article/details/80726587