CVPR论文笔记-目标检测篇-YOLOv1&YOLOv2&YOLOv3

YOLOv1

1506.02640:You Only Look Once: Unified, Real-Time Object Detection
原文链接: https://arxiv.org/abs/1506.02640
摘要:
YOLO模型仅对完成图片进行一次评估,就可以预测物体的边框和类别的概率。模型的处理速度快,基础YOLO模型在1秒内处理45帧,FASTYOLO模型1秒内可以处理155帧,并且和其他最新成果相比具有两倍的准确率。但是YOLO模型的边框定位错误较高,但是对于背景的错误预测率很低。

文章贡献:
(1)YOLO模型的速度非常快,网络中只有一条简单的流水线,可以用于实时检测。
(2)YOLO模型通过处理整张图片进行预测,对于背景的识别很精确。
(3)YOLO模型高度概括了物体的特征。

模型设计:
首先将输入图片切割成S*S的网格,对于每个网格用来预测物体的锚框和confidence score。Confidence的定义是Pr(Classi|Object) *Pr(Object)*IOU,Pr(Classi|Object) 是物体属于第i类的概率,Pr(Object)的取值由物体是否在框中决定,IOU是锚框和ground truth的交并比。
a. 网络设计
由GoogLeNet启发,网络由24个卷积层和2个全连接层组成。FAST YOLO则是将卷积层的数量减少至9个。
CVPR论文笔记-目标检测篇-YOLOv1&YOLOv2&YOLOv3
b. 训练
作者采用的**函数是leaky RELU,当x<0时,y=0.1x。
CVPR论文笔记-目标检测篇-YOLOv1&YOLOv2&YOLOv3
在训练中,如果图片中的某一网格的不包含任何物体,这使得这些格子的置信度分数趋于0,经常会overpowering那些包含目标的格子的梯度,会导致模型不稳定。解决这个问题的方法是增加来自边界框坐标预测的损失值,然后降低不包含目标的边界框的损失值。设置的权重分别为5和0.5。
损失函数:
CVPR论文笔记-目标检测篇-YOLOv1&YOLOv2&YOLOv3
其中前两行是对锚框位置的损失值计算,第三行是对包含物体的锚框的置信度计算,第四行是对不包含物体的锚框的置信度计算,最后一行是对类别的损失值计算。
目前缺陷:
对于小物体或相邻物体的检测能力不强,因为一个网格的类别是唯一的,并且只有两个锚框。对于物体的新尺寸新情况的泛化能力弱。对于大小物体的损失值的尺度也不一样。错误主要来自定位错误。

YOLOv2

1612.08242:YOLO9000: Better, Faster, Stronger
原文链接: https://arxiv.org/abs/1612.08242
摘要:
作者提出YOLO9000模型,可用于超过9000种物体的实时检测。YOLOv2的性能可以和Faster-RCNN、ResNet相提并论,且速度更快,使用者可以在速度与精确度之间进行权衡。还提出了一种同时训练目标检测和分类的方法。

更好:
YOLO模型在锚框定位和召回率的问题都很大。但作者并不想通过加大网络规模来完成这一目标,于是做了一下优化:
(1)批量归一化: 加速了模型收敛,替代了其他形式的正则化方法,去除了dropout。在每个卷积层后都加上BN层,模型的mAP提升了2%。
(2)高分辨率分类器: YOLO把分辨率调整至448448,为了适应新分辨率,YOLO在ImageNet上调整了10个世代。最终高分辨率带来了4%的mAP提升。
(3)Convolutional With Anchor Boxes: YOLO通过全连接层预测边框的坐标,Faster R-CNN通过RPN预测锚框的偏移量和置信度,而偏移量更适合网络去学习。因此,作者取消了YOLO的全连接层。首先,去除了一个池化层保证输出的高分辨率,同时将输入改为416
416,为了使feature map有奇数个位置,因为物体更趋向于出现在中间位置。这个方法提高了模型的召回率(81%->88%),但mAP下降0.3。
(4)Dimension Clusters: 锚框的尺寸都是人工设定的,对模型的影响很大,所以在训练集上跑k-means聚类,可以获得更好的结果。
(5)Direct location prediction: 使用锚框会给模型带来不稳定性,这个问题主要来自锚框的定位。而原本的YOLO模型对于边框有一定的限制,为了使新模型的边框也得到控制,采用了逻辑**函数。Featuremap中的每个单元都有5个边框,每个边框对应5个参数tx、ty、tw、th和to。预测结果为:
CVPR论文笔记-目标检测篇-YOLOv1&YOLOv2&YOLOv3
cx和cy为偏移量,pw和ph为Bounding Boxes Prior 的宽度和高度。通过以上方法,使YOLO模型比其他的锚框模型的性能高5%。
(6)Fine-Grained Features: YOLO模型采用了2626大小的特征图,passthrough层抽取前面层的每个22的局部区域,然后将其转化为channel维度,对于2626512的特征图,经passthrough层处理之后就变成了13132048的新特征图。
(7)Multi-Scale Training: 为了增强模型的鲁棒性,YOLO模型会在几次迭代之后改变网络参数,每10个Batch,网络会随机地选择一个新的图片尺寸。在测试时可以选用不同大小的图片,对于较小的图片速度快,mAP值低,对于较大的图片速度较慢,mAP值高。
数据对比:
CVPR论文笔记-目标检测篇-YOLOv1&YOLOv2&YOLOv3
更快:
与VGG-16相比,YOLO模型采用的GoogLeNet计算量小,速度快,但精准度稍低。
(1)Darknet-19: YOLOv2提出的新的分类模型,卷积层采用33的卷积核,采用平均池化,每次池化后通道数翻倍,并采用批量归一化加速收敛。Darknet-19由19层卷积层和5个最大池化层组成,网络处理224224仅需要55.8亿次运算,比GoogLeNet更少,精度也很高。
(2)训练分类器: 数据集来自ImageNet的1000类物体,训练160个世代,0.1的学习率,0.0005的权值衰减,0.9的动量,处理448448的图像最终达到76.5%top-1精确度,93.3%top-5精确度。
(3)训练检测器: 网络的最后一个卷积层被替换成3
31024的卷积核的卷积层和一个11用来降维的卷积层。共训练160个世代,学习率0.001,0.0005的权重衰减和0.8的动量。

