0 - 摘要
我们提出了YOLO,一种新的物体检测方法。之前的物体检测工作是通过重新使用分类器来进行检测。相反,我们将对象检测抽象为一个回归问题,描述为以空间分隔的边界框和相关的类别概率。一个简单的神经网络通过对完整图片的一次检验直接预测出边界框和分类类别。因为整个识别的依据是一个单一的网络,所以可以在检测性能上进行端到端优化。
我们整体的框架非常快。我们的基础模型YOLO实时处理图片速度达到45帧/秒。我们网络的一个小规模版本,Fast YOLO,达到了惊人的处理155帧/秒的图片速率,并且仍然实现了两倍于其他实时检测器的mAP。与当前最先进的监测系统相比,YOLO有较高的定位错误,但是对于没有物体区域的检测错误,YOLO远远少于其他系统。最后,YOLO学习了对象的很一般表示。从自然图像到毕加索和PeopleArt数据集上的作品,它的性能远远超过其他检测方法,包括DPM和RCNN。
1 - 介绍
人们瞥一眼图像,就能立即知道图像中的物体是什么,它们在哪里,以及他们之间的相互关系。人类的视觉系统是快而准确的,以至于可以允许我们完成像驾驶汽车之类的复杂任务而不用很多的意识想法参与。快速、准确的目标检测算法将允许计算机在任何天气下驾驶汽车而不需要专门的传感器,辅助设备可以将实时的场景信息传递给人类用户,并且释放通用的、反应灵敏的机器人系统能力。
现在的监测系统重新使用分类器来进行检测。为了检测一个物体,这些系统使用一个对应类别的分类器并且将其应用到测试图片中的不同区域和规模。例如deformable parts models(DPM)使用一个滑动窗口方法,以使得分类器作用于整张图片上的每一处分离区域上。
最近的一些方法,像R-CNN,使用建议区域方法(region proposal method),先在图像中定位出边界框,然后再通过一个分类器来对边界框的内容进行分类。在分类之后,使用后处理对边框进行校正,消除重复边界框,并且根据场景中的其他物体,对边界框重新打分。这些复杂的做法使得该方法很忙并且很难去优化,因为每一个独立的部分都需要分开去训练。
我们重新抽象物体检测为一个简单的回归问题,直接从图像像素输入到输出边界框坐标和类别概率。使用我们的系统,你只需要看一遍("only look once", YOLO)图片就能预测出物体的类别和位置。
YOLO非常简单:见图1。一个简单的卷积网络同时预测多个边界框以及其每一个对应的分类类别概率。YOLO是对完整图像进行训练并且直接优化检测效果的。这种统一的模型相比传统的目标检测模型有几个优点。
图1:YOLO目标检测系统。使用YOLO处理图像非常简单和直接。我们的系统(1)吊针输入图像的大小为448×448,(2)将图像输入到一个简单的卷积神经网络,并且(3)通过阈值筛选出检测结果(thresholds the resulting detections by the model's confidence)。
第一个优点,YOLO很快。因为我们抽象物品检测为回归问题,我们不需要复杂的规则。在测试时候我们简单的将新图片喂入我们的神经网络。我们的基础网络运行速率为45帧/秒(在泰坦X GPU上没有批量处理),并且一个快速版本运行速率超过150帧/秒。这意味着我们能够以小于25ms的延迟实时处理流视频。更进一步,YOLO的平均精度是其他实时系统平均精度的两倍以上。有关我们系统的demo可以实时在网站上运行演示,请看我们的YouTube频道:https://goo.gl/bEs6Cj。
第二个优点,YOLO在预测的时候利用了图像的全局信息。不像基于滑动窗口和基于建议区域(region proposal)的技术,YOLO在训练和测试的时候都是看到整个图像的,所以它对类别的上下文信息以及它们的外观进行编码。Fast R-CNN,一种顶级的检测方法,由于无法看到更大的上下文信息,所以会在图像中错误地显示背景块(将背景块错误识别)。YOLO产生的背景错误不到R-CNN的一半。
第三个优点,YOLO学习对象的推广表示。在自然图像进行训练并且在艺术品上进行测试时,YOLO的表现远远超过DPM和R-CNN等顶级的检测方法。由于YOLO是高度一般化的,所以当其应用到新的领域或者意外的输入时,它不太可能出现崩溃(效果很差)。
我们训练和测试的代码全部已经开源的,可以在网上获取。各种预训练模型也可以下载。
2 - 统一识别(Unified Detection)
我们将物体检测的几个分离部分统一成一个简单的神经网络。我们的网络使用整张图片的特征去预测每一个边界框。它也支持对一张图片同时预测全部边界框。这意味着我们的网络关注了整张图片以及在这张图片中的所有物体的信息。这个YOLO设计允许端到端的训练以及在保证高平均准确率的同时确保实时速度。
我们的系统将输入图像分成S×S的网格。如果物品的中点落在某一个网格单元,这个网格单元将负责识别出这个物体。
每一个网格单元预测B个边界框以及对应于每一个边界框的置信分数。这些置信分数反映了这个模型预测该边界框包含某一物体的可能性以及模型认为对于这个边界框的预测有多高的准确率。我们将置信度用公式定义为$Pr(Object)*IOU_{pred}^{truth}$。如果在网格单元中没有物品,置信分数将为0。否则,我们定义置信分数为预测边界框和真实边界框的IOU(intersection over union)。
每一个边界框包含5个预测值:$x,y,w,h$以及置信分数。$(x,y)$一起表示了边界框相对于当前网格单元的位置。$width$和$height$是根据整张图片的比例预测的。最后,置信分数表示预测边界框和真实边界框的IOU。每一个网格单元同时也预测属于C类别的条件概率,$Pr(Class_i|Object)$。这个概率表示了这个网格单元包含某一个物体的置信度。我们也预测每个网格的一组类别的概率,而不考虑边界框的数量B。
在测试的时候我们将类别概率和独立的边界框预测置信分数相乘,有如下公式。
$$Pr(Class_i|Object)*Pr(Object)*IOU_{pred}^{truth}=Pr(Class_i)*IOU_{pred}^{truth}$$
这个给了我们对于每一个边界框属于某一个特定类别的置信分数。这些分数编码了这个类出现在框中的概率以及预测框和对象的匹配程度。
在PADCAL VOC上评估YOLO,我们使用了$S=7,B=2$。PASCAL VOC有20个标签类别,所以$C=20$。我们最后的预测是一个7×7×30的张量。
图2:模型。我们的系统模型抽象为一个回归问题。它将图片分为一个一个的网格并且同时地预测边界框、置信分数以及类别概率。这些预测将被编码为S×S×(B*5+C)的张量。
2.1 - 设计
我们通过卷积神经网络实现这个模型,并且在PASCAL VOC检测数据集上进行评估。网络中初始的卷积层从图像中提取特征,而全连接层用来预测输出概率和坐标。
我们的网络架构是受到图像识别模型GoogLeNet的启发。我们的网络有24个卷积层后接2个全连接层。然而,不同于GoogLeNet中使用的inception modules简单地在1×1卷积层后面接上3×3卷积层(类似于Lin等人)。我们的整个网络如图3所示。
图3:架构。我们的检测网络拥有24个卷积层后接2个全连接层。交替使用1×1卷积层从前面网络层中减小了特征空间。我们在ImageNet分类任务上使用一办分辨率(224×224的输入图像)预训练了卷积层,然后使用一倍分辨率用来训练检测。
我们也训练了一个YOLO的快速版本,其用于快速进行物体检测并且给出边界框。fast YOLO使用了一个有更少卷积层的神经网络(9个而不是24个)以及卷积层中有更少的卷积核(过滤器)。除了网络的规模,其他的训练和测试的参数YOLO和fast YOLO是一样的。
网络的预测输出是一个7×7×30的张量。
2.2 - 训练
我们在ImageNet 1000-class挑战赛数据集上预训练了我们的卷积层。为了预训练,我们使用了图3中的前面20个卷积层接上一个平均池化层和一个全连接层。我们训练这个网络用了大约一周,达到了在ImageNet 2012验证数据集上单一切片top-5 88%的准确率,可以预Caffe's的模型库中的GoogLeNet相比。
然后我们将我们的模型应用到检测任务。Ren等人提出加入卷积层和连接层都可以提高预训练网络的性能。根据他们的样例,我们在我们的预训练网络上加入了四个卷积层和两个全连接层,它们都用随机权重初始化。检测任务通常需要细粒度的视觉信息,因此我们将网络的输入像素从224×224增加到448×448。
我们最后一层同时预测了类别概率以及边界框位置。我们利用图像的宽和高归一化边界框的宽和高,从而使得边界框的宽和高表示数值落在0和1之间。我们将边界框的坐标x和y参数化,使得其成为特定网络单元格位置的偏移量,因此他们的数值也在0和1之间(怎么表示的?没有正负号吗?此处存疑问)。
我们对最后一层使用线性激活函数,而其他所有层使用下述的leaky rectified线性激活函数:
$$\phi (x)=\left\{\begin{matrix}x,\quad if\quad x>0\\0.1x,\quad otherwise\end{matrix}\right.$$
我们优化模型输出的平方误差和。我们使用平方误差和是因为这样容易去优化,虽然它并不符合我们最大化平均精度的目标。它将定位误差和分类误差同等加权,这可能不是理想的。同时,在每一张图片中,一些网格单元并不包含物体。这单将使得这些单元的置信分数为0,通常会超过包含对象的单元格梯度。这可能导致模型的不稳定,导致训练在早期出现分歧。
为了补救这个问题,我们增加边界框位置预测的损失并且减少不包含物体的边界框置信预测的损失。我们使用两个参数$\lambda_{coord}$和$\lambda_{noobj}$来实现。我们设置$\lambda_{coord}=5$和$\lambda_{noobj}=.5$。
平方误差和对于大回归框和小回归框有着同等权重。我们的错误度量应该反映出小边界框的小偏差比大边界框的小偏差更重要(小的偏差一点,结果就会偏差很多,而大的偏差一点,并不会很影响结果)。为了部分解决这个问题,我们预测边界框的宽和高的平方根而不是直接预测宽和高。
YOLO对于每一个网格单元预测多个边界框。在训练时候,我们只希望每一个对象只用一个边界框预测器来负责表示。我们根据哪一个边界框跟真实边界框有最高的IOU来决定分配其作为负责预测一个对象的预测器。这将使得边界看预测器越来越“专业”。每一个预测器对于特定的尺寸、长宽比例、或者对象类别的预测会越来越好。
在训练的时候,我们优化下面这个多部分损失函数:
其中$1^{obj}_i$表示在网格单元$i$中有对象出现。而$1^{obj}_{ij}$表示在网格单元$i$中的第$jth$个边界框负责那个对象的预测。
注意到,这个损失函数只有当有一个对象在网格单元中,才会对分类错误进行惩罚(因此前面讨论了条件类别概率)。这也只有当一个预测器负责真实边界框时才会对边界框坐标定位误差进行惩罚(也就是在该网格单元中有最高的IOU预测器)。
我们在PASCAL VOC 2007和2012数据集上训练这个网络大约135个迭代。测试时候我们也在2012和2007测试数据集上进行。训练过程中我们使用的batch size为64,momentum为0.9以及0.0005的decay。
我们的学习率策略如下:对于第一个迭代,我们缓慢地将学习率从$10^{-3}$提高到$10^{-2}$。如果我们从较高的学习率开始我们的模型通常会因为不稳定的梯度而发散。我们接下来以$10^{-2}$的学习率训练75个迭代,然后减少到$10^{-3}$再继续训练30个迭代,最后减少到$10^{-4}$再训练30个迭代。
为了避免过拟合,我们使用了dropout和扩展增强数据集。第一个连接层之后的dropout层的rate为0.5,以防止层之间的相互适应。对于数据增强,我们引入了高达20%的原始图像进行随机放缩和平移。我们同时也在HSV颜色空间中随机调整图像的曝光和饱和度,其调整幅度高达1.5。
2.3 - Inference
类似于训练,对一张测试图片进行预测检测只需要一次网络评估。在PASCAL VOC,这个网络对于每一张图片预测98个边界框以及对于每一个边界框预测类别概率。YOLO在测试时候特别快因为它只需要一次简单的网络评估,而不像给予分类器的方法(需要多步处理,或者需要对图片进行复杂的预处理)。
网格的设计在边界框预测中强调了空间的多样性。通常来说,一个对象只落在一个网格单元里面,因此网络只需要对于每一个对象预测一个边界框即可。然而,一些大的对象或者对象刚好在多个网格单元的边缘可能会被归属有多个网格单元。非极大值抑制能够用来综合这些重叠的检测。虽然不像R-CNN或者DPM那样对性能至关重要,但非极大值抑制使得mAP中增加了23%。
2.4 - YOLO的局限性
YOLO对边界框预测施加了严格的空间约束,因为每个网格单元只能预测两个边界框,并且只能有一个类。这个空间约束限制了我们模型能够预测的临近对象的数量。我们的模型在处理以群体形式出现的小对象时会有困啦,比如成群的鸟。
因为我们的模型是通过数据集来学习预测边界框的,所以它很难推广到新的或者不常见的宽高比例或者不同属性的对象。由于我们的架构有多个从输入图像的下采样层,我们的模型还使用了相对粗糙的特征来预测边界框。
最后,当我们训练一个大约有检测功能的损失函数时候,我们的损失函数对于小边界框和大边界框中的错误做了同等的对待。大边界框的小错误可能没什么影响,当小边界框如果有稍微的错误偏差将极大地影响到IOU。YOLO中的误差主要还是定位的误差。
3 - 与其他检测系统进行比较
目标检测是计算机视觉中的一个核心问题。检测过程通常是从输入图像提取一组鲁棒特征开始。然后,使用分类器或者定位器来从特征空间中识别出对象。这些分类器或者定位器既可以以活动窗口的方式在整个图像上运行,也可以在图像中的某些子区域进行运行。我们着重将YOLO检测系统和几个顶尖的识别框架的关键的相似点和不同点进行比较。
Deformable parts models(DPM):DPM使用了一种滑动窗口方法来进行目标检测。DPM使用不相交的通道(disjoint pipeline,分离模块?)来提取静态特征,区域分类,对高分区域预测边界框等等。我们的系统将这些分离的部分都替换成一个简单的卷积神经网络。这个网络提供了特征提取,边界框预测,非极大值抑制以及上下文并发推理(contextual reasoning all concurrently)等功能。相比DPM,我们的网络并不是提取静态特征,而是在线的训练特征并且根据检测任务优化它们。我们的统一模型相比DPM有着更快的速度以及更高的准确率。
R-CNN:R-CNN以及它的一些变种使用建议区域(region proposals)而不是滑动窗口去找到图片中的目标。选择性搜索生成潜在可能的边界框,一个卷积网络用来提取特征,一个SVM(支持向量机)来对边界框进行平衡,一个线性模型来调整边界框,以及非极大值抑制来消除重复的检测。这个复杂的方法要求每个阶段都必须独立地进行精确的调优,这导致系统非常慢,在测试时候预测一张图片需要40秒以上。
YOLO和R-CNN有一些相似之处。每一个网格单元通过卷积特征提出一个潜在的边界框和对应的分数。然而,我们的系统在王哥哥单元上设置了空间约束,这有助于减少同一个对象被多次检测。我们的系统也给出了更少的回归框,对于每张图片之给出了98个,而选择性搜索大约有2000个。最后,我们的系统综合了这些分离的部分为一个简单的、联合优化(jointly optimized)的模型。
其他快速分类器:快速的和更快的R-CNN是通过共享计算以及使用神经网络去提供预测区域而不是选择性搜索来加速R-CNN框架的速度。当它们实现了在R-CNN的基础上的速度和准确率的提升的同时,还是仍然不能达到实时性能。
一些研究工作致力于加速DPM。它们加速了HOG计算,使用级联,并将计算放入GPU中。但是,DPM实际上实时速度只有30Hz。
相比分开的去优化一个大的检测系统中的某一些独立的部分,YOLO提出了一个统一的模型设计并且它很快。
像人脸或者人这样的单一检测器能够被高度的优化,因为它们处理很少的变化。YOLO是一种通用的目标检测器,它可以学习同时检测多种目标。
Deep MultiBox:不像R-CNN,Szegedy等人训练一个卷积神经网络来预测感兴趣的区域而不是通过选择性搜索。MultiBox能够在单一目标检测中把置信分数预测替换成单一类别预测。然而,MultiBox不能够实现通用的目标检测,并且它还是一个大的检测系统中的一个部分,需要更敬意不的图片小块分类。YOLO和MultiBox都使用了卷积网络去预测一张图片中的边界框,但是YOLO是一个完整的检测系统。
OverFeat:Sermanet等人训练一个卷积神经网络去预测定位并且调整定位器去做检测。OverFeat有效地使用了滑动窗口检测,当它仍然是一个分离系统。OverFeat优化对象是定位信息,而不是检测性能。类似DPM,定位器在做预测的时候只看到了定位信息。OverFeat不能关注到全局的上下文信息,因此需要有效的后续处理来提供目标间具有相关性的检测效果。
MultiGrasp:我们的工作跟Redmon等人提出的grasp detection有着相似的设计。我们的网格边界框预测方法是基于回归抓取的MultiGrasp系统(the MultiGrasp system for regression to grasps)。然而,grasp detection是一种比目标检测更加简单的任务。MultiGrasp只需要去预测一张只包含一个对象的图片中的一个单一的graspable region。它不需要去评估尺寸、位置以及边界,也不需要预测它所属的类别,而只需要找到一个适合抓取的区域(find a region suitable for gripping)。而YOLO需要对一张图片中有多个对象以及多种物体来预测边界框以及类别概率。
4 - 实验
首先,我们在PASCAL VOC 2007上比较YOLO和其他实时检测系统。为了理解YOLO和R-CNN变种之间的不同,我们讨论YOLO和Fast R-CNN(一种高性能版本的R-CNN)在VOC 2007上的错误率。基于不同的错误表现,我们提出了YOLo可以用来对Fast R-CNN检测来做重新扫描,以带来更少的背景错误检测,给出更好的性能。我们也使用了在VOC 2012上的结果并且比较了其预当前最先进的方法的mAP。最后,我们展示了YOLO在两个艺术作品数据集上相比其他检测器有更好的扩展到新领域的性能。
4.1 - 预其他实时系统的比较
一些目标检测的研究工作致力于在提高基准检测通道的速度。然而,只有Sadeghi等人实际上提出了一个实时检测系统(一秒30帧以上的速度)。我们将YOLO与它们运行在30Hz或者100Hz的DPM的GPU实现进行比较。虽然其他的工作并没有达到实时标准,当我们还是比较了它们的相对mAP以及速度,以检验目标检测系统中科研的精确性能。
Fast YOLO是一种在PASCAL上的快速目标识别方法。众所周知,它是现存的最快的目标检测器。在有52.7%的mAP情况下,它相比之前的实时检测系统提高了一倍的准确率。YOLO在保持实时性能的同时,将mAP增加了10%。
Fastest DPM有效地提高了DPM的速度而不会牺牲太多的mAP,但它相比真正的实时性能还差了一倍速度。这也受限于与神经网络方法相比,DPM相对较低的检测准确率。
R-CNN minus R将选择性搜索替换成静态边界框选择。这提高了R-CNN的速度,但它仍然缺乏实时性并且由于没有好的选择(proposals)而严重影响了准确率。
Fast R-CNN加速了R-CNN的分类步骤,但是它仍然依赖于选择搜索,这对于每一张图片需要花费2秒去生成边界框。因此,它有着不错的mAP但是0.5帧每秒的速度还远达不到实时性。
最近的Faster R-CNN将选择搜索替换成了一个神经网络去生成边界框,类似于Szegedy等人所提出的。在我们的测试中,它们最高准确率的模型的速度为7帧/秒,而它们低一点准确率的模型的速度达到了18帧/秒。Faster R-CNN的VGG-16版本比YOLO多了10mAP但是它也慢了6倍。ZeilerFergus Faster R-CNN只比YOLO慢了2.5倍但准确率却更低。
表1:在PASCAL VOC 2007上的实时系统。比较快速检测器的性能和速度。Fast YOLO是PASCAL VOC检测中历史上最快的检测器,而且它还有其他检测器两倍的准确率。YOLO相比Fast YOLO多了10 mAP的准确度而且还保持着实时性。
4.2 - VOC 2007错误分析
为了更进一步的验证YOLO和当前最先进的检测器的不同,我们关注VOC 2007的详细分类。我们比较YOLO和Fast R-CNN,因为R-CNN是在PASCAL上有着最好性能的检测器之一,并且它是开源可获取的。
我们使用Hoiem等人提出的方法和工具。对于在测试时候的每一个类别,我们关注对于该类别的top N的预测。每一个预测要么是正确的,要么根据错误的类型进行分类:
- 正确:正确类别并且IOU>.5
- 定位:正确类别,.1<IOU<.5
- 相似:类别是相似的,IOU>.1
- 其他:类别是错误的,IOU>.1
- 背景:IOU<.1对于任何对象
图4显示了所有20个类别中每种错误类型的平均细分。
图4:错误分析:Fast R-CNN vs. YOLO:这些图显示了对于不同类别的top N检测的定位和背景错误的百分比(N=#个在该类别的对象)。
YOLO对于目标类别检测正确相对困难一些。在YOLO的错误中,定位错误(Localization error)占比超过其他错误占比总和。Fast R-CNN有着更低的定位错误但是更高的背景错误。13.6%的检测结果是错误的并且是不包含任何对象的。Fast R-CNN预测到背景检测的可能性几乎是YOLO的3倍。
4.3 - 综合Fast R-CNN和YOLO
YOLO相比Fast R-CNN有着更少的背景检测错误。使用YOLO去评估R-CNN检测出来的背景检测可以有效的提高系统的性能。对于每一个R-CNN预测出来的边界框,去比较时候YOLO也预测出类似的边界框。如果有,我们基于YOLO的预测概率以及两个边界框的重叠给出改进的预测(prediction a boost)。
最好的Fast R-CNN模型在VOC 2007测试数据集上实现了71.8%的mAP。当将其与YOLO结合之后,mAP增加3.2%到75.0%。我们也尝试将Fast R-CNN与其他一些版本的Fast R-CNN进行结合。这些结合体的mAP增加在.3%到.6%之间不等,如表2可以看到细节。
表2:在VOC 2007上的模型综合实验。我们验证了将最好版本的Fast R-CNN综合不同模型的效果。综合YOLO提升了不错的性能,而综合其他版本的Fast R-CNN相比没有提高很多效果。
来自YOLO的提高不是简单的模型综合的副产品,因为综合其他版本的Fast R-CNN只有少量的改进。更确切地说,这是因为YOLO在测试时的错误和Fast R-CNN时不一样的,而这在综合之后对于提高Fast R-CNN的性能时非常有效的(取长补短)。
不幸的是,这种综合并没有从YOLO的速度中获益,因为我们分别运行每个模型然后在综合结果(速度至少时慢的那个模型的速度)。然而,因为YOLO时如此之快以至于它并不会导致在Fast R-CNN上增加额外的计算时间。
4.4 - VOC 2012结果
在VOC2012测试集上,YOLO的评分为57.9% mAP。这是低于当前最好的方法的,而接近于使用VGG-16的原型R-CNN,见于表3。像比如接近的竞争对手,我们的系统对于小目标的识别是困难的。例如像瓶子、羊以及电视或者镜子,YOLO的评分相比R-CNN或者Feature Edit低8%-10%。然而,在其他类别上,例如汽车或者火车,YOLO有着更高的表现。
我们综合Fast R-CNN + YOLO是一种最高效的检测方法之一。Fast-CNN在综合YOLO之后提高了2.3%的提升,在公开排行榜上的名次上升了5名。
表3:PASCAL VOC 2012排行榜。YOLO与截至2015年11月6日的完整comp4(允许外部数据)的公共排行榜的比较。不同的检测方法的总平均准确率以及每一种类型的平均准确率被展示出来。YOLO是其中唯一的一个实时检测器。Fast R-CNN + YOLO是排名第四高的方法,相比于Fast R-CNN有2.3%的提升。
4.5 - 推广性(Generalizability)
学术上的目标检测数据集将训练和测试数据整理成一样的分布。而在现实应用中,很难预测所有可能的用例,并且测试数据与系统之前看到的情况往往不同。我们希望我们的检测器能够学习视觉概念的通用表示,以便它们能够在测试时推广到新的领域或者更好的处理意外的输入。
我们在Picasso数据集和People-Art数据集上比较了YOLO和其他检测系统,这两个数据集将推广到艺术品检测。而模型是在VOC数据集子集上训练并且用在艺术品上来检测人物。
图5显示了YOLO以及其他检测方法的效果。作为参考,我们给出了只在VOC 2007上训练的人物检测AP。应用在Picasso上的模型在VOC 2012上训练,而应用在People-Art上的模型实在VOC 2010上训练的。
图5:推广到Picasso和Peole-Art的结果。
YOLO在各个方面都优于其它检测方法。它在VOC 2007上有着很好的性能,并且当它应用到艺术品检测时它的AP下降幅度小于其他方法。
R-CNN在VOC 2007上有着高的AP。然而,当R-CNN应用于艺术品检测时,它的表现会大幅度下降。这表明R-CNN是高度适应于PASCAL VOC。R-CNN使用选择搜索(对于自然图片高度调优的前提下)去生成边界框。R-CNN中的分类器阶段只是观察一些小区域,而这的效果好坏高度依赖于选择搜索的好坏。
DPM在应用到艺术品识别时很好的保持了它的AP。之前的工作推理说DPM能够表现良好是因为它有着强大的目标大小形状以及布局分布的空间模型。虽然DPM不像R-CNN那样减少很多的AP,当它初始的AP确相对较低。
YOLO在VOC 2007上有着很高的性能并且它推广的效果也很好。类似于DPM,YOLO也对目标的大小和形状进行建模。因为YOLO看到的是整张图片,所以它也对目标间的关系以及场景中哪些地方通常出现图像的情况进行建模。艺术品和自然图片在像素级别上有着很大的不同,但它们中的目标大小和形状确是显示的,因此YOLO能够很好的预测边界框和检测目标。
5 - 在户外进行实时检测(Real-Time Detection In The Wild)
YOLO是一个快速的、准确的目标检测器,这使其成为计算机视觉应用的理想选择。我们将YOLO与网络摄像头连接起来,并验证它时候具有实时性能,包括从摄像头获取图像并且显示检测结果的时间。
最终的系统是交互式的、吸引人的。当YOLO对图像进行处理的部分和网络摄像头连接时,它的功能就像是一个跟踪系统,在物体移动和外观变化时进行检测。该系统的demo演示可以在我们的YouTube频道上找到:https://goo.gl/bEs6Cj。
图6:定性结果。YOLO在艺术品以及自然图片上的效果。这大部分是准确的,虽然它认为第二行第二张图像中的人是飞机。
6 - 结论
我们介绍了YOLO,这是一个统一模型来做目标检测。我们的模型结构简单,可以在完整图片上直接进行训练。不像基于分类器的方法,YOLO直接训练与检测性能相关的损失函数,并且整个模型是一起训练的。
Fast YOLO是文献中最快的通用目标检测方法,而YOLO则是代表实时目标检测的最前沿。YOLO同时也能够很好的推广到新领域,这使得其是需要依赖于快速、健壮的目标识别领域的理想选择。