YOLO论文阅读记录

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/shiheyingzhe/article/details/83900649

YOLO:You Only Look Once: Unified, Real-Time Object Detection。you only look once,仅仅看一眼就能检测出来结果,说明速度很快而且是单阶段的。
论文的链接:https://arxiv.org/abs/1506.02640
YOLO将目标检测看做是回归问题,输出空间分隔的包围盒以及类的概率。是单阶段的神经网络,可以进行端到端的训练,直接从全图预测包围盒以及类概率。检测网络是单阶段的。
这个架构的速度很快,基础YOLO模型实时处理图片的速度是45帧/S,Fast YOLO的速度更快达到155帧/S。mAP是其他实时检测系统的两倍。和其他“先进”的检测系统相比较(不仅仅包括实时也包括不实时的),YOLO有更多定位的错误,但是很少将背景识别为物体类。YOLO学到很多泛化的特征表示,当检测的内容从自然图像变为人工画作时,YOLO比其他方法像DPM、R-CNN,表现好很多。

介绍

人类看到图片时,知道有哪些物体,在什么位置。人类的视觉系统是快速且准确的,允许人们执行复杂的任务。快速且准确的算法很有帮助。同样反应灵敏的机器系统在工业中也很重要。
当前的检测系统重新定义分类器去执行检测任务。为了检测物体,用分类器对测试图片的很多区域进行打分评估;R-CNN使用区域建议框的方法生成可能存在检测类的区域,然后对这些区域使用分类器打分。分类以后使用回归的方法提高包围盒的IOU。并清除重复检测到的框并重新打分。这样做速度很慢也很难去优化。因为要分阶段训练。
本文将检测作为回归问题,从图片中直接获得包围盒坐标和类概率。you only look once(YOLO)就能知道有什么物体,物体在什么位置。


图中的单个卷积神经网络,同时预测包围盒与这些boxes的类概率,YOLO使用全图训练并且直接优化检测的效果。这个模型和传统模型相比较有几个优点:
1、YOLO很快,不用多阶段训练,是回归问题,仅需要运行神经网络。能处理视频流数据,比其他实时系统mAP的两倍;
2、预测时使用全局信息,不像滑窗和基于区域建议的技术。YOLO在训练和测试时看整张图片,所以它隐式地编码了关于类的上下文信息。Fast R-CNN网络误将很多背景检测为物体因为不能看到上下文。YOLO误识背景的数量比Fast R-CNN的一半还少。
3、YOLO学到了物体类的泛化表示。当在自然图像上训练,在人工画作测试时,YOLO比DPM、R-CNN表现好很多。因为YOLO是高度泛化的,当应用到新的领域或有意外的输入时不太可能崩溃。

在准确率上YOLO仍然落后于先进的检测算法,在图片中尽管能快速地识别物体,但在定位某些物体的时候仍然有困难,特别是小物体。

统一的检测系统
将分开的检测组件统一为一个神经网络。网络使用整张图片的特征预测包围盒。同时也预测所有被检测类的包围盒。可以进行端到端的训练,当保持较高准确率的同时速度也很快。
系统将输入分为S x S个网格,如果一个物体的中心在一个网格中,那么这个网格就负责预测这个物体。
每个网格预测B个包围盒以及这些盒子的置信度。置信度反映了模型对包围盒包含物体、预测的包围盒有多准确的信心。置信度confidence=Pr(Object)*IOU_{pred}^{truth}。如果网格中不存在物体,置信度应该为0。否则期望置信度=IOU。(因为此时Pr=1)。
每个包围盒包含5个预测值,x,y,w,h,confidence,(x,y)是相对于网格的中心坐标。w,h是相对于整张图片的预测值。因为Pr=1,此时confidence代表IOU。
每个包围盒也预测C个类的条件概率Pr(Class_i|Object)。这些概率取决于包含物体的网格。不管盒子的数量等于B,对每个网格仅预测一组类概率。(也就是说假设一个网格最多只有一个类,可能有多个相同类的物体)
测试的时候将条件类概率和单个盒子置信度的预测值相乘,式子的含义是Pr(Object),如果网格中有物体,则为1,否则为0。对每个盒子给出相应类的置信度分数。这些分数编码了类出现在盒子中的概率以及对应的IOU。
Pr(Class_i|Object)*Pr(Object)*IOU_{pred}^{truth}=Pr(Class_i)*IOU_{pred}^{truth}

图中展现将图片分为S x S个网格,每个网格预测B个包围盒和它们的置信度,以及C个待检测类的概率值。这些预测值被编码为长为S x S x(B * 5 + C)维的向量。
例:在PASCAL VOC数据集中验证时,S=7,B=2。数据集有20个类所以C=20。最终的预测向量是7 x 7 x30维。

网络设计

卷积神经网络从整张图片中提取特征,全连接层预测输出的概率和包围盒。卷积架构是参考的GoogLeNet分类模型。YOLO网络有24个卷积层,2个全连接层。而不是这个inception modules。简单的使用1 x 1降维层紧跟着3 x 3的卷积层。
本文同样也训练一个YOLO的快速版本,Fast YOLO使用9层卷积层

