关闭

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

325人阅读 评论(0) 收藏 举报
分类:

参考链接: http://blog.csdn.net/tangwei2014

这是继RCNN,fast-RCNN 和 faster-RCNN之后,rbg(Ross Girshick)大神挂名的又一大作,起了一个很娱乐化的名字:YOLO。 
虽然目前版本还有一些硬伤,但是解决了目前基于DL检测中一个大痛点,就是速度问题。 
其增强版本GPU中能跑45fps,简化版本155fps。

论文下载:http://arxiv.org/abs/1506.02640 
代码下载:https://github.com/pjreddie/darknet

本篇博文focus到方法上。实验结果等整理全了再奉上。 
1. YOLO的核心思想

  • YOLO的核心思想就是利用整张图作为网络的输入,直接在输出层回归bounding box的位置和bounding box所属的类别。

  • 没记错的话faster RCNN中也直接用整张图作为输入,但是faster-RCNN整体还是采用了RCNN那种 proposal+classifier的思想,只不过是将提取proposal的步骤放在CNN中实现了。

2.YOLO的实现方法

  • 将一幅图像分成SxS个网格(grid cell),如果某个object的中心 落在这个网格中,则这个网格就负责预测这个object。 
    这里写图片描述
  • 每个网格要预测B个bounding box,每个bounding box除了要回归自身的位置之外,还要附带预测一个confidence值。 
    这个confidence代表了所预测的box中含有object的置信度和这个box预测的有多准两重信息,其值是这样计算的: 
     
    其中如果有object落在一个grid cell里,第一项取1,否则取0。 第二项是预测的bounding box和实际的groundtruth之间的IoU值。

  • 每个bounding box要预测(x, y, w, h)和confidence共5个值,每个网格还要预测一个类别信息,记为C类。则SxS个网格,每个网格要预测B个bounding box还要预测C个categories。输出就是S x S x (5*B+C)的一个tensor。 
    注意:class信息是针对每个网格的,confidence信息是针对每个bounding box的。

  • 举例说明: 在PASCAL VOC中,图像输入为448x448,取S=7,B=2,一共有20个类别(C=20)。则输出就是7x7x30的一个tensor。 
    整个网络结构如下图所示: 

  • 在test的时候,每个网格预测的class信息和bounding box预测的confidence信息相乘,就得到每个bounding box的class-specific confidence score: 
    这里写图片描述
    等式左边第一项就是每个网格预测的类别信息,第二三项就是每个bounding box预测的confidence。这个乘积即encode了预测的box属于某一类的概率,也有该box准确度的信息。

  • 得到每个box的class-specific confidence score以后,设置阈值,滤掉得分低的boxes,对保留的boxes进行NMS处理,就得到最终的检测结果。

3.YOLO的实现细节

  • 每个grid有30维,这30维中,8维是回归box的坐标,2维是box的confidence,还有20维是类别。 
    其中坐标的x,y用对应网格的offset归一化到0-1之间,w,h用图像的width和height归一化到0-1之间。

  • 在实现中,最主要的就是怎么设计损失函数,让这个三个方面得到很好的平衡。作者简单粗暴的全部采用了sum-squared error loss来做这件事。
    这种做法存在以下几个问题: 
    第一,8维的localization error和20维的classification error同等重要显然是不合理的; 
    第二,如果一个网格中没有object(一幅图中这种网格很多),那么就会将这些网格中的box的confidence push到0,相比于较少的有object的网格,这种做法是overpowering的,这会导致网络不稳定甚至发散。 
    解决办法:

    • 更重视8维的坐标预测,给这些损失前面赋予更大的loss weight, 记为在pascal VOC训练中取5。
    • 对没有object的box的confidence loss,赋予小的loss weight,记为在pascal VOC训练中取0.5。
    • 有object的box的confidence loss和类别的loss的loss weight正常取1。
  • 对不同大小的box预测中,相比于大box预测偏一点,小box预测偏一点肯定更不能被忍受的。而sum-square error loss中对同样的偏移loss是一样。 
    为了缓和这个问题,作者用了一个比较取巧的办法,就是将box的width和height取平方根代替原本的height和width。这个参考下面的图很容易理解,小box的横轴值较小,发生偏移时,反应到y轴上相比大box要大。 

  • 一个网格预测多个box,希望的是每个box predictor专门负责预测某个object。具体做法就是看当前预测的box与ground truth box中哪个IoU大,就负责哪个。这种做法称作box predictor的specialization。

  • 最后整个的损失函数如下所示: 
    这里写图片描述
    这个损失函数中: 
    • 只有当某个网格中有object的时候才对classification error进行惩罚。
    • 只有当某个box predictor对某个ground truth box负责的时候,才会对box的coordinate error进行惩罚,而对哪个ground truth box负责就看其预测值和ground truth box的IoU是不是在那个cell的所有box中最大。
  • 其他细节,例如使用激活函数使用leak RELU,模型用ImageNet预训练等等,在这里就不一一赘述了。

