文章目录[隐藏]
原文链接:https://arxiv.org/pdf/1506.02640v5.pdf
2016年发表在CVPR上
摘要
- 先前的目标检测工作重新利用分类器来执行检测。我们把目标检测设计为空间分离的边界框和相关的类概率的回归问题。
- 比之前的模型快。每秒45帧实时处理图像。更小的版本Fast YOLO每秒155帧同时仍然达到其他实时检测器的mAP的两倍。
- 与最先进的检测系统相比,YOLO的定位误差更大,但预测背景误报的可能性更小。
- YOLO学习非常通用的目标表示。当从自然图像到其他领域如艺术品时,它优于其他检测方法,包括DPM和R-CNN。
1 介绍
- 目前的检测系统重新使用分类器来执行检测。为了检测一个目标,这些系统为该目标取一个分类器,并在测试图像的不同位置和比例上评估它。像可变形部件模型(DPM)这样的系统使用滑动窗口方法,分类器在整个图像上均匀间隔的位置运行。
- 首近期的方法像R-CNN使用区域建议方法,首先在图像中生成可能的边界框,然后在这些建议的框上运行分类器。分类后,利用后处理对边界框进行细化,消除重复检测,并基于场景中的其他目标对边界框进行重标记。这些复杂的解决方啊是缓慢和难以优化的,因为每个单独的组件必须单独训练。
- 我们将目标检测重构为一个单一的回归问题,直接从图像像素到边界框坐标和类概率。只看一张图像一次(YOLO),就可以预测有什么物体存在以及它们在哪里。
YOLO检测系统。(1)将输入图像的大小调整为448 × 448,(2)在图像上运行一个单一的卷积网络,(3)根据模型的置信度对产生的检测进行阈值设置。- 一个卷积网络可以同时预测多个边界框和这些框的类概率。与传统的目标检测方法相比,YOLO有如下优点:
(1)速度非常快。由于YOLO中的帧检测是一个回归问题,所以不需要复杂的解决方案,只需在测试时间对新图像运行神经网络来预测检测结果。
(2)YOLO在全局范围内进行预测。与基于滑动窗口和区域提议的技术不同,YOLO在训练和测试期间看到整个图像,因此它隐式地编码关于类及其外观的上下文信息。Fast R-CNN会将图像中的背景块误认为目标,因为它看不到更大的背景。与Fast R-CNN相比,YOLO的背景错误数量不到一半。
(3)YOLO学习目标的泛化表示。当在自然图像上进行训练并在艺术品上进行测试时,YOLO的表现远远超过了顶级的检测方法,如DPM和R-CNN。由于YOLO是高度可泛化的,所以当应用到新领域或意外输入时,它不太可能崩溃。 - YOLO在精确度上仍落后于最先进的检测系统。虽然它可以快速识别图像中的物体,但它很难精确定位一些物体,尤其是小的物体。
2 统一检测
将目标检测的各个部分统一为一个单一的神经网络。我们的网络使用整个图像的特征来预测每个边界框。它同时预测图像中所有类的所有边框。这意味着我们的网络对完整的图像和图像中的所有对象进行全局推理。YOLO设计实现了端到端的训练和实时速度,同时保持了较高的平均精度。
本系统将输入图像划分为S × S网格(框是根据网格来的)。如果一个物体的中心落在一个网格单元格中,该网格单元格负责检测该物体。
每个网格单元格预测
B
B
B个边界框和这些框的置信度得分,置信度得分反映了模型对于这个框是不是包含一个物体的自信程度和预测的框的准确度。置信度为
P
r
(
O
b
j
e
c
t
)
∗
I
O
U
p
r
e
d
t
r
u
t
h
Pr(Object)*IOU^{truth}_{pred}
Pr(Object)∗IOUpredtruth,如果该单元格中不存在目标,则置信度得分为零。否则,置信度得分等于预测框和gt之间的交并比(IOU)。
每个边界框包含5个预测:x, y, w, h和置信度。(x, y)坐标表示相对于网格单元格边界的框的中心;w,h是预测框相对于整个图像的宽度和高度;置信度是预测框和任何gt之间的IOU。
每个网格也预测目标的类别,
P
r
(
C
l
a
s
s
i
∣
O
b
j
e
c
t
)
Pr(Class_i|Object)
Pr(Classi∣Object)。给出C个值(C为数据集中类别的数量)。这些预测取决于包含目标的网格,每个网格预测一组类别概率,与网格的边框数量
B
B
B无关。
在测试时(test time),将类别概率和单个框的置信度相乘:
这就得到了每个框特定类别的置信度分数,此时的置信度分数可以反映某个类别出现在框中的概率、预测框与目标的匹配程度。
在PASCAL VOC上评估YOLO,使用
S
=
7
,
B
=
2
S=7,B=2
S=7,B=2。PASCAL VOC上有20个被标记的类,所以
C
=
20
C=20
C=20。最终的预测是一个
7
×
7
×
30
7×7×30
7×7×30的张量
(
20
+
5
∗
2
=
30
)
(20+5*2=30)
(20+5∗2=30)。
2.1 网络设计
用卷积神经网络实现,在PASCAL VOC检测数据集上评价。网络的初始卷积层从图像中提取特征,全连接层(2个)预测输出概率和坐标。
架构灵感来自图像分类的GoogLeNet。我们的网络有24个卷积层,其次是2个全连接层。交替的1 × 1卷积层减少了前一层的特征空间。在ImageNet分类任务上以一半的分辨率(224 × 224输入图像)预训练卷积层(为什么要以一半的分辨率预训练呢?),然后将分辨率提高一倍进行检测。
Fast YOLO:更快。卷积层减少到9个,卷积层中的过滤器也更少。
2.2 训练
在ImageNet1000类数据集上预训练卷积层,预训练时使用上图的前20个卷积层,然后是一个平均池化层和一个全连接层。使用Darknet框架进行所有的训练和推理。
Ren等人指出,在预训练网络中添加卷积层和连接层可以提高性能,添加了四个卷积层和两个具有随机初始化权值的全连接层。检测通常需要细粒度的视觉信息,因此我们将网络的输入分辨率从224 × 224提高到448 × 448。
最后一层预测类概率和边界框坐标。根据图像的宽度和高度使边界框的宽度和高度标准化,使它们在0和1之间。将边界框的x和y坐标参数化,使其成为特定网格位置的偏移量,因此它们也被限定在0和1之间。
在最后一层使用一个线性激活函数,在其他所有层使用leaky rectified线性激活:
优化模型输出中的平方和误差,但它并不完全符合我们的目标最大化平均精度。它对定位误差和分类误差权重相等,分类误差可能不是很理想。并且图像中有很多网格是不包含目标的,这将把这些单元格的“自信”分数推向零,通常会压倒包含目标的网格的梯度。这可能导致模型不稳定,导致训练在早期出现分歧。
为了弥补这一点,增加了边界框坐标预测的损失,减少了不包含目标的框的置信度预测的损失。用
λ
c
o
o
r
d
=
5
\lambda_{coord}=5
λcoord=5和
λ
n
o
o
b
j
=
0.5
\lambda_{noobj}=0.5
λnoobj=0.5来实现。
平方和误差在大框和小框有相同权重的误差,我们应该反映出小框里的小偏差比大框里的小偏差更重要。为了部分解决这个问题,我们预测边界框的宽度和高度的平方根,而不是直接预测宽度和高度。
YOLO在每个网格中预测了多个边界框,在训练时对于每个目标,我们只想要一个边界框预测器来负责。因此分配一个预测器负责预测一个目标。也就是选择与gt框IOU最大的那个预测框来预测目标。
训练期间,优化下面的损失函数:
-
1
i
o
b
j
1^{obj}_i
-
1
i
j
o
b
j
1^{obj}_{ij}
注意,损失函数只惩罚在网格单元中存在目标时的分类错误(因此前面讨论的条件分类概率)。如果该预测器对gt框“负责”(即在该网格单元中拥有最高IOU),它也只会惩罚边界框坐标错误。
训练集。PASCAL VOC 2007和2012的训练和验证数据集
epochs。135
批大小为64,动量为0.9,衰减为0.0005。
为了避免过拟合,我们使用dropout和extensive data augmented。在第一个连接层之后加入速率为0.5的dropout层,防止了层间的共适应。
2.3 推理
就像在训练中一样,预测测试图像的检测只需要一次网络评估。在PASCAL VOC上,该网络预测了每个图像的98个边界框和每个框的类概率。一些大的目标或靠近多个网格边界的目标可以被多个网格很好地定位。非极大值抑制可用于解决这些多重检测,可增加了23%的mAP。
2.4 YOLO的局限性
YOLO对边界框预测施加了很强的空间约束,因为每个网格单元格只能预测两个框,并且只能有一个类。这个空间限制限制了我们的模型可以预测的附近物体的数量。
由于我们的模型学会了从数据中预测边界框,所以它很难推广到新的或不寻常的高宽比或配置的对象。我们的模型还使用相对粗糙的特征来预测边界框,因为我们的架构有多个从输入图像向下采样的层。
我们的损失函数对小边界框和大边界框中的错误处理是一样的。大框中的小错误通常是良性的,但小框中的小错误对IOU的影响要大得多。
3 与其他检测系统的比较
-
Deformable parts models(DPM)。使用滑动窗口方法来检测物体。DPM使用不相交的解决方案来提取静态特征,对区域进行分类,预测高分区域的边界框等。
YOLO用一个卷积神经网络取代了所有这些不同的部分。该网络同时进行特征提取、边界框预测、非极大值抑制和上下文推理。网络不是静态的特征,而是在线训练特征,并为检测任务优化它们。 -
R-CNN。R-CNN及其变体使用区域提议代替滑动窗口来寻找目标。选择性搜索生成潜在的边界框,卷积网络提取特征,支持向量机评分,线性模型调整边界框,非极大值抑制消除重复检测。这个复杂解决方案的每个阶段都必须独立精确地进行调优,结果系统非常慢。
YOLO与R-CNN有一些相似之处。每个网格单元提出潜在的边界框,并使用卷积特性对这些框进行评分。然而,我们的系统将空间约束放在网格单元提议上,这有助于减少对同一目标的多次检测。我们的系统还提出了更少的边界框,每幅图像只有98个,而从选择性搜索约2000个。最后,我们的系统将这些单独的组件组合成一个单一的、共同优化的模型。 -
Fast R-CNN、Faster R-CNN。专注于通过共享计算和使用神经网络提出区域来加速R-CNN框架,而不是选择搜索。然它们在速度和准确性上都比R-CNN有所提高,但它们的实时性能仍然不足。
YOLO并没有试图优化大型检测解决方案的单个组件,而是完全抛弃了原来的解决方案。YOLO是一种通用检测器,可以学习同时检测各种目标。 -
Deep MultiBox。训练卷积神经网络来预测感兴趣区域,而不是使用选择性搜索。MultiBox还可以通过用单个类预测替换置信度预测来执行单个目标检测。MultiBox不能进行一般的目标检测,只是更大的检测解决方案中的一小部分,需要进一步的图像patch分类。
YOLO和MultiBox都使用卷积网络来预测图像中的边界框,但YOLO是一个完整的检测系统。 -
OverFeat。训练卷积神经网络来执行定位,并使该定位器执行检测。OverFeat可以有效地进行滑动窗口检测,但它仍然是一个脱节的系统。OverFeat优化了本地化,而不是检测性能。与DPM一样,本地化程序在进行预测时只看到本地信息。OverFeat不能对全局背景进行推理,因此需要大量的后处理来产生相干检测。
-
MultiGrasp。我们对边界盒预测的网格方法是基于MultiGrasp系统对抓取器的回归。然而,抓取检测比目标检测简单得多。MultiGrasp只需要预测包含一个对象的图像的单个可抓取区域。它不需要估计物体的大小、位置或边界,也不需要预测它的类别,只需要找到一个适合抓取的区域。
YOLO预测图像中多个类的多个对象的边界框和类概率。
总结感悟
- 检测过程:输入图片,划分网格,每个网格
B
B
C
C
- 添加卷积层和连接层可以提高性能。
- 提高输入图像分辨率,有助于细粒度识别。
- YOLO与之前的工作相比,最突出的特点就是快,其次是通用。
版权声明:本文为CSDN博主「Bear Head」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_46599997/article/details/120793873
暂无评论