【论文阅读笔记】You Only Look Once: Unified,Real-Time Object Dection

论文链接:https://arxiv.org/abs/1506.02640
作者:Joseph Redmon, Santosh Divvala, Ross Girshick, Ali Farhadi
发布时间:2015年1月发布,2016年5月月最后修改



前言
   YOLO之所以比 RNN系列要快,是因为其不通过选择区域,而是将图片分割成 S S 大小的网格,在每个网格里直接预测 B 个边框( 也就是5* B 个数,一个置信度,四个边框参数),而不是对边框进行回归。


概要

  相比较传统方法将目标检测定位为分类问题,YoLo算法将目标检测算法当做空间独立的bounding-boxes回归问题伴随着边框分类概率。【YoLo算法和Faster RCNN算法的区别在于,前者直接输出k个边框的回归预测以及该区域的类别预测(没有分支);后者先从RPN网络中提取候选区域,然后分别求类别(分类问题)和边框回归(回归问题)。另外,对于边框回归也不一样。Fast RCNN是对每一个对象分别进行回归,而YoLo则对每一个格子的bounding box都分别进行精确回归(每一个格子单元都有几个bounding box,后面YoLo v2中的anchor就是对这个的预设框)。

  该算法的架构是统一模型,即分类和回归是由同一个卷机网络推测的,其特点就是检测速度相当快。其实时检测图片速度为每秒 45 帧,其更快的版本可以达到 155 帧每秒。相对于当时最先进的算法,YoLo算法的定位错误率更高,但其对于背景的假阳性预测更低一般把背景当做负类)。其次,对于不同分布背景的数据的预测,其表现的比其他检测算法好,如利用自然图片训练,但检测的是艺术图,这是因为其学习了更好的一般表示【Fast RCNN发布时间为 2015.4 ,最后修改时间为 2015.9 Faster RCNN<.em>发布时间为 2015.6 ,最后修改时间为 2016.1 ,相比较而言都是用卷积网络学习的特征,但比较的时候只比较了RCNN,所以这几种架构之间的比较无从得知



引言

  就概要展示的速度而言( 45 / s ,更快版本能达到 155 / s ),这意味着该算法能用少于 25 m s 的延迟处理视频流。

  因为其处理特征的方式不像滑动窗口和候选区域,所以其能比传统的方法感受更多的区域(能看到整张图片)。所以YoLo算法不像Fast RCNN一样,会因为看不到更大的上下文信息而错误地将背景分类为某个对象。

  YoLo算法的精确度比当时最先进的检测算法要低。因为当其快速定位的同时,很难兼顾精确,特别是当检测对象很小的时候。


统一检测(Unified Detection)
  YoLo算法从整张图片提取特征来预测每一个bounding box,它也可以从一张图片同时预测所有的bounding box这意味着该网络了解整张图像及其所有的对象。YoLo被设计为端对端以及实时检测的模型,并且其拥有高准确率。

这里写图片描述

  YoLo检测系统将输入图片分为S*S个格子。如果一个对象的中心在某个格子中,则这个格子就为检测这个对象负责。每个格子拥有 B bounding boxes及置信分数,这些置信分数反映系统对于这个边框预测的“信心”。本文将置信度定义为 P r ( o b j e c t ) I O U p r e d t r u t h 。即如果格子中没有对象存在,置信度应该为 0 ,如果有的话,则应该为predicted boxground truth的交并比(因此,文中的意思就是该置信度有两重意思:⑴ box中含有目标的置信度,如果有目标 P r ( o b j e c t ) = 1 ,否则 P r ( o b j e c t ) = 0 ;⑵ box预测的有多准,即IoU)。因此,每一个bounding box有 5 个预测值:x, y, w, h, 置信度。【所以该系统的输出为 S S ( B 5 + C )

  每个格子单元预测 C 个条件概率 P r ( C l a s s i | O b j e c t ) ,但不管一个格子单元的box的个数 B 是多少,一个格子单元只预测一个类别【每个格子最多代表一个类别】。

  在测试时,其预测边框的置信度为 P r ( C l a s s i | O b j e c t ) P r ( o b j e c t ) I O U p r e d t r u t h = P r ( c l a s s i ) I O U p r e d t r u t h ,即边框预测的类别概率乘上IOU

  在PASCAL VOC数据集上评价时, S = 7 B = 2 ,因为该数据集有20类,则 C = 20

网络设计

  YoLo网络的输入被resize 448 448 的大小,其网络结构如下图所示。【24个卷积层+2个全连接层

这里写图片描述

  Fast YoLo算法使用更少的卷积层( 9 个卷积层),其他的(超)参数和YoLo算法一样。

