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. javaWeb之邮箱发送(邮箱客户端配置)

    这里使用的是本机的邮箱服务器  , 代码执行条件: 1.·邮箱服务器  , 下载地址   密码   s4xn 邮箱服务器配置: 1):安装 2):打开服务器 红色部分是默认账号,不用处理 3)系统设置 ...

  2. 小白学爬虫-批量部署Splash负载集群

    整体目录如下: study@study:~/文档/ansible-examples$ tree Splash_Load_balancing_cluster Splash_Load_balancing_ ...

  3. Jupyter notebook Tensorflow GPU Memory 释放

    Jupyter notebook 每次运行完tensorflow的程序,占着显存不释放.而又因为tensorflow是默认申请可使用的全部显存,就会使得后续程序难以运行.暂时还没有找到在jupyter ...

  4. 手机端仿ios的日期组件脚本一

    二,代码 <script> var calendar1 = new LCalendar(); calendar1.init({ 'trigger': '#startDate', //标签i ...

  5. WPF基础篇之空间布局

    由于之前自己做的都是大多是B/S架构的项目,加入新公司,公司现在用的WPF,在WPF中一个比较重要的知识点:布局 在网上找到一篇比较好的介绍WPF布局的文章. 文章地址:http://www.cnbl ...

  6. 【转载】Java并发编程:volatile关键字解析(写的非常好的一篇文章)

    原文出处: 海子 volatile这个关键字可能很多朋友都听说过,或许也都用过.在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果.在Java 5之后,volat ...

  7. unity案例入门(二)(坦克大战)

    1. 案例简述 这个案例实现一个简单的坦克对战游戏,两个玩家在一个地图上PK. 2. 控制坦克移动 与案例一中小球的移动方式不同,坦克在横向上不能是平移,因此横向按键控制的应该是坦克旋转. publi ...

  8. FFT\NTT总结

    学了好久,终于基本弄明白了 推荐两个博客: 戳我 戳我 再推荐几本书: <ACM/ICPC算法基础训练教程> <组合数学>(清华大学出版社) <高中数学选修> 预备 ...

  9. [CF940F]Machine Learning

    codeforces 一句话题意 求区间数字出现次数的mex,带修改 sol 带修膜队不解释 带修膜队的排序! struct query{ int id,l,r,t; bool operator &l ...

  10. 【POJ 3401】Asteroids

    题面 Bessie wants to navigate her spaceship through a dangerous asteroid field in the shape of an N x ...