训练
使用图中前20个卷积层在1000类的ImageNet数据集中预训练(输入图片大小是224*224),后面接平均池化层和全连接分类层。预训练完成后应用到检测当中时,增加4个卷积层和2个全连接层。检测需要细致的视觉信息。所以将输入从224*224修改为448*448。 最后预测类的概率和包围盒。w,h由图片的宽、高归一化到(0,1)之间。将x,y参数转化为特定单元格位置的偏移也在0,1之间。
最后一层使用线性激活函数,其余层使用修正以后的ReLu:
\phi (x)=\left\{\begin{matrix} x, &if\ x>0 \\ 0.1x, &otherwise \end{matrix}\right.
loss使用平方和损失,然而并没有达到最大化平均精度的目标。因为将定位错误和分类错误同等对待,可能不是理想的。同样每张图片有很多网格根本不包含物体,这些格子的confidence应该为0,经常导致有物体网格的梯度不对,这导致模型训练不稳定,训练过早的发散不收敛。
为了解决这些问题,提高包围盒预测的损失,降低不包含物体格子的置信度预测的损失。使用2个参数\lambda _{coord}\lambda _{noobj}=0.5。
平方和损失同样也平等对待大包围盒的损失与小包围盒的损失,误差衡量标准应该体现出大包围盒的小偏差没有小包围盒的偏差重要。就是相同的偏差,小包围盒的误差应该比大包围盒的误差大。为了解决这个问题,对w,h使用平方根。
YOLO对每个网格预测两个包围盒,训练的时候,仅期望一个包围盒预测器负责一个物体,这个预测的物体需要满足和ground truth有最大IOU。导致包围盒预测器的专门化,每个预测器更好地预测特定大小、长宽比或者物体类,提高了整体的召回率。
Loss函数:
\lambda _{coord}\sum_{i=0}^{S^2}\sum_{j=0}^{B}\mathbb{I}_{ij}^{obj} \left [ (x_i-\hat{x_i})^2+(y_i-\hat{y_i})^2 \right ] \vspace{2ex} \newline +\lambda _{coord}\sum_{i=0}^{S^2}\sum_{j=0}^{B}\mathbb{I}_{ij}^{obj} \left [ (\sqrt{w_i}-\sqrt{\hat{w_i}})^2+(\sqrt{h_i}-\sqrt{\hat{h_i}})^2 \right ] \ \ \vspace{2ex} \newline +\sum_{i=0}^{S^2}\sum_{j=0}^{B}\mathbb{I}_{ij}^{obj}(C_i-\hat{C_i})^2 \vspace{2ex} \ \ \ object \ confidence \newline +\lambda_{noobj}\sum_{i=0}^{S^2}\sum_{j=0}^{B}\mathbb{I}_{ij}^{obj}(C_i-\hat{C_i})^2 \vspace{2ex} \ \ \ no\ object \ confidence \ \newline +\sum_{i=0}^{S^2}\mathbb{I}_{i}^{obj}\sum_{c\in{classes}}(p_i(c)-\hat{p_i}(c))^2 \ \ \ \ probability \ object \ class

其中的\mathbb{I}_i^{obj}表示网格i中是否有物体(ground truth),\mathbb{I}_{ij}^{obj}表示网格i的第j个包围盒预测器负责预测。
从公式最后一项可以看出,对物体类不论B等于多少,每个网格只计算一类损失,就是说假设一个网格最多只有一个类,可以有多个相同类的物体。损失函数仅仅惩罚这些格子里面有物体的分类错误,没有则分类损失为0。仅当预测器负责ground truth box时(在网格中有最大的IOU值),才惩罚包围盒坐标的错误,如果预测器在的网格没有物体,就没有定位损失。

推论
网格的设计使得预测的包围盒在空间中独立,一个物体落入哪个网格是很清楚的,网格对每个物体仅预测一个包围盒。然而,某些大物体或靠近网格交界处的物体可能被多个包围盒框住。NMS能去掉这些多出来的框。使用NMS以后mAP提高2到3个百分点。

YOLO的限制
YOLO对包围盒预测有很强的空间限制,因为每个网格仅仅预测两个包围盒,并且每个网格最多只能属于一个待检测类。空间约束限制了模型能够预测的临近物体的数量。对小物体的预测不准确。
对新的、长宽比不寻常的物体表现不太好。该架构对输入的图片使用多个下采样层,以至于使用粗糙的特征预测包围盒。主要问题在于定位不准确,大包围盒的小误差没什么,但小包围盒相同的误差对IOU的影响很大。

实验

和其它实时检测系统比较

VOC 2007检测错误分析 
YOLO中由于定位导致分错的占绝大多数,Fast R-CNN中绝大多数是背景被错检测为物体类。
Correct: correct class and IOU > .5
Localization: correct class, .1 < IOU < .5
Similar: class is similar, IOU > .1
Other: class is wrong, IOU > .1
Background: IOU < .1 for any object

在毕加索画作以及其它画作的表现
由于YOLO有很好的泛化能力,在不是自然图像,是人类画的图片上,YOLO的表现是很好的。

猜你喜欢

转载自blog.csdn.net/shiheyingzhe/article/details/83900649
今日推荐