欢迎光临 x-algo
关注算法在工业界应用
Hi, 这是一个关注大数据算法在工业界应用的网站

YOLO模型原理

看此文之前,最好已经了解Faster R-CNN

YOLO的特点

  • 直接对bounding box回归,并不是计算候选和gt之间的 \(\Delta\) ,并且不构造 hard negatives
  • 速度快,将检测过程变为一个回归问题,简化了很多计算过程(Faster R-CNN也是回归)
  • 全局观,不像R-CNN那样只利用region信息,YOLO会利用整体信息
  • 泛化能力强,尤其训练和测试数据不一致的时候可以表现比较好的泛化性
  • 准去率略低,YOLO是准确率和速度之间的tradeoff

基本原理

YOLO工作过程分为下面几个步骤:

  1. 将原图划分为 \(S\times S\) 的网格
  2. 每一个网格会预测B个bounding box和confidence得分,五元组具体为 \((x,y,w,h,Pr(Object)*IOU_{pred}^{truth})\) ,其中 \(Pr(Object)\) 表示当前位置是一个Object的概率,IOU是预测的box和groundtruth之间的重叠概率(比例?)。其中x,y是中心坐标。
  3. 每一个网格预测类别概率 \(C_i=Pr(Class_i|Object)\) .
  4. 预测的时候,将类条件概率和置信度相乘: \(Pr(Class_i|Object) * Pr(Object) * IOU_{pred}^{truth} = Pr(Class_i) * IOU_{pred}^{truth}\)

用一张图可以表示为:

QQ20170227-0

网络结构

QQ20170227-1

简单暴力的结构~~

网络卷积层先在imagenet的数据上做了预训练(224x224输入),然后在输入为448x448的图上做检测,由于卷积部分参数和输入图像大小没有关系,所以这么做是可行的。接下来进行fine tune...

最后一层有7x7=49个输出,每一个输出是30维,其中30=20(分类)+5x2(回归的bbox)。

训练

  • 30个位置,都采用均方误差作为损失函数
  • 如果当前位置没有Object,置信度就为0,通常一个图片中有很大一部分grid是没有Object的,所以会导致不包含Object的置信度的梯度比包含Object的置信度梯度具有压倒性优势。所以训练的是有针对置信度,引入了权重。
  • 均方误差还会导致bbox大的不公平,例如同样是偏差了1/10,bbox比较大的均方误差就很大。所以这里直接对bbox的平方根进行回归,相当于是削弱了大的bbox的权重。
  • 训练的时候,会回归出来多个bbox的预测结果,通过采用「承包责任制」,训练的时候,一个object的groundtruth只会对应一个bbox的回归对应。从而让每一个回归的bbox都有自己擅长回归的大小、比例、object类型等。

得到损失函数为:

QQ20170228-2

综上,只有grid有object的时候才进行bounding box的回归和类别的回归,回归bounding box的时候当B>1时只有分配的那一个predictor被激活;没有object的时候,只针对置信度进行回归。

数据增强和学习率

通过随机放缩+饱和度+曝光度进行数据增强;学习率先是(底->高->低),论文中说先底的目的是防止从一开始就出现梯度不稳定和模型不收敛。

非极大抑制

类似R-CNN和DPM, 当遇到比较大的Object的时候,还是需要进行一下非极大抑制的操作。

YOLO的局限

由于B的值为2,也就是一个grid只会回归两个box,并且一个grid只会有一个分类,所以如果一个grid中有多个类别就会有问题。YOLO对类似一群鸟(多个小Object)这样的图片有较好的结果。

 

原始论文

《You Only Look Once: Unified, Real-Time Object Detection》

未经允许不得转载:大数据算法 » YOLO模型原理

评论 抢沙发

*

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

关注大数据算法在工业界应用

本站的GitHub关于本站