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

转载请注明作者:梦里茶

YOLO,You Only Look Once,摒弃了RCNN系列方法中的region proposal步骤,将detection问题转为一个回归问题

网络结构

  • 输入图片:resize到448x448

  • 整张图片输入卷积神经网络(24层卷积+2层全连接,下面这张示意图是Fast YOLO的)

  • 将图片划分为SxS个格子,S=7
  • 输出一个SxS大小的class probability map,为图片上每个格子所属的分类

  • 输出为每个格子输出B个bounding box,每个bounding box由x,y,w,h表示,为每个bounding box输出一个confidence,即属于前景的置信度

于是输出可以表示为一个SxSx(B*(4+1)+C)的tensor,训练只需要根据数据集准备好这样的tensor进行regression就行

  • 对所有bounding box按照confidence做非极大抑制,得到检测结果

训练

Loss

  • 前两行为定位loss,λcoord为定位loss的权重,论文中取5
  • 第三行为一个bounding box属于前景时的置信度回归loss,
  • 当格子中有对象出现时,真实Ci为1,
  • 1ijobj是一个条件表达式,当bounding box“负责(is responsible for)”图中一个真实对象时为1,否则为0,
  • 所谓“负责”,指的是在当前这个格子的所有bounding box中,这个bounding box与真实的bounding box重叠率最大
  • 第四行为一个bounding box属于背景时的置信度回归loss,
  • 为了避免负样本过多导致模型跑偏, λnoobj=0.5,
  • 1ijnoobj是一个条件表达式,为1ijobj取反
  • 于是我们可以发现一个格子的两个bounding box的分工:一个贡献前景loss,一个贡献背景loss ,不论是前景背景box,我们都希望它们的confidence接近真实confidence,实际上,如果 λnoobj=1, 第四五行可以合并为一项求和,但由于背景box太多,所以才单独拆开加了权重约束

  • 第五行为分类loss,1iobj是一个条件表达式,当有对象出现在这个格子中,取1,否则取0

YOLO里最核心的东西就讲完了,其实可以把YOLO看作固定region proposal的Faster RCNN,于是可以省掉Faster RCNN里region proposal部分,分类和bounding box regression跟Faster RCNN是差不多的

细节

Leaky Relu

网络中只有最后的全连接层用了线性的激活函数,其他层用了leaky Relu:f(x)=max(x, 0.1x)

对比Relu和leaky Relu

在x小于0的时候,用了0.1x,避免使用relu的时候有些单元永远得不到激活(Dead ReLU Problem)

Fast YOLO

卷积层更少,只有9层卷积+2层全连接,每层filters也更少,于是速度更快

实验效果

  • 对比当前最好方法:

Fast YOLO速度最快,准确率不太高,但还是比传统方法好,YOLO则比较中庸,速度不慢,准确率也不太高,但也还行。

  • 再看看具体是在哪些类型的图片上出错的:

主要是定位不准(毕竟没有精细的region proposal),但是在背景上出错较少(不容易把背景当成对象)

缺点

  • 固定的格子是一种很强的空间限制,7x7的格子决定了整张图片最多预测98个对象,对于对象数量很多的图片(比如鸟群)无能为力
  • 难以泛化到其他形状或角度的物体上
  • 损失函数没有考虑不同尺寸物体的error权重,大box权重和小box权重一样

Summary

Anyway,YOLO结构还是挺优雅的,比Faster RCNN黑科技少多了,更重要的是,它是当时最快的深度学习检测模型,也是很值得肯定的。

