版权声明:转载必须经过本人同意,并且注明文章来源! https://blog.csdn.net/weixin_41665360/article/details/88420807
摘要
之前关于目标检测的研究通过再利用分类器实现检测,本文作者基于回归的方法,使用单一网络从整幅图中直接预测边界框和类概率。由于检测管道是单一网络,所以可以端到端优化检测性能。
作者提出的框架极其快速。 基本
YOLO 模型能够以
45fps 的帧率处理图像。网络的较小版本
Fast YOLO 每秒处理惊人的
155 帧,同时仍能实现其他实时检测器的两倍
mAP。与现有最优的检测系统相比,
YOLO 会产生更多的定位错误,但更少预测背景上的假正例。 最后,
YOLO 学习了目标的非常一般的表示。当从自然图像推广到艺术作品等其他领域时,它优于其他检测方法,包括
DPM 和
R−CNN。
1、介绍
当前的检测系统将分类器重新用于执行检测任务。为了检测一个物体,这些系统对该物体进行分类,并在测试图像中的不同位置和尺度下对其进行评估。像可变形部件模型(
DPM)这样的系统使用滑动窗口方法,其中分类器在整个图像上均匀分布的位置上运行 [10]。
最近更多的方法,像
R−CNN 使用区域提议方法首先生成可能的目标边界框,然后在这些提议框上运行分类器。分类过后,后续处理用于精炼边界框,去除重复检测,并且为场景中基于其他目标的框重新打分 [13]。那些复杂的管道速度慢,并且难以优化,因为每个单独的部分必须被分别训练。
作者把目标检测看做单一回归问题,直接实现从图像像素到边界框和类别概率的回归。
YOLO 非常简单:见图
1。单个卷积网络同时预测多个边界框和这些框的类概率。
YOLO 对完整图像进行训练,并直接优化检测性能。这种单一模型与传统的目标检测方法相比有几个优点:
-
YOLO 速度非常快。 可以用不到
25 毫秒的延迟实时处理视频流。
YOLO 的平均精度是其他实时系统的两倍以上。有关系统在网络摄像头上实时运行的演示,请查看项目网页:http://pjreddie.com/yolo/
- 预测时,
YOLO 在图像上进行全局推理。 与基于滑动窗口和区域提议的技术不同,
YOLO 在训练和测试时看到了整个图像,因此它隐式编码了关于类及其外观的上下文信息。
Fast R−CNN [14] 作为一种顶级的检测方法,错误地将图像中的背景块看作目标,因为它看不到更大的背景。与
Fast R−CNN 相比,
YOLO 产生的背景误差不到一半。
-
YOLO学习目标的概括表示。 当在自然图像上训练并在艺术作品上测试时,
YOLO 的表现远远优于
DPM 和
R−CNN 等顶级检测方法。由于
YOLO 是高度一般化的,当应用于新领域或意外输入时,它不太可能失效。
YOLO 在精确度上仍然落后于最先进的检测系统。 虽然它可以快速识别图像中的目标,但它很难精确定位某些目标,尤其是小目标。作者在实验中进一步研究了这些权衡。
2、统一检测
作者将目标检测的独立组件统一到单个神经网络中。该网络使用整个图像的特征来预测每个边界框。它还可以同时预测图像的所有类中的所有边界框。这意味着该网络会从全局范围内考虑整个图像和图像中的所有对象。
YOLO 设计支持端到端训练和实时检测速度,同时保持高平均精度。
该系统将图像分成
S×S 个网格,如果目标的中心落在一个网格中,该网格负责检测这个目标。
每个网格预测
B 个边界框以及那些边界框的置信度分数。这些置信度分数反映了模型对预测框包含目标的置信程度,以及它认为预测框的准确度。通常,将置信度定义为
Pr(Object)∗IOUpredtruth。如果网格中没有目标,置信度分数应该为零。否则,置信度分数等于预测框和
ground truth 的交并比。
每个边界框由
5 个预测值组成:
x,y,w,h 以及置信度。
(x,y) 表示框的中心相对该网格的边界的坐标。宽度和高度是预测框相对于整张图的值。置信度预测代表预测框和任意
ground truth 框的
IOU。
每个网格也预测
C 个条件类概率
Pr(Classi∣Object)。 那些概率是以该网格包含一个目标为条件的。每个网格只预测一组类别概率,不管预测框数量
B 为多少。
测试时,将条件类概率和单个框置信度预测值相乘。
Pr(Classi∣Object)∗Pr(Object)∗IOUpredtruth=Pr(Classi)∗IOUpredtruth(1)
由此求得每个预测框的特定类置信度分数,这些分数既编码了该类出现在框中的概率,也编码了预测框对目标的匹配程度。
在数据集
PASCAL VOC 上评估
YOLO 设置
S=7,B=2。
PASCAL VOC 有
20 个标签类,所以
C=20。最终的预测是一个
7×7×30 的张量。
2.1、网络设计
网络最初的卷积层提取图像特征,全连接层预测输出概率和坐标。
网络结构受用于分类任务的
GoogLeNet 模型 [34] 的启发。网络共有
24 个卷积层后面连接
2 个全连接层。 取代
GoogLeNet 中的
inception 模式,作者使用类似于 [22] 中的
1×1 reduction 层后面连接
3×3 卷积层。整个网络如图
3 所示。
作者还训练了一个快速版本的
YOLO,旨在推动快速目标检测的边界。
Fast YOLO 有更少的卷积层(
9 个)以及更少的卷积核。除了网络规模之外,
YOLO 和
Fast YOLO 之间的所有训练和测试参数都是相同的。
2.2、训练
作者在
ImageNet 1000 类竞赛数据集上预训练卷积层。网络最终输出类别概率和边界框坐标。将边界框的宽和高通过图像的宽和高进行归一化从而使它们落在
0−1 区间。将边界框
x 和
y 坐标参数化为特定网格单元位置的偏移量,因此它们也被限制在
0 和
1 之间。
对最后一层使用线性激活函数,所有其他层使用以下
Leaky 修正线性激活:
ϕ(x)={x,0.1x,if x>0otherwise(2)
优化模型输出的平方和误差,因为平方和误差比较容易优化。然而,它并不完全符合最大化平均精度的目标。它将定位误差与可能不理想的分类误差同等加权。此外,在每个图像中,许多网格单元不包含任何目标。这将这些单元格的“置信度”分数推向零,通常会远超过包含目标的单元格梯度。这可能导致模型不稳定,导致训练早期出现分化。
为了弥补这一点,作者增加了边界框坐标预测损失的权重,并减少了不包含目标的框的置信度预测的损失。 作者使用两个参数
λcoord 和
λnoobj 来实现这一点。设置
λcoord=5,
λnoobj=0.5。
平方和误差同样加权大框和小框中的误差。误差度量应该反映出小框中的小偏差比大框中的小偏差更重要。为了部分解决这个问题,作者预测边界框宽度和高度的平方根,而不是直接预测宽度和高度。
YOLO 预测每个网格单元有多个边界框。在训练时,只希望每个目标由一个边界框预测器负责。基于哪个预测器当前与
ground truth 具有最大的
IOU,指定该预测器来负责预测该目标。 这导致边界框预测器之间的专门化。每个预测器在预测特定大小、长宽比或目标类别方面都变得更好,从而提高整体召回率。
训练时,优化以下多部分组成的损失函数:
λcoordi=0∑S2j=0∑BIijobj[(xi−x^i)2+(yi−y^i)2]+λcoordi=0∑S2j=0∑BIijobj[(wi
−x^i
)2+(hi
−h^i
)2]+i=0∑S2j=0∑BIijobj(ci−c^i)2+λnoobji=0∑S2j=0∑BIijnoobj(ci−c^i)2+i=0∑S2Iiobjc∈classes∑(pi(c)−p^i(c))2(3)
Iiobj 表示网格
i 中出现目标,
Iijobj 表示网格
i 中第
j 个边界框预测器负责预测。
损失函数仅在网格单元中存在目标时,惩罚分类错误(因此前面讨论了条件类概率)。它也只在预测器负责
ground truth 检测时(即在该网格单元中具有最高的
IOU 的预测器),惩罚边界框坐标误差。
作者在
PASCAL VOC 2007/2012 训练和验证数据集上训练网络大约
135 代。训练
batch size 大小为
64,
momentum 等于
0.9,
decay 等于
0.0005。 学习率遵循以下设置:第一代缓慢增加学习率,从
10−3 增大到
10−2。如果以高学习率开始,模型经常会因为不稳定的梯度而偏离。以学习率
10−2 训练
75 代,然后以
10−3 训练
30 代,最后以
10−4 训练
30 代。
为了避免过拟合,作者使用了
dropout 和大量数据增强。第一个连接层后
dropout 率等于
0.5 防止层之间的共同适应 [18]。 关于数据增强,作者引入随机缩放和多达原始图像大小
20% 的平移。作者还在
HSV 色彩空间中随机调整图像的曝光和饱和度,最高可达
1.5 倍。
2.3、推理
在
PASCAL VOC 数据集,网络在每张图上预测
98 个(
7×7×2)边界框,每个框预测相应的类别概率。不同于基于分类器的方法,
YOLO 运行速度非常快。
网格设计加强了边界框预测的空间多样性。通常很清楚一个对象属于哪个网格单元,网络只为每个对象预测一个框。但是,一些大对象或多个单元格边界附近的对象可以被多个单元格很好地定位。非最大抑制可用于修正这些多重检测。虽然对
YOLO 的性能不像对
R−CNN 或
DPM 那样重要,但非最大抑制仍然将
mAP 增加了
2−3%。
2.4、YOLO 的局限性
YOLO 对边界框预测施加了很强的空间约束,因为每个网格单元只能预测两个框,并且只能有一个类。这个空间约束限制了模型可以预测的靠近的目标的数量。该模型检测成群出现的小目标比较困难,比如鸟群。
由于模型从数据中学习预测边界框,它很难推广到 具有新的或不寻常的长宽比或结构的目标 的检测任务中去。该模型还使用相对粗糙的特征来预测边界框,因为模型的架构有来自输入图像的多个下采样层。
最后,当训练接近检测性能的损失函数时,损失函数同等对待小边界框和大边界框的误差。大边界框的小误差通常是可以容忍的,但小边界框的小误差对
IOU 的影响要大得多。误差的主要来源是不精确的定位。
3、和其他系统的比较
目标检测是计算机视觉的核心问题。检测管道通常从输入图像中提取一组鲁棒特征开始(
Haar,SIFT,HOG,convolutional 特征)。然后,使用分类器 [36、21、13、10] 或定位器 [1、32] 来识别特征空间中的目标。这些分类器或定位器在整个图像上以滑动窗口的方式运行,或者在图像中的某些区域子集上运行 [35、15、39]。作者将
YOLO 检测系统与几个顶级检测框架进行了比较,突出了关键的相似性和差异性。
DPM 使用滑动窗口进行目标检测 [10]。
DPM 使用独立的管道来提取静态特征、分类区域、预测高得分区域的边界框等。 本文的系统用一个卷积神经网络代替了所有这些不同的部分。网络同时执行特征提取、边界框预测、非最大抑制和上下文推理。网络不是静态特征,而是在线训练特征,并针对检测任务优化它们。统一的架构带来了比
DPM 更快、更精确的模型。
R−CNN R-CNN及其变体使用区域提议替代滑动窗口来寻找图像中的目标。选择性搜索 [35] 生成潜在的边界框,卷积网络提取特征,支持向量机对框评分,线性模型调整边界框,非最大抑制消除重复检测。这个复杂管道的每一个阶段都必须被精确地独立调整,并且最终的系统非常慢,在测试时 [14] 每张图像需要超过
40 秒。
YOLO 与
R−CNN 有一些相似之处。每个网格单元提出潜在的边界框,并使用卷积特征对这些框进行评分。然而,该系统对网格单元提议施加空间约束,这有助于减轻对同一对象的多次检测。该系统提议较少的边界框,每幅图像只有
98 个,相比之下,选择性搜索大约有
2000 个。最后,系统将这些单独的组件组合成一个单一的、联合优化的模型。
其它快速检测器
Fast and FasterR−CNN 通过共享卷积和使用神经网络取代选择性搜索进行区域提议来加速
R−CNN 框架。虽然它们实现了比
R−CNN 更快的速度和更高的准确度,但两者仍达不到实时性能。
许多研究关注提升
DPM 管道 [31][38][5]。他们加速
HOG 计算,使用级联,使用
GPU 计算。然而只有
30Hz DPM [31] 实现了实时运行。
YOLO 没有试图优化大型检测管道的单个组件,而是完全抛弃了管道,速度很快。
像人脸或人这样的单一类别的检测器可以被高度优化,因为它们处理小得多的变化 [37]。
YOLO 是一种通用检测器,它可以同时检测多种物体。
Deep MultiBox 与
R−CNN 不同,
Szegedy 等人,训练卷积神经网络来预测感兴趣区域 [8],而不是使用选择性搜索。
MultiBox 还可以通过用单类预测代替置信度预测来执行单目标检测。然而,
MultiBox 不能执行一般的目标检测,它只是更大的检测管道中的一部分,需要进一步的图像块分类。
YOLO 和
MultiBox 都使用卷积网络来预测图像中的边界框,但是
YOLO 是一个完整的检测系统。
OverFeat
Sermanet 等人训练卷积神经网络以执行定位,并将定位器用于执行检测 [32]。
OverFeat 有效地执行滑动窗口检测,但它仍然是一个分离的系统。
OverFeat 优化了定位,而不是检测性能。像
DPM 一样,定位器在进行预测时只能看到局部信息。
OverFeat 不能推理全局信息,因此需要有效的后期处理来产生合理的检测。
MultiGrasp
YOLO 在设计上类似于
Redmon 等人 [27] 的
grasp 检测工作。边界框预测的网格方法是基于
MultiGrasp 系统。然而,
grasp 检测比物体检测容易得多。
MultiGrasp 只需要为包含一个目标的图像预测单个可抓取区域。它不需要预测目标的大小、位置或边界,也不需要预测它的类别,只需要找到一个适合抓取的区域。
YOLO 预测图像中多个类别的多个目标的边界框和类别概率。
4、实验
YOLO 首先在
PASCAL VOC 2007 数据集上和其他实时检测系统进行了比较。
YOLO 可用于对
Fast R−CNN 检测结果重新打分,并减少背景假正例带来的误差,从而显著提升性能。
YOLO 比其他检测器更好地推广到新的领域,在两个艺术品数据集上。
4.1、和其他实时系统的比较
4.2、VOC 2007误差分析
作者使用了
Hoiem 等人的方法和工具 [19]。对于测试时的每个类别,查看该类别的前
N 个预测。每个预测要么是正确的,要么根据误差类型进行分类:
- 正确:正确分类,
IOU>.5
- 定位:正确分类,
.1<IOU<.5
- 相似:类别相似,
IOU>.1
- 其他:分类错误,
IOU>.1
- 背景:任意目标
IOU<.1
图
4 显示了所有
20 个类中平均每个错误类型的细分。
YOLO 尽量正确定位对象。定位误差占
YOLO 误差的比重超过所有其他来源的总和。
Fast R−CNN 定位误差要小得多,但背景误差要大得多。前
13.6% 的检测是不包含任何目标的假正例。
Fast R−CNN 预测背景检测的可能性几乎是
YOLO 的
3 倍。
4.3、连接 Fast R-CNN 和 YOLO
YOLO 将背景误检为目标的可能性远低于
Fast R−CNN。通过使用
YOLO 去除
Fast R−CNN 中的背景检测能够取得很大的性能提升。对于每一个由
Fast R−CNN 预测的边界框,都会检查
YOLO 是否预测了一个类似的框。如果是这样,就会根据
YOLO 预测的概率和两个框之间的重叠来提高预测。
不幸的是,这种组合不能从
YOLO 的速度优势中受益,因为实验分别运行每个模型,然后组合结果。然而,由于
YOLO 速度如此之快,与
Fast R−CNN 相比,它不会增加任何显著的计算时间。
4.4、VOC2012结果
4.5、艺术品中的人体检测
4.6、野外实时检测
demo 和源码网址:http://pjreddie.com/yolo/
6、总结
YOLO 是一个统一的目标检测模型。模型易于搭建且能在整幅图像上训练。不同于基于分类的模型,它可以直接训练对应检测性能的损失函数,并且整个模型能够实现联合训练。
YOLO 还可以很好地推广到新的领域,使其成为依赖快速、鲁棒的目标检测的应用的理想选择。