4.YOLO的缺点

  • YOLO对相互靠的很近的物体,还有很小的群体 检测效果不好,这是因为一个网格中只预测了两个框,并且只属于一类。

  • 测试图像中,同一类物体出现的新的不常见的长宽比和其他情况是。泛化能力偏弱。

  • 由于损失函数的问题,定位误差是影响检测效果的主要原因。尤其是大小物体的处理上,还有待加强。

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

You Only Look Once论文中文翻译

You Only Look Once 统一的实时目标检测 Abstract  我们提出YOLO,一种新的目标检测方法。以前的对目标检测的工作重新使用分类器来执行检测。相反,我们将目标检测框架为回归问题,空间分离的边界框和相关类概率。单个神经网络在一次评估中直接从完整图像预测边界框和类...
  • qq_14839543
  • qq_14839543
  • 2017-02-16 22:06
  • 2904

【计算机视觉】【神经网络与深度学习】论文阅读笔记:You Only Look Once: Unified, Real-Time Object Detection

尊重原创,转载请注明:http://blog.csdn.net/tangwei2014 这是继RCNN,fast-RCNN 和 faster-RCNN之后,rbg(Ross Girshick)大神挂名的又一大作,起了一个很娱乐化的名字:YOLO。  虽然目前版本还有一些硬伤,但是解...
  • LG1259156776
  • LG1259156776
  • 2016-10-11 19:41
  • 741

YOLO,You Only Look Once论文翻译——中英文对照

YOLO,You Only Look Once论文翻译——中英文对照
  • Quincuntial
  • Quincuntial
  • 2017-12-04 15:27
  • 773

七大感触——You Only Live Once

从做PreAngel以来,每年我都会抽空去美国一两次,主要是在硅谷(湾区)一带见见当地的朋友,他们主要有VC、创业者、斯坦福和伯克利的学生创业组织负责人、无线科技领域的各种组织机构负责人等,我一直试图逐步了解这个全世界高科技上市公司最密集的地带,究竟有着怎样的特别之处,有什么是我们可以学习借鉴的,让...
  • wwwxxdddx
  • wwwxxdddx
  • 2013-05-31 14:46
  • 529

经典计算机视觉论文笔记——《Robust Real-Time Face Detection》

第一次读这篇传奇之作大概是九年前了,也就是2007年,而那时距论文正式发表(2004年)也已经有四年之久了。现在读来,一些想法,在深度学习大行其道的今天仍然具有借鉴意义,让人敬佩不已。         VJ人脸检测器应该是历史上第...
  • u010318961
  • u010318961
  • 2016-06-01 20:40
  • 1008

2016CVPR目标检测论文简介

目标检测的指标:1)识别精度 2)识别效率 3)定位准确性CVPR2016专题:CVPR/ICCV目标检测最新论文2016年的CVPR目标检测(这里讨论的是2D的目标检测)的方法主要是 基于CNN的框架,代表性的工作有ResNet[1](Kaiming He等)、 YOLO[5](Josep...
  • youyuyixiu
  • youyuyixiu
  • 2016-10-24 13:09
  • 1991

各种对象检测论文总结(Object Detection )

Original url: http://blog.csdn.net/u010167269/article/details/52563573 https://handong1587.github.io/deep_learning/2015/10/09/object-detection.htm...
  • junmuzi
  • junmuzi
  • 2016-12-01 10:09
  • 8682

目标检测(Object Detection)原理与实现(一)

基于阈值图像处理的目标检测           从今天起开始要写一些关于目标检测的文章,涵盖从简单的阈值图像处理检测、霍夫变换(hough transform)检测、模版匹配检测(刚体匹配)、AAM+ASM+ACM(非刚体)匹配检测到近代机器学习方...
  • cuoqu
  • cuoqu
  • 2013-06-08 20:14
  • 10537

目标检测(Google object_detection) API 上训练自己的数据集

应公司要求,利用谷歌最近开源的Google object_detection API对公司收集的数据集进行训练,并检测训练效果。通过一两天的研究以及维持四天的训练(GTX 1060  6GB),终于成功的在自己数据集上训练的任务。测试效果感觉还行,虽没有达到谷歌官方公布的数据集上跑的识别效...
  • c2a2o2
  • c2a2o2
  • 2017-11-03 16:14
  • 1024

硅谷归来,七大感触——You Only Live Once

从做PreAngel以来,每年我都会抽空去美国一两次,主要是在硅谷(湾区)一带见见当地的朋友,他们主要有VC、创业者、斯坦福和伯克利的学生创业组织负责人、无线科技领域的各种组织机构负责人等,我一直试图逐步了解这个全世界高科技上市公司最密集的地带,究竟有着怎样的特别之处,有什么是我们可以学习借鉴的,让...
  • undoner
  • undoner
  • 2013-05-28 21:33
  • 1954
    个人资料
    • 访问:243706次
    • 积分:4744
    • 等级:
    • 排名:第7129名
    • 原创:219篇
    • 转载:166篇
    • 译文:0篇
    • 评论:66条
    最新评论