YOLO的一大特点就是快,在处理上可以达到完全的实时。原因在于它整个检测方法非常的简洁,使用回归的方法,直接在原图上进行目标检测与定位。

多任务检测:

网络把目标检测与定位统一到一个深度网络中,而且可以同时在原图上检测多个物体。步骤总结如下:

(1)把图片分割成S*S个方格,假如某个物体的中点落在其中一个方格,那么这个方格就对这个物体负责。这里说的物体的中点应该是指ground truth box中的物体的中心。

(2)对于每个格子,预测B个bounding box以及相应的confidence。Bounding box 的如何选择让我思考了一番,回忆起faster cnn中,在网络上预测bounding box会有比例与大小,但这里不需要,因为faster cnn中的box的选择其实算是regoin proposal的一部分,而在YOLO这个box直接通过回归方程计算出来的。在这里,confidence的计算包含两个部分:,当格子中没有物体,则Pr(Object) = 0,否则等于1。可以从式子中看到,它包含了是否存在物体以及预测的精确度两个方面的信息。除此以外,对于bounding box会有四个坐标即x、y、w、h。

(3)对于每个含有物体的格子预测C个类别的概率信息,而且每个格子还要预测B个box,这样最后会得到S*S*(B*5+C)的张量。

以上是根据ground truth box训练的部分。

(4)在test的时候,预测到了S*S*(B*5+C)的张量,把类别概率与confidence相乘,

就得到每个bounding box 的class – specific confidence分数

(5)根据以上得到的分数设置阈值进行过滤,然后执行NMS处理,得到最终检测结果。

网络结构:

网络结构与GoogLeNet非常相似,都使用了1*1的卷积核压缩信息,构造更加非线性的抽象特征,因为这相当于多层感知机的作用。论文中截图的结构,从通道数来看,中间应该缺少了一些卷积层。

一些细节问题:

预训练:使用imageNet预训练,网络结构是前20层网络加上一个平均池化层和一个全连接层。

预测:由于预测需要更加精细的像素,所以把输入扩展成448*448,并且增加了四个卷积层和两个全连接层。在最后一层预测中,需要预测概率和bounding box,这里把bounding box的预测归一化成0到1。

激活函数:最后一层的激活函数使用线性激活函数,而其他层使用leaky ReLU的激活函数:

误差传播:误差的计算采用简单的平方和误差函数。但是,从网络结构可以知道,预测概率的维数比预测bounding box的维数要高,而且,在图片中大多的格子是没有物体的,这会使得它们的confidence趋于0。它们的贡献过大,会使得网络无法收敛。

论文采用一个办法就是加权,赋予不同的权值,对于预测bounding box的,而对于没有object的格子的误差赋予权值。同时,对于大的box的小误差肯定要比小box的小误差影响更小,于是,采用对w,h,x,y取平方根的做法,因为平方根函数的图像随着x的增大会变得平缓。

此外(这里还没搞得太明白),一个网格可能会预测多个box,希望每个box负责专门的object的预测。方法是,对于一个物体的truth box,看哪个bounding box的IOU更大,就让它负责这个box。我估计这个负责的分配会随着每次的网络的更新会动态的改变选择。前提是,object的中心要落在那个格子里面,于是公式为:

其中对应格子i如果有物体,那相应的bounding box j负责这个物体的预测。表示格子i中是否有物体。

训练方法:使用随机梯度下降法,以及dropout的方法。

缺点:

(1)对于靠近的物体,还有很小的群体预测不好。这是因为格子预测的框属于一类的,而且往往格子较大,不能精细。

(2)对于不寻常的长宽比的物体,泛化能力偏弱

(3)误差函数影响定位的精确性。