训练方法

  使用ImageNet 1000 类的分类数据集预训练YoLo网络的前20层,使用的池化层改为平均池化,以及一个全连接层用于分类。(作者使用了一个星期的时间使得在ImageNet2012验证集的Top-5准确率达到 88 % ,这准确率与 G o o g l e N e t <script type="math/tex" id="MathJax-Element-3576">GoogleNet</script>的模型准确率相当)

  据研究表明,如果在预训练网络上同时增加卷积层和全连接层可以改善表现(所以他们的预训练模型只有20个卷积层,也就是在微调时增加了 4 个卷积层和两个全连接层,这些权重都是随机初始化的)。【检测经常需要细粒度的视觉信息,所以作者将预训练模型的输入( 224 224 )变成了( 448 448 )】

  YoLo网络的最后一层同时输出类别概率和边框坐标信息。输出的时候会将边框信息正则化w,h除以图片的宽度和长度,那么w,h就在 0 1 之间;而x,y当作每个格子单元的偏移,则他们的值也在 0 1 之间。

  激活函数使用leaky rectified linear activation,公式如下:

ϕ ( x ) = { x , i f   x > 0 0.1 x , o t h e r w i s e

  损失函数平方和误差函数(使用这个函数是因为这个函数易于优化,但这个函数和我们的目标,maximizing average precision,不是很对齐,因为该损失函数将定位误差和分类误差看做是等重的,但事实不是如此。所以在本文的实际应用公式下会有不一样的权重。同时,对于一个格子而言,其不含对象的概率比含有对象的概率要大得多,所以如果不加以权重的话,网络会偏向于预测一个格子不含对象,使得模型不兼容,造成训练偏移。

  为了解决上面损失函数本身带来的“偏离”,作者将边框坐标的损失函数的权重提高,权重为 λ c o o r d = 5 ,将不含对象的box的置信度损失函数降低,权重为 λ n o o b j = 0.5

  平方和误差函数也把大边框和小边框的误差看做是等重的(对于大边框,小偏移可以看做是无关紧要的;对于小边框,小偏移就显得更为严重)。为了部分地解决这个,将 w h 代替w,h放入公式中。

损失函数如下:

(291) λ c o o r d i = 0 S 2 j = 0 B I i j o b j [ ( x i x ^ i ) 2 + ( y i y ^ i ) 2 ] (292) + λ c o o r d i = 0 S 2 j = 0 B I i j o b j [ ( w i w i ^ ) 2 + ( h i h i ^ ) 2 ] (293) + i = 0 S 2 j = 0 B I i j o b j ( C i C i ^ ) 2 (294) + λ n o o b j i = 0 S 2 j = 0 B I i j n o o b j ( C i C i ^ ) 2 (295) + i = 0 S 2 I i o b j c c l a s s e s ( p i ( c ) p i ^ ( c ) ) 2
  其中, I i o b j 表示如果第i个格子单元有对象,即如果有对象, I i o b j = 1 ,否则 I i o b j = 0 I i j o b j 表示第 i 个格子单元的第j个预测边框是否有对象,如果有, I i j o b j = 1 ,否则 I i j o b j = 0 前面两个表示边框回归的损失函数,后面两个是对边框的confidence进行预测,避免绝大部分格子都显示的是无对象的,造成网络偏向无对象预测;最后一个是对类别进行预测。总结一下:边框回归预测,置信度预测,类别预测

  YoLo算法对于每一个格子单元都预测多个bounding boxes。在训练的时候,对于每一个对象只希望一个bounding boxes负责,所以作者将拥有最高 I o U 的边框预测器作为负责的那个。(前面讲了,对象中心的那个格子对该对象负责,而最大IoU的那个边框准确的对该对象负责,这也造成不同边框是不一样的

  优化函数为动量梯度下降,批量为 64 ,动量为 0.9 ,衰减率为 0.005 。其训练周期为 135 ,其前 75 个周期的学习率为 0.01 ,后 30 个周期的学习率为 0.001 ,最后 30 个周期的学习率为 0.0001

  在训练的同时,使用 0.5 dropout,使用随机尺度变换等数据增强手段。


预测

  对于每张图片,预测 98 ( 7 7 B ) 个边框。使用非极大值抑制来处理重叠的边框。

YoLo的局限
  YoLo算法有强烈的空间限制:每一个格子单元只能代表一个类别,且只预测两个边框。强烈的空间限制导致算法很难检测靠近的对象,所以这个模型对于一群的小对象很难检测(比如一簇小鸟)。

  由于推测的边框是空间独立的,且是从数据中学习的,所以该模型很难预测新的或不寻常(长宽比,大小)的对象或配置。

  YoLo对于大边框和小边框的错误(偏移)都平等对待,这影响了模型识别的准确率。(使用 w , h w , h 只是部分解决了该问题,但没根本解决

猜你喜欢

转载自blog.csdn.net/qq_19784349/article/details/81175302
今日推荐