读论文系列:Object Detection CVPR2016 YOLO的更多相关文章

  1. 读论文系列:Deep transfer learning person re-identification

    读论文系列:Deep transfer learning person re-identification arxiv 2016 by Mengyue Geng, Yaowei Wang, Tao X ...

  2. 读论文系列:Object Detection SPP-net

    本文为您解读SPP-net: Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition Motivat ...

  3. 读论文系列:Object Detection NIPS2015 Faster RCNN

    转载请注明作者:梦里茶 Faster RCNN在Fast RCNN上更进一步,将Region Proposal也用神经网络来做,如果说Fast RCNN的最大贡献是ROI pooling layer和 ...

  4. 读论文系列:Object Detection ICCV2015 Fast RCNN

    Fast RCNN是对RCNN的性能优化版本,在VGG16上,Fast R-CNN训练速度是RCNN的9倍, 测试速度是RCNN213倍:训练速度是SPP-net的3倍,测试速度是SPP-net的3倍 ...

  5. 读论文系列:Object Detection ECCV2016 SSD

    转载请注明作者:梦里茶 Single Shot MultiBox Detector Introduction 一句话概括:SSD就是关于类别的多尺度RPN网络 基本思路: 基础网络后接多层featur ...

  6. [论文阅读]Object detection at 200 Frames Per Second

    本文提出了一个有效且快速的目标检测器,该目标检测器得速度可以达到200+fps,在Pascal VOC-2007上的mAP比Tiny-Yolo-v2高出14. 本文从以下三个方面对网络进行改进. 网络 ...

  7. 读论文系列:Nearest Keyword Search in XML Documents中使用的数据结构(CT、ECT)

    Reference: [1]Y. Tao, S. Papadopoulos, C. Sheng, K. Stefanidis. Nearest Keyword Search in XML Docume ...

  8. YOLO object detection with OpenCV

    Click here to download the source code to this post. In this tutorial, you’ll learn how to use the Y ...

  9. 论文阅读笔记三十五:R-FCN:Object Detection via Region-based Fully Convolutional Networks(CVPR2016)

    论文源址:https://arxiv.org/abs/1605.06409 开源代码:https://github.com/PureDiors/pytorch_RFCN 摘要 提出了基于区域的全卷积网 ...

随机推荐

  1. pat 1001-1010

    最近有点神志无知 命运中很多事情真是奇妙 我必须改变自己的状态 1001 简单的模拟 #include<bits/stdc++.h> using namespace std; int ma ...

  2. C#图解教程 第二十一章 命名空间和程序集

    命名空间和程序集 引用其他程序集 mscorlib库 命名空间 命名空间名称命名空间的补充命名空间跨文件伸展嵌套命名空间 using 指令 using命名空间指令using别名指令程序集的结构 程序集 ...

  3. [BZOJ2684][CEOI2004]锯木厂选址

    BZOJ权限题! Description 从山顶上到山底下沿着一条直线种植了n棵老树.当地的政府决定把他们砍下来.为了不浪费任何一棵木材,树被砍倒后要运送到锯木厂. 木材只能按照一个方向运输:朝山下运 ...

  4. [BZOJ1045] [HAOI2008] 糖果传递 (贪心)

    Description 有n个小朋友坐成一圈,每人有ai个糖果.每人只能给左右两人传递糖果.每人每次传递一个糖果代价为1. Input 第一行一个正整数n<=,表示小朋友的个数.接下来n行,每行 ...

  5. 8Manage:“消费升级”缘何剑指企业一体化管理变革?

    [导读]提到消费升级,大家都会想起美学.个性化.品质等标签,近年来经济发展所伴随的消费需求转型在逐渐凸显,开始从粗狂型到精细化,如:关注产品性价比.服务个性化等内容.企业在消费升级下应该如何应对呢?8 ...

  6. JavaScript:['1','2','3'].map(parseInt)问题解析

    最近碰到了['1','2','3'].map(parseInt)这种看似不起眼陷阱却极大的问题. 这乍一看,感觉应该会输出[1,2,3].但是,实际上并不是我们想的这样.你可以现在打开console, ...

  7. Ambari大数据的管理利器

    概述 一个完全开源的管理平台,用于供应,管理,监控和保护Apache Hadoop集群.Apache Ambari客户管理和操作Hadoop集群 Apache Ambari作为Hortonworks数 ...

  8. hive java编写udf函数

    (一)创建JAVA 代码--例子 package hiveOpt; import org.apache.hadoop.hive.ql.exec.UDF;import org.apache.hadoop ...

  9. CLOB型转成字符型

    //oracle.sql.Clob类型转换成String类型 public static String ClobToString(Clob clob) { String reString = &quo ...

  10. 读取超大Excel(39万行数据)

    有个学长需要处理Excel数据,Excel数据共有39W,将数据读取后处理并导出数据.最开始尝试了 NPOI ,发现NPOI 并不能完成该项任务,随后尝试引用的com组件:Microsoft.Offi ...