【CV论文阅读】YOLO:Unified, Real-Time Object Detection的更多相关文章

  1. 论文阅读 | FCOS: Fully Convolutional One-Stage Object Detection

    论文阅读——FCOS: Fully Convolutional One-Stage Object Detection 概述 目前anchor-free大热,从DenseBoxes到CornerNet. ...

  2. 论文阅读之 DECOLOR: Moving Object Detection by Detecting Contiguous Outliers in the Low-Rank Representation

    DECOLOR: Moving Object Detection by Detecting Contiguous Outliers in the Low-Rank Representation Xia ...

  3. 论文阅读:Adaptive NMS: Refining Pedestrian Detection in a Crowd

    论文阅读:Adaptive NMS: Refining Pedestrian Detection in a Crowd 2019年04月11日 23:08:02 Kivee123 阅读数 836   ...

  4. 【CV论文阅读】 Fast RCNN + SGD笔记

    Fast RCNN的结构: 先从这幅图解释FAST RCNN的结构.首先,FAST RCNN的输入是包含两部分,image以及region proposal(在论文中叫做region of inter ...

  5. 论文阅读:Review of Visual Saliency Detection with Comprehensive Information

    这篇文章目前发表在arxiv,日期:20180309. 这是一篇针对多种综合性信息的视觉显著性检测的综述文章. 注:有些名词直接贴原文,是因为不翻译更容易理解.也不会逐字逐句都翻译,重要的肯定不会错过 ...

  6. [论文理解] Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

    Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks 简介 Faster R-CNN是很经典的t ...

  7. 论文笔记:Structure Inference Net: Object Detection Using Scene-Level Context and Instance-Level Relationships

    Structure Inference Net: Object Detection Using Scene-Level Context and Instance-Level Relationships ...

  8. [论文理解]Focal Loss for Dense Object Detection(Retina Net)

    Focal Loss for Dense Object Detection Intro 这又是一篇与何凯明大神有关的作品,文章主要解决了one-stage网络识别率普遍低于two-stage网络的问题 ...

  9. 【CV论文阅读】Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

    由RCNN到FAST RCNN一个很重要的进步是实现了多任务的训练,但是仍然使用Selective Search算法来获得ROI,而FASTER RCNN就是把获得ROI的步骤使用一个深度网络RPN来 ...

随机推荐

  1. C# 传值和传引用 ( ref out in )

    引用类型的变量不直接包含其数据:它包含的是对其数据的引用.当通过值传递引用类型的参数时,有可能更改引用所指向的数据,如某类成员的值(更改属性的值),但是无法更改引用本身的值:也就是说,不能使用相同的引 ...

  2. 258 Add Digits 各位相加

    给一个非负整数 num,反复添加所有的数字,直到结果只有一个数字.例如:设定 num = 38,过程就像: 3 + 8 = 11, 1 + 1 = 2. 由于 2 只有1个数字,所以返回它.进阶:你可 ...

  3. C#基础 集合

    //数组定义的时候 //需要定义数据类型 //需要定义初始长度 //int [] array = new int[5]; //int a = array.Length; //集合 //ArrayLis ...

  4. 自定义封装 banner 组件

    1. 效果图预览 2.基本功能 一个简单方便的轮播图组件,基于viewpager 基础上进行的封装.可设置 项目中图片,网络图片, View:支持循环自动播放,手势滑动切换,item点击事件,可设置 ...

  5. 上传一个npm包

    1.先创建一个npm账号 https://www.npmjs.com/signup 2.在cmd里输入命令进入项目文件夹 3.使用npm init 命令创建一个package.json(确保nodej ...

  6. unbuntu系统:python2.7安装pyspark

    以前在进行搜索引擎rank-svm排序模型训练时,直接使用python读取的HDFS日志文件.统计计算等预处理操作再进行svm模型,最终产生出训练模型.现在回想一下,数据预处理这一块完全可以使用spa ...

  7. 获取WebBrowser全cookie 和 httpWebRequest 异步获取页面数据

    获取WebBrowser全cookie [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true) ...

  8. 数据库–Cobar分布式数据库集群MySQL中间件

    运行环境: 主机1:Ubuntu14.04 Desktop + MySQL5.5 + JDK 1.7(HP Z400)  内网IP地址:192.168.137.8 NODE1:Ubuntu 13.04 ...

  9. [iOS]查看苹果支持的所有字库

    有时候,在开发的时候,想换个字体更加优雅的显示.但是不知道苹果本身到底支持了那些字体,怎么办? 没关系,打开这个网址:http://iosfonts.com/ 所见即所得,非常方便,而且还表明了从那个 ...

  10. 禁止foreach循环使用remove/add----快速失败

    阿里巴巴开发手册中有一条: 7[强制]不要在 foreach 循环里进行元素的 remove / add 操作. remove 元素请使用 Iterator 方式,如果并发操作,需要对 Iterato ...