You Only Look Once: Unified, Real-Time Object Detection
摘要
(1)将目标检测的设计看做是一个回归问题,从空间上分割边界框和类别的概率。
(2)在一次评估中,仅用一个神经网络就能预测整张图像的边界框和类别概率。
(3)特点:
1.检测速度非常快。
2.与其他实时检测系统相比能实现较高的mAP。
3.与其他先进的检测模型相比,定位误差更高,但不太可能将背景检测成目标(FP)。
4.能够学到非常泛化的表示。
1 介绍
(1)RPN网络的一些弊端:
1.使用区域候选的方法首选生成一些潜在的边框,然后在上面运行分类器
2.改善边框,消除重复检测,根据场景中的其他目标给这些边框重新打分。
3.因为每一个组件都必须被分开单独训练,所以慢而且很难优化。
(2)YOLO的特点:
1.速度快。将检测作为一个回归问题,不需要复杂的管道。可以实时处理流视频且平均精度是其他实时系统的两倍多。
2.YOLO在进行预测时会从整张图像进行推理,因此他隐式的编码有关类及其外观信息。Fast R-CNN 是一种顶级检测方法,他错误的描述了对象中的背景补丁,因为他无法看到更大的上下文。
3.YOLO学习到目标的泛化的表示,当其应用到新的领域或没有预料到的输出时不太可能会崩溃。
4.YOLO比其他先进的系统的精确率要低,虽然他能快速的识别一张图像中的目标,但是对定位小目标却相当困难。
小目标往往更依赖于浅层特征,因为浅层特征有更高的分辨率然而对语义的区分较差。
如果‘绝对尺寸’小的话,到了一定的深度的特征图后,小目标可能已经丢失response.
考虑降低层数,减少池化等操作。
SSD和YOLO对小目标检测的思考
2 统一的检测
(1)我们将目标检测的各个部分统一到单独的一个网络,我们的网络使用整个图像的特征来预测边界框。他还可以同时预测所有类别的所有边界框。
(2)检测流程
1.我们的系统将图像分成s*s个网格,目标的中心落入一个格子中,那个格子负责检测这个目标。
2.每一个格子预测B个边框和这些边框的置信度。置信度反应了模型对这些边框中是否有目标和边框的精确度的预测的信心。形式上置信度=
P
r
(
O
b
j
e
c
t
)
∗
I
O
U
t
r
u
t
h
p
r
e
d
Pr(Object) ∗IOU \frac{truth}{pred}
Pr(Object)∗IOUpredtruth
如果没有目标存在则置信度为0。
3.每一个边框包含5个预测值,x,y,w,h,confidence.
4.每一个网格在有目标的条件下预测C个条件类别概率 Pr(Class i |Object)。无论一个网格有多少个边框,只预测一个类别概率的集合
5.在测试时,我们将条件类别概率乘以边框预测的置信度得到每个边框明确的类别的置信度。这个置信度编码了那个类别出现在那个边框中的可能性和那个边框是否适合那个目标。
p
r
(
C
l
a
s
s
i
∣
O
b
j
e
c
t
)
∗
p
r
(
O
b
j
e
c
t
)
∗
I
O
U
t
r
u
t
h
p
r
e
d
=
p
r
(
C
l
a
s
s
i
)
∗
I
O
U
t
r
u
t
h
p
r
e
d
pr(Class_i|Object) * pr(Object) * IOU\frac{truth}{pred} = pr(Class_i) * IOU\frac{truth}{pred}
pr(Classi∣Object)∗pr(Object)∗IOUpredtruth=pr(Classi)∗IOUpredtruth
2.1 网络的设计
(1)初始的卷积层用来提取图片的特征,全连接层用来输出可能性和坐标。使用24个卷积层和两个全连接层,在3*3的卷积层后面使用1*1的卷积层,交替使用减少前一层的特征空间。
2.2 训练
(1)在ImageNet上进行预训练,使用前20个卷积层,跟随一个平均池化层和全连接层。
(2)预训练之后,在后面添加4个卷积层和两个全连接层,他们的权值随机初始化。检测通常需要高清的视觉信息,所以我们将分辨率从224*224升到448*448.
(3)最后一层预测类别概率和边界框坐标。我们通过图像的宽度和高度来规格化边界框的宽度和高度,使他们落在0-1间。我们将边界框x和y坐标参数化为特定网格单元位置的偏移量,因此他们也在0-1间有界。
(4)除最后一层使用线性激活函数外,其他层使用Leaky Relu激活
(5)在我们的模型中,在输出中优化平方损失函数。使用平方损失函数因为他很容易操
作,但他并不完全符合我们最大化平均均度的目标。它对定位误差和分类误差的权重相等,可能并不理想。一张图像中包含很多背景的单元,这些网格的置信度为0,通常会压到包含目标网格的梯度。这可能会导致模型不稳定。
(6)为了解决这个问题,我们增加了边框坐标预测的损失,减少了边框中不包含目标的置信度预测的损失。我们使用两个参数 λ c o o d = 5 , λ n o o b j = 0.5 λ _{cood}=5, λ_{noobj}=0.5 λcood=5,λnoobj=0.5
(7)平方和误差在大边框和小边框中同样重要,在小边框中的小偏差更加重要。为了解决这个问题,我们预测边界框的高度和宽度的平方根。
(8)YOLO每个格子中预测多个边框。我们指定一个预测的边框,他和目标的真实位置和大小有较高的交并比,来负责预测目标。这导致边框预测器的专门化,每一个预测器都变得更好,在预测特定的大小,长宽比,对象的类别,从而整体提高了召回率。
最后是7*7*30的输出矩阵,7是格子大小,30:每个边框的参数是5(x,y,w,h,c),最后20个是类别(只输出0或1即只预测一种类别,到v2v3用anchor box,可预测多种类别)。
(9)在训练中我们优化以下损失函数:
S:格子,B:边框,C:类别
1.第一项表示边界框中心的坐标项,第二项表示边界框长宽的参数
第三项表示置信度的参数,第四项表示没有目标的边界框的置信度的误差项,
第五项表示包含目标的单元格的分类误差项。
2.loss函数只在单元格中出现目标时才计算分类误差,没有误差项时就只有置信度。
他只计算边界框坐标误差,如果该预测期负责真实的边框(即该网格单元中有最高的IOU预测器)(只有一个和这个目标最接近的bounding box计算obj,其他都就算noob)
(论文中的是否存在指的是目标的中心点是否存在,而不是目标的一部分是否存在)
3.我们学习率的安排是这样的:第一个迭代,我们将学习率从 1 0 − 3 缓 慢 上 升 到 1 0 − 2 10^{-3}缓慢上升到10^{-2} 10−3缓慢上升到10−2,如果我们开始是一个高的学习率的话,我们的模型会因为梯度的不稳定而偏离。我们继续以 1 0 − 2 训 练 75 迭 代 , 然 后 1 0 − 3 训 练 30 个 迭 代 , 最 后 1 0 − 4 训 练 30 个 迭 代 10^{-2}训练75迭代,然后10^{-3}训练30个迭代,最后10^{-4}训练30个迭代 10−2训练75迭代,然后10−3训练30个迭代,最后10−4训练30个迭代
4.为了避免过拟合,我们使用了池化层和广泛地数据增强。在第一个全连接层后面加一个0.5比例的池化层用于阻止层间的互相适应。为了数据增强,我们将原图像尺寸的随机规模和平移上升到20%。我们还随机调整曝光和饱和度的图像上升到1.5倍的HSV空间。
2.3 推论
一些大的或靠近边界的目标可以被多个格子很好的检测,非极大值抑制可以修复这一点。
2.4 YOLO限制
空间限制:YOLO对边界框做了很强的空间约束,因为每个网格只能预测两个框,并且只有一个类。这种空间的约束限制了模型可以预测的附近的物体的数量,当遇到成群的小目标时效果很差。
泛化限制:因为我们的模型从数据中学习,因此他对于新目标或不寻常的横纵比或配置效果不好。我们的模型也使用了相对粗糙的特征来预测边框,因为我们的架构从输入的图像中有多个降像素的层。
大小边框误差的影响:当训练一个接近检测性能的损失函数时,对待大边框和小边框是一样的。大边框中的错误通常是良性的,小边框中的错误往往要大的多。主要的错误来源于不正确的定位。(网格设置比较稀疏,且一个格子只有两种类型的边框,池化层会丢失信息)
3 和其他的检测系统相比
(1)DPM(Defornable parts models)可变形的零件模型
1.DPM使用滑动窗口方法来检测对象。
2.DPM使用一个不连续的流程来提取静态特征,对区域进行分类,为高得分的区域划分边界框。
3.YOLO用一个卷积网络替代了这些,同时进行特征提取,边界框预测,非极大值抑制,前后关系推理。
4.与静态特性不同,网络在线训练特性并优化他们。比DPM更快更准确。
(2)R-CNN
1.R-CNN及其变体使用区域候选框代替滑动窗口去发现图像中的目标。
2.选择性的生成边界框,卷积网络提取特征,svm对边框打分,线性模型调整边框,非极大值抑制消除重复检测。这个流程里每个阶段都必须独立的精确的调优,导致系统运行很慢,在测试时每张图片花费40s.
3.YOLO与R-CNN共享某些特性。每一个格子生成潜在的边框,使用卷积特征为这些边框打分,但是YOLO在每个网格单元生成候选框时进行了空间限制,有效减缓对同一个目标进行了多次检测。每张图像生成更少的候选边框98(7*7*2),相对于R-CNN的2000.
4最后YOLO结合每个单独的组件与一个联合的优化模型。
(3)YOLO与Fast R-CNN,Faster R-CNN,Deep MultiBox,OverFeat,MultiGrasp等检测器的对比。
4.实验
通过实验表明,YOLO可以减少背景的误报,从而显著提高性能。比其他检测器更好的泛化到新的领域。但是定位误差高。(因为YOLO一次卷积可以处理整张图的特征,保存上下文信息,看到的是整张图的信息所以更容易识别背景)
4.1与其他实时检测系统比较
(1)YOLO比一般的实时检测系统的速度和准确率都要好,但是比Fast R-CNN的mAP要低。
(2)我们还使用VGG-16来训练YOLO,这个模型比YOLO更精确,但是也慢的多。
(3)R-CNN,缺乏实时性,没有好的候选框导致准确性收到了很大的打击。
Fast R-CNN 加快了R-CNN分类阶段,但任然依赖于选择性搜索,每幅图需要大约2秒来生成候选边框。
Faster R-CNN 用一个神经网络代替了选择性搜索。
Faster R-CNN 版本中的VGG-16比YOLO高10倍的准确率,但比YOLO慢6倍。
4.2VOC 2007 Error Analysis
4.3 结合Fast R-CNN 和 YOLO
(1)YOLO犯的背景错误比Fast R-CNN少的多,通过YOLO来消除Fast R-CNN的的背景设置,我们得到了显著的性能提升。
(2)对于R-CNN预测的每个边界框,我们检查YOLO是否预测了一个类似的框。如果有,我们将根据YOLO预测的概率和两个边框重叠的部分来提升预测。
(3)用最佳版本的Fast R-CNN与各种模型结合,结果显示,其他版本的Fast R-CNN 只提供了很小的益处,而YOLO提供了显著的性能提升。
(4)正是因为YOLO在测试时犯了不同种类的错误,他才如此有效的提高了Fast R-CNN的表现。
(5)虽然这种组合并不能从YOLO的速度中受益,因为我们分别运行每个模型然后将结果组合在一起。
但是由于YOLO计算速度很快并不会增加重要的计算时间。
4.4 VOC 2012 Results
4.5 泛化:艺术作品中的人物检测
5.野外中的实时检测
6.总结
(1)模型构造简单,可以直接在整副图像上训练。
(2)与基于分类器的方法不同,YOLO针对一个直接对应于检测性能的损失函数进行训练,并对整个模型进行联合训练。
(3)YOLO是文献中最快的通用对象检测工具,YOLO推动了实时对象检测的发展。
(4)YOLO还可以很好的推广到新的领域,这使得它非常适合依赖于快速,健壮的对象检测的应用程序。
提问:
YOLO可以减少背景的误报
(因为YOLO一次卷积可以处理整张图的特征,保存上下文信息,看到的是整张图的信息所以更容易识别背景)
当训练一个接近检测性能的损失函数时,对待大边框和小边框是一样的。大边框中的错误通常是良性的,小边框中的错误往往要大的多。主要的错误来源于不正确的定位。
(网格设置比较稀疏,且一个格子只有两种类型的边框,池化层会丢失信息)
正是因为YOLO在测试时犯了不同种类的错误,他才如此有效的提高了Fast R-CNN的表现。
batch_size越大学习率越大(真正比)?
conner net,center net
转置卷积,反卷积