先前的目标检测都是重复使用分类器,但是yolo重新定义了目标检测,原来的目标检测都是分类问题(一个框里面究竟是什么类别的问题),yolo把它变成了回归问题(变成了预测一系列连续的数值)。只需要使用一个神经网络既可以预测坐标框又可以预测类别。
作者先阐述了一下人类视觉的特点:快速而准确,能够执行复杂的任务。快速、准确的物体检测算法将允许计算机在没有专门传感器的情况下驾驶汽车,使辅助设备能够向人类用户传达实时场景信息,并释放通用、响应式机器人系统的潜力。
当前的检测系统是通过重复使用分类器来对目标进行检测。系统先对物体进行分类,然后再测试图像上的不同位置和尺度上对其进行评估。比如可变形零件模型(DPM)这样的系统使用滑动窗口方法,其中分类器在整个图像上均匀分布的位置运行。
而R-CNN则采用候选区域提议的方法:首先在图像上生成潜在的边界框,然后在这些边界框上面运行分类器,分类完成之后,后期将去除重复的边界框并基于图像中的其他物体对这些保留下来的边界框进行评分。
缺点:这些复杂的管道速度缓慢且难以优化,因为每个单独的组件都必须单独训练。
作者将目标检测重新定义为单一的回归问题,单个卷积网络可以同时预测多个边界框和这些框所属类别的概率。相比于传统的目标检测方法,这种统一的模型有下列几种好处:
1)首先,YOLO非常快。由于将检测视为回归问题,因此不需要复杂的管道。基础网络以每秒45帧的速度运行,在Titan X GPU上没有批处理,快速版本(Fast yolo)以超过150 fps的速度运行。这意味着yolo实时处理流视频(一般来说fps达到了30就认为可以处理实时视频了),延迟小于25毫秒。此外,YOLO 的平均精度是其他实时系统的两倍多。----快
2)yolo在预测时会对图像进行全局推理。与Fast R-CNN(顶级检测算法)相比,yolo产生的背景错误数量不到它的一半。而Fast R-CNN由于无法看到更大的上下文,因此将图像中的背景补丁误认为是对象而产生错误。---错误少
3)第三,YOLO学习对象的可泛化表示。在对自然图像进行训练并在艺术品上进行测试时,YOLO大大优于DPM和R-CNN等顶级检测方法。由于YOLO具有高度泛化性,因此在应用于新域或意外输入时不太可能发生故障。-----泛化能力强
缺点:yolo虽然识别能力很强,但是精准度不高,尤其是对密集小目标进行检测时,这缺点尤为明显。
yolo将目标检测的独立组件统一到单个神经网络中。网络使用整个图像的特征来预测每个边界框。它还同时预测图像的所有类别中的所有边界框。这意味着yolo网络对完整图像和图像中的所有对象进行全局推理。YOLO设计可实现端到端训练和实时速度,同时保持较高的平均精度。
Yolo将输入的图像划分为S*S个单元格(yolo v1为7*7),每个单元格预测B个边界框(B是超参数,yolo v1一般为2两个)和它们的置信度。这些置信度反映了模型对单元格包含对象的信心以及单元格对预测对象的准确度。
每个边界框由五个部分由x,y,w,h和置信度这五个预测值组成,(x, y)坐标表示相对于网格单元边界的框的中心。宽度和高度是相对于整个图像进行预测的。最后,置信度预测表示预测框与任何地面实况框之间的IOU
每个网格单元还预测C个条件类概率,Pr(Classi|Object)。这些概率取决于包含对象的网格单元。每一个网格单元只预测一组类别概率,与B个边界框的数量无关。
在测试时,我们将条件类概率和单个框置信度预测相乘,这为我们提供了每个框的特定类别置信度分数。这些分数既编码了该类出现在框中的概率,也编码了预测的框与对象的匹配程度。
YOLO的网络结构受到用于图像分类的GoogleNet模型的启发,网络有24 个卷积层,后跟2个全连接层。它没有使用GoogLeNet使用的初始模块,而是简单地使用1×1缩减层,然后使用3×3卷积层。(这个原理我还没搞懂)
作者在ImageNet 1000 类竞赛数据集上预训练yolo的卷积层。对于预训练,他们使用前20个卷积层,然后是平均池化层和全连接层。网络进行了大约一周的训练,在ImageNet 2012 验证集上实现了88%的单次裁剪top-5准确率,与Caffe的Model Zoo中的GoogLeNet模型相当。
后来有人发现将卷积层和全连接层添加到预训练网络中可以提高目标检测的性能,于是作者添加了四个卷积层和两个具有随机权重的全连接层,并将将网络的输入分辨率从 224 × 224 增加到 448 × 448。
yolo的最后一层预测类概率和边界框坐标,通过图像宽度和高度对边界框的宽度和高度进行归一化,使其介于 0 和 1 之间。同时它将边界框 x 和 y 坐标参数化为特定网格单元位置的偏移量,因此它们也介于 0 和 1 之间。
关于损失函数,yolo对最后一层使用线性损失函数,对其他层使用泄露矫正线性激活函数,如下所示。
针对模型中的输出,作者采用平方和误差来进行优化(作者认为平方和误差比较容易优化)。但是针对作者最大化平均精度的目标来说,这显然是不符合的。它将定位误差与分类误差同等加权,这可能并不理想。此外,在每个图像中,许多网格单元不包含任何对象。将这些单元格的“置信度”分数推向零,通常会压倒确实包含对象的单元格的梯度。这可能导致模型不稳定,导致训练早期出现分歧。为了解决这个问题,作者增加了边界框坐标预测的损失,并减少了不包含对象的框的置信度预测的损失。yolo使用两个参数λcoord 和 λnoobj来完成此操作,设置λcoord = 5和λnoobj = 0.5。
损失函数仅在该网格单元中存在对象时才惩罚分类错误。如果该预测器对地面实况框“负责”(即具有该网格单元中任何预测器的最高 IOU),它也只会惩罚边界框坐标错误。
Yolo对边界框预测施加了很强的空间约束,因为每个网格框只能预测两个边界框和一个物体类别。这种空间约束限制了模型可以预测的附近物体的数量。这导致yolo对成群出现的目标检测不友好,比如鸟群之类的群体目标。
由于yolo模型学习从数据中预测边界框,它很难泛化到具有新的或不寻常的纵横比或配置的对象。yolo模型还使用相对粗略的特征来预测边界框(较粗的边界框说明置信度比较高)。
作者首先提出当前主流目标检测系统识别目标的方式,先从输入图像中提取一组鲁棒特性(Haar、SIFT、HOG、卷积特征),然后分类器或者定位器在整个图像上以滑动窗口的方式(或者在图像中的某些区域子集上运行)去识别特征空间中的对象。然后开始述说yolo与其他主流检测系统关键异同。
DPM使用滑动窗口的办法来对目标进行检测,使用不相交的管道来提取静态特征、分类区域、预测高分区域的边界框等。而yolo则使用单个卷积神经网络替换了这些不同的管道。Yolo的单个卷积神经网络同时执行特征提取、边界框预测、非极大值抑制和上下文推理。这个网络不是静态特征,而是在线训练特征并针对检测任务对其进行优化。yolo的统一架构带来了比DPM更快、更准确的模型。
R-CNN及其变种采用候选区域的方法对目标进行检测而不是DPM那种滑动窗口的办法。选择性搜索产生潜在的边界框,卷积神经网络提取特征,SVM对边界框进行打分,线性模型对边界框进行调整,最后由非最大抑制消除重复的检测框。这些复杂管道的每个阶段都需要精准的调整,所以这个系统检测速度非常的慢,在测试的时候检测一张图片需要40秒。(但是它的准确度确实很高)。
YOLO与R-CNN 有一些相似之处。每个网格单元提出潜在的边界框并使用卷积特征对这些框进行评分。然而,yolo对网格单元提议施加了空间限制,这有助于减轻对同一对象的多次检测。yolo还提出了更少的边界框,每张图像只有 98个,而选择性搜索大约有2000个。最后,yolo将这些单独的组件组合成一个单一的、联合优化的模型。(减少对同一对象的检测次数,潜在的边界框更少)
Fast 和 Faster R-CNN专注于通过共享计算和使用神经网络提出区域而不是选择性搜索来加速R-CNN框架。虽然它们在R-CNN上提供了速度和准确性的改进,但两者仍然没有达到实时检测的性能。很多的研究工作都集中在加速DPM的复杂管道,但是效果并不是很明显(他们通过加速HOG计算,使用级联把计算结果推送到GPU,但是只有30Hz的DPM能达到实时监测的要求)。 YOLO则完全抛弃了这种管道,并且设计的速度非常快。
这个模型与R-CNN不同,Szegedy等人通过训练卷积神经网络来预测感兴趣区域(可能的区域)。同时他也抛弃了选择性搜索,通过将置信度预测替换为单类预测来执行对象检测。然而,MultiBox不能执行一般的对象检测,它仍然只是更大检测管道中的一部分,需要进一步的图像块分类。(这个模型只能预测边界框,不能进行目标检测)。虽然yolo和这个模型都是用单一卷积神经网络来预测边界框,但是yolo还可以进行目标检测。
Sermanet等人训练了一个卷积神经网络来执行定位并调整该定位器来执行目标检测。OverFeat有效地执行滑动窗口检测,但它仍然是一个不相交的系统。OverFeat专注于优化目标定位,而不是提升检测性能。与DPM一样,定位器在进行预测时只能看到图片的局部信息。OverFeat无法推理全局上下文,因此需要大量的后处理来产生连贯的检测。
yolo的边界框预测网格方法基于用于回归到抓取的MultiGrasp系统。然而,抓取检测比物体检测要简单得多。MultiGrasp只需要为包含一个对象的图像预测单个可抓取区域。它不必估计对象的大小、位置或边界或预测它的类别,只需找到适合抓取的区域。YOLO预测图像中多个类别的多个对象的边界框和类别概率。
在pascal voc 2007数据集上,yolo与其他实时监测系统进行对比,yolo与性能最高的R-CNN相比,产生的错误背景更少(yolo通过对图像进行全局推理可以分清楚哪个是背景,哪个是目标)。YOLO可用于对 Fast R-CNN 检测进行重新评分并减少背景误报的错误,从而显着提升性能(作者的意思应该是把yolo和Fast R-CNN结合起来,减少fast r-cnn产生的背景误判)。作者还展示了yolo在VOC 2012结果,并将与当前最先进的mAP进行了比较。最后,展示了 YOLO 在两个艺术品数据集上比其他检测器更好地泛化到新领域。
Fast YOLO是PASCAL上最快的目标检测方法;它有着52.7%的mAP,它的准确度是之前实时检测工作的两倍多。YOLO的mAP则有63.4%,同时还能保持实时检测的性能。
作者还对比使用VGG-16来训练yolo,虽然准确度上去了,但是速度变慢了。
Faster DPM在不牺牲太多mAP的情况下有效地加速了DPM,但它仍然没有达到2倍的实时性能。与神经网络方法相比,它还受到DPM相对较低的检测精度的限制。
Fast R-CNN虽然加快了R-CNN的分类阶段,但它仍然依赖于选择性搜索,每张图像需要大约2秒来生成边界框建议。因此它具有高mAP,但只有0.5的fps远远达不到实时监测的性能。
Faster R-CNN 用神经网络代替选择性搜索来提出边界框,最准确的模型达到7fps,而更小、不太准确的模型以18fps运行。Faster R-CNN 的 VGG-16 版本比YOLO高10mAP,但检测速度比YOLO慢6倍。 ZeilerFergus Faster R-CNN仅比YOLO慢2.5倍,但也不太准确。
这些图表显示了各种类别的前 N 个检测中的定位和背景错误百分比. YOLO 正确定位对象的能力比较弱,定位错误占YOLO错误的比例比所有其他来源的总和还要多。而Fast R-CNN的定位错误就少得多,但背景错误很多。13.6% 的顶级检测是不包含任何对象的误报。Fast R-CNN 预测背景检测的可能性几乎是 YOLO 的3倍
YOLO的背景错误比Fast R-CNN少得多。通过使用YOLO消除 Fast R-CNN 的背景检测,我们的性能得到了显着提升。对于R-CNN预测的每个边界框,我们检查YOLO是否预测了类似的框。如果是这样,我们会根据YOLO预测的概率和两个框之间的重叠来提高该预测
最好的 Fast R-CNN模型在VOC 2007测试集上实现了71.8%的mAP,结合yolo之后,mAP提升了3.2%达到了75%。作者还尝试将顶级 Fast R-CNN 模型与其他几个版本的Fast R-CNN 结合起来。这些集合产生了0.3%到0.6%之间的mAP小幅增长。
YOLO 的提升不仅仅是模型集成的副产品,因为组合不同版本的 Fast R-CNN 几乎没有什么好处。相反,正是因为YOLO在测试时犯了不同类型的错误,它才如此有效地提升Fast R-CNN 的性能(这是为什么?)
在 VOC 2012 测试集上,YOLO mAP得分为57.9%。这低于当前最先进的水平,更接近于使用VGG-16的原始R-CNN,与最接近的竞争对手相比,yolo的瓶颈主要出现在小物体识别上(在瓶子、绵羊和电视/显示器等类别上,YOLO得分比较低。然而,在猫和火车等其他类别上,YOLO发挥的比较好)。
Fast R-CNN + YOLO 模型 = 性能最高的检测方法之一,获得了2.3%的提升,排行榜提升5位
当应用于艺术品时,R-CNN的检测性能大幅下降,而DPM则依旧可以很好地保持其AP。当yolo应用于艺术品时,AP虽然会下降,但不至于下降的太厉害,YOLO对对象的大小和形状以及对象之间的关系以及对象通常出现的位置进行建模(物体与背景之间的关系,比如飞机应该在天上飞)。艺术品和自然图像在像素级别上非常不同,但它们在对象的大小和形状方面相似,因此YOLO仍然可以预测良好的边界框和检测。
可行性很高,YOLO: Real-Time Object Detection.
YOLO,一个统一的目标检测模型,模型构造简单,可以直接在完整的图片上进行训练。与基于分类器的方法不同,YOLO是在与检测性能直接对应的损失函数上训练的,整个模型是联合训练的。YOLO还可以很好地推广到新领域,使其成为依赖快速、稳健的对象检测的应用程序的理想选择。
以上图片均来自论文。