YOLOv3论文笔记

YOLOv3是YOLO的改进版本,新的网络更大更准确,并且图片处理的速度依然很快。
项目代码

1、解决什么问题


多尺度预测 (类FPN)
更好的基础分类网络(类ResNet)和分类器

2、使用什么方法


- bounding box预测
使用维度聚类(dimension cluster)作为anchor box来预测边界框(bounding box)。
每个边界框4个参数(tx,ty,tw,th),如果边界框相对于图片左上角偏移(cx,cy)并且前面的边界框(bounding box prior?边界框先验?)大小为(pw, ph),那么对边界框的位置的预测为:
YOLOv3论文笔记
YOLOv3论文笔记
loss使用的是均方误差(squared error);
使用逻辑回归预测每个边框里面对象的分数,若某个边界框与真实值的相似度大于别的边界框,那么这个分数就是1。设置了一个阈值0.5,当边界框不是与真实值重合得最好的但是大于该阈值时,不进行预测。只为每一个真实值(ground truth)分配一个边界框,如果没有将边界框分配给一个真实值,只会导致objectness的loss而不影响coordinate和prediction的loss。
- 类别预测
每个框使用多个分类标签预测边界框可能包含的类。 这里分类的**函数不使用softmax,因为我们发现如果想要达到良好的性能,softmax不是必要的,只是使用独立的逻辑分类器就可以达到。在训练期间,使用二元交叉熵损失函数进行类预测。
当迁移到更复杂的领域(如Open Images Dataset [7])时,这个公式会有所帮助。 在这个数据集中有许多重叠的标签(即女人和人)。 使用softmax假设每个盒子只有一个类别,而实际情况通常并非如此。 多标签方法可以更好地模拟数据。
- 多尺度预测(Predictions Across Scales)
YOLOv3在三个不同的尺度预测box。使用Open Image数据集来提取这三个不同尺度的特征。
尺度1: 在基础网络之后添加一些卷积层再输出box信息.
尺度2: 从尺度1中的倒数第二层的卷积层上采样(x2)再与最后一个16x16大小的特征图相加,再次通过多个卷积后输出box信息.相比尺度1变大两倍.
尺度3: 与尺度2类似,使用了32x32大小的特征图.
YOLOv3论文笔记
使用k-means聚类来确定边界框:任意选择9个cluster和三个尺度,然后在尺度上均匀的划分cluster。在COCO数据集中的9个cluster为:
YOLOv3论文笔记
这个cluster表示什么?
- 特征提取
特征提取使用的是另一个全新的网络,该网络是YOLOv2、Darknet-19和Resnet的混合体,一共有53个卷积层,所以称之为Darknet53。
YOLOv3论文笔记
Darknet53比Darknet19更强大,比Resnet101和Resnet102效率更高:
YOLOv3论文笔记
以256*256大小的图片测试,
Darknet-53的性能与最先进的分类器相当,但浮点运算更少,速度更快,
Darknet-53比ResNet-101更好,速度提高1.5倍。 Darknet-53具有与ResNet-152相似的性能,速度提高了2倍。
- 训练
直接输入完整的图像进行训练,训练过程中加入了以下操作:
multi-scale
data augmentation
batch normalization
等等?
使用Darknet神经网络框架进行培训和测试。

3、相关工作


作者做了一些工作但是效果都不太好,比如对于偏移量x,y的预测使用线性方法而非回归方法等。

4、效果


- 对于320*320的输入,用时22ms,达到28.2mAP,准确率与SSD一样,但是速度**倍。
- 在Titan X上运行达到57.9 AP(50)用时51ms,相对而言,RetinaNet达到57.5 AP(50)用时198ms,一样的效果,YOLOv3快3.8倍。

5、还存在什么问题


- YOLOv3是一个非常强大的detector,擅长为物体产生合适的box。但是随着IOU阈值的增加,性能显着下降,表明YOLOv3努力让盒子与物体完美对齐。
- 对于小物体的检测效果以及有了提高,通过多尺度的预测提高了APS性能,但是在中型和大型物体上性能较差(为什么?)

作者在论文最后说的话,必须po出来
YOLOv3论文笔记
YOLOv3论文笔记

YOLOv1-v3进化史 讲的简单易懂,值得借鉴