更强:
作者采用了分类器和检测器的联合训练,当网络识别到的数据是来自检测数据集时,将反向传播完整的损失函数,如果是分类数据集,就反向传播损失函数中检测类型的部分。但面临的问题是监测数据集的标签往往比较宽泛如“猫”“狗”的识别,而分类数据集的标签很细致,例如各种狗的种类,所以需要将这些标签融合。而且利用softmax对物体分类,物体的种类是独立的,所以对于一个物体他只能有自己的特性而没有和其他类的共性。作者最终采用了一种多标签模型来训练。
(1)Hierarchical classification: WordNet是一个语言概念和联系的数据库,在WordNet中“Norfolk terrier” 和“Yorkshire terrier”都是“terrier”,也都是猎犬,也都是狗。WordNet是以图的形式存在,但是为了简化问题,为ImageNet建立了层级树(hierarchical tree)的概念。
为了建立这个树,首先检查 ImageNet 中出现的名词,再在 WordNet 中找到这些名词,并找到这些名词到达他们根结点的路径,大多数同义词只有一个路径,把这条路径中的词全部都加到层级树中。如果遇到多条路径,则取最短路径加入到树中。
子结点相对于父结点的概率计算是:
CVPR论文笔记-目标检测篇-YOLOv1&YOLOv2&YOLOv3
子结点相对于根结点的概率计算是逐层向上传递:
CVPR论文笔记-目标检测篇-YOLOv1&YOLOv2&YOLOv3
为了验证这个方法,在WordTree上训练Darknet19,使用1000类的ImageNet进行训练,建成后的WordtTree 1K的标签数1000扩大到了1369。在训练过程中,如果有一个图片的标签是“Norfolk terrier”,那么这个图片还会获得”狗“(dog)以及“哺乳动物”(mammal)等标签。总之现在一张图片是多标记的,标记之间不需要相互独立。通过训练,最终达到了71.9%的top-1 accuracy和90.6%的top-5 accuracy。
(2)Dataset combination with WordTree: 使用WordTree将多个数据集合并,将其中的类别映射到分层树中的同义词上
(3)Joint classification and detection: 作者结合了COCO检测数据集和ImageNet的9000类数据,最终得到9418个标签的WordTree。最终的结果显示,YOLO9000获得了19.7的mAP,在未识别过的156类物体的mAP达到了16.0。

总结:
YOLOv2的速度比其他检测模型要快且识别的范围最广,是实时的目标检测模型,可以应用到各种尺寸的图像,使用者还可以在速度与精确度之间进行权衡。使用WordTree结合数据集极大的扩充了模型的分类空间。在未来,作者希望通过弱监督学习进一步提升模型的性能。

YOLOv3

原文链接: https://pjreddie.com/media/files/papers/YOLOv3.pdf
1804.02767:YOLOv3: An Incremental Improvement
YOLOv2的更新,网络的规模加大了,但是准确度相应提升。

Bounding Box Prediction:
还是和之前的YOLO模型一样,边框用四个值tx,ty,tw和th表示。YOLOv3采用逻辑回归来预测边框,每个边框会有一个objectness score,当这个值取决于边框与ground truth的重合程度。
Class Prediction:
每个边界框的物体都可能需要多标签分类,而softmax对这样的分类是没有必要的,所以被逻辑回归替代。
Predictions Across Scales:
YOLO提供了三种尺度的边框,预测得到一个三维张量编码:边界框,框中目标和分类预测,N ×N ×[3∗(4+ 1+ 80)],其中包含4个边界框offset、1个目标预测以及80种分类预测。(中间一部分没懂)和之前一样,YOLOv3继续采用k-means聚类。
Feature Extractor:
YOLOv3融合了Darknet-19和残差网络,使网络更加复杂,模型更加强大,由53个卷积层组成Darknet-53。效率上可匹敌ResNet-101和ResNet-152,速度却远超他们。

和其他网络相比速度和性能:
CVPR论文笔记-目标检测篇-YOLOv1&YOLOv2&YOLOv3

完结撒花!
欢迎大家评论吐槽!