学习笔记七--YOLO

本周主要阅读了论文You Only Look Once:Unified,Real-Time Object Detection,对该论文进行学习总结。

文中提出了一种新的目标检测方法,称为YOLO。只需要在图像上看一次(YOLO),以预测出现的目标和位置。主要思想是将目标检测框架看作回归问题从空间上分割边界框和相关的类别概率。单个神经网络在一次评估中直接从完整图像上预测边界框和类别概率,可以进行端到端的优化。

动机:实现更快速、更准确的目标检测算法,将检测运用到实时的场景。

现有的检测系统重用分类器去执行检测。在检测中,检测系统采用一个 classifier去评估一张图像中各个位置一定区域的边框内,是否有物体、判断物体是哪种类别。而文中提出的YOLO模型很简单,单个卷积网络同时预测这些box的多个边界框和类概率。

学习笔记七--YOLO

YOLO在训练期间和测试时会看到整个图像,所以它隐式地编码了关于类的上下文信息以及它们的外观,可以降低图片中背景的误检率。但其在定位小目标物体的精度上仍有差距。

一、Unified Detection统一检测

我们的系统将输入图像分成S×S的网格。如果一个目标的中心落入一个网格单元中,该网格单元负责检测该目标。每个网格单元预测这些box的B个边界框和置信度分数。这个置信度分数反应了模型对于这个 grid cell 中预测是否含有物体,以及是这个物体的可能性是多少。置信度定义为:

学习笔记七--YOLO

该置信度由两部分组成,一是单元格内是否有目标,二是边界框的准确度。如果该单元格中不存在目标,则Pr(Object)=0,置信度分数应为零。否则,单元格中存在目标Pr(Object)=1,置信度分数等于预测框与真实值之间联合部分的交集(IOU)。

其中每个边界框预测包括x,y,w,h和置信度分数。w和h的值使用图像的宽度和高度进行归一化到[0,1]区间内;x,y是bounding box中心位置相对于当前格子位置的偏移值,并且被归一化到[0,1]。

C个条件类别概率Pr(Classi|Object),这些概率以包含目标的网格单元为条件。每个网格单元只预测的一组类别概率。

学习笔记七--YOLO

最终得到每个框特定类别的置信度分数,这个分数表示了该类出现在框中的概率以及预测框拟合目标的程度。

虽然每个单元格可以预测B个bounding box,但是最终只选择IOU最高的bounding box作为物体检测输出,即每个格子最多只能预测出一个物体。这就导致对小目标检测的准确率没有很好。

总结来说,模型将图像分成S×S的网格,并且每个网格单元预测B个边界框,每个边界框包括四个坐标预测和置信度,以及C个类别概率。这些预测被编码为S×S×(B∗5+C)的张量。

学习笔记七--YOLO

二、网络设计

学习笔记七--YOLO

网络的初始卷积层从图像中提取特征,而全连接层预测输出概率和坐标。网络有24个卷积层,后面是2个全连接层。我们只使用1×1降维层,后面是3×3卷积层。

快速YOLO使用具有较少卷积层的神经网络,将24层降为9层。

预训练:在ImageNet 1000类竞赛数据集上预训练卷积层。使用图中的前20个卷积层,接着是平均池化层和全连接层。

检测:在预训练模型的基础上,添加四个卷积层和两个全连接层,并且具有随机初始化的权重。由于检测通常需要细粒度的视觉信息,因此将网络的输入分辨率从224×224扩大为448×448。

对最后一层使用线性**函数,所有其它层使用下面的leaky rectified linear activation:

学习笔记七--YOLO

损失函数:使用平方和误差,但是由于这样使得分类误差与定位误差的权重是相同的,这可能并不理想,这并不完全符合我们最大化平均精度的目标。另外,在每张图像中,我们直接将不包含任何对象的网格单元的“置信度”分数推向零,通常压倒了包含目标的单元格的梯度。这可能导致模型不稳定,从而导致训练早期发散。

解决方法:增加边界框坐标预测损失,并减少不包含目标边界框的置信度预测损失,设置λcoord=5和λnoobj=0.5

学习笔记七--YOLO

这个损失函数包括坐标预测、含有物体的边框的置信度预测、不含有物体的边框的置信度预测以及类别预测。

如果目标存在于该网格单元中,则损失函数仅惩罚分类错误。如果预测器“负责”实际边界框(即该网格单元中具有最高IOU的预测器),则它也仅惩罚边界框坐标错误。

网格设计强化了边界框预测中的空间多样性,一些大的目标或靠近多个网格单元边界的目标可以被多个网格单元很好地定位。非极大值抑制可以用来修正这些多重检测。

三、YOLO的限制

YOLO对边界框预测强加空间约束,因为每个网格单元只预测两个盒子,只能有一个类别。这个空间约束限制了模型可以预测的邻近目标的数量。对小目标产生限制。

由于模型学习从数据中预测边界框,因此它很难泛化到新的、不常见的方向比或配置的目标。

使用相对较粗糙的特征来预测边界框,因为我们的架构具有来自输入图像的多个下采样层。

损失函数会同样的对待小边界框与大边界框的误差。大边界框的小误差通常是良性的,但小边界框的小误差对IOU的影响要大得多。因此主要错误来源是不正确的定位。