您的位置:首页 > 移动开发 > Objective-C

论文提要“You Only Look Once: Unified, Real-Time Object Detection”

2016-01-10 15:44 681 查看
转载于:http://blog.csdn.net/cv_family_z/article/details/46803421

版权归原作者所有.

项目主页:http://pjreddie.com/darknet/yolo/

这篇文章着重在检测的速度提升,区别于之前的方法是用分类器来做检测,文章对bbox和对应的类概率进行回归,检测速度可以达到45f/s,mAP与原始的R-CNN差不多。

出现原因: 

CNN在分类上已经可以达到实时,而在检测上R-CNN需要几秒的时间处理一张图片,主要是由于proposal的提取时间需要约1~2s的时间,然后还有很多后续步骤:proposal的特征学习,矫正bbox,消除虚警等,最好的方法需要2~40s时间处理完毕。并且R-CNN的每个检测步骤是分离的不便整体优化。

一体化的检测: 

输入图像划分为7*7的网格,如果一个物体的中心落在某个格子内,则对应的格子负责检测该物体。每个网格预测一个bbox和对应的类概率,系统流程如下: 



系统使用cnn实现并在VOC上测试,初始卷积层从图像中提取特征,全连接层预测概率和坐标。网络框架与GoogleNet类似,拥有24个卷积层和2个全连接层,网络如下图所示,最终的输出是对7*7网格的预测,每个网格预测20类的概率和坐标。 



网络训练: 

使用ImageNet进行初始训练,使用图3中的前20层加一个maxpooling层及两个全连接层进行训练,1星期训练得到top-5error为86%。由于检测需要更为精细的信息,作者将网络输入由224*224调整至448*448.

网络的最后一层预测类概率和bbox,在最后一层使用逻辑激活函数,其他层使用leaky ReLU: 



网络输出使用平方和误差,并引入尺度因子λ 对类概率和bbox的误差进行加权,同时为了反映出偏离在大的bbox中的影响比较小,文章使用bbox宽高的平方根,最终的损失函数是: 


 

为了避免过拟合,作者使用了dropout和数据增加。

参数化类概率: 

49个网格给出20类的概率,一幅图像产生980个预测的概率,大部分概率为0。这会导致训练离散,作者引入了一个变量解决这个问题:即某位置是否有物体存在的概率。因此除了20个类概率还有一个“objectness”概率Pr(Object),则某位置每一类的非条件概率为Pr(Object)与条件概率的乘积; 

Pr(Dog) = Pr(Object)*Pr(Dog|Object) 

在每个位置都对Pr(Object)进行更新,而只在有物体存在时才对Pr(Dog|Object)更新。

YOLO的限制: 

  1.由于YOLO具有极强的空间限制,它限制了模型在邻近物体上的预测,

    如果两个物体出现在同一个cell中,模型只能预测一个物体,所以在小物体检测上会出问题。

  2 另外模型对训练数据中不包含的物体或具有异常长宽比的物体扩展不是太好。

  3 loss函数对大小bbox采取相同的error也是个问题。

实验结果: 

在voc2012上的实验结果对比如下,YOLO在不基于R-CNN的方法中mAP最高,但比state-of-art低。 



YOLO的速度提升比较明显,在voc2007上的实验结果对比如下: 






0
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  CNN multi-tasks Detection