机器学习:YOLO for Object Detection (一)
最近看了基于CNN的目标检测另外两篇文章,YOLO v1 和 YOLO v2,与之前的 R-CNN, Fast R-CNN 和 Faster R-CNN 不同,YOLO 将目标检测这个问题重新回到了基于回归的模型。YOLO v1 是一个很简单的 CNN 网络,YOLO v2 是在第一版的基础上,借鉴了其他几种检测网络的一些技巧,让检测性能得到大幅提升。下面分别介绍一下这两个网络:
YOLO v1
YOLO v1 的结构看起来很简单,如下图所示:
从示意图上看,似乎就是输入一张图片,经过一个CNN 网络,最后就能给出目标的检测框以及分类的概率,很高效的样子。
输入一张 448×448 的图片,将图片分成 S×S 个方块,每个 grid 会预测 B 个 bounding boxes, 以及与 bounding box 对应的置信度。每个 bounding box 的置信度是由两部分组成的,一部分是 Pr(Object) , 表示这个 bounding box 含有物体的 confidence,另外一个是 IOUtruthpred, 衡量这个 bounding box 检测的 accuracy。最后整体的置信度定义为两者的乘积:Pr(Object)×IOUtruthpred.
每个 bounding box 有5个参数,(x,y,w,h,p), p 就是 confidence。(x,y) 表示 bounding box 的中心与 grid cell 的边界的比率,(w,h) 表示 bounding box 的宽高与全图宽高的比率。所以每个 grid cell 有 B 个 bounding box,而每个 bounding box 会有 5 个预测值。除此之外,每个 grid cell 还会预测一个条件概率,即这个 grid cell 如果含有待检测的目标,需要知道这个目标是属于哪一类物体 Pr(Classi|Obj),这个是基于 bounding box 含有待检测目标的,所以是一个条件概率,论文里规定,每一个 grid cell 只预测一类物体,不管这个 grid cell 含有多少个 bounding box。测试的时候,将所有的概率相乘,可以得到:
最后个值反应了,bounding box 中出现某一类物体的概率,以及这个 bounding box 检测的准确度。如下图所示:
YOLO-v1 的网络结构是基于 GoogleNet 的有一个深层的,一个浅层的,深层的含有 24 个卷积层,浅层的含有 9 个卷积层,网络结构如下所示:
基本上就是 3×3 和 1×1 的 filter。
网络的训练,先是用这个网络再 ImageNet 上训练一遍,大概 20 层的卷积层,这个时候训练的输入尺寸是 224×224,然后将训练好的网络用目标检测的数据库再做一次训练,这次会多加几层卷积层,同时将输入尺寸从 224×224 变成 448×448, 为了让预测值都在 [0, 1] 之间,参数 (x,y,w,h) 都做了归一化处理,训练的激励函数在 RELU 的基础上做了一些改动,负数不再是 0,而是有一个 0.1 的斜率。最后的loss 函数如下所示:
这个函数基本将分类的准确率以及检测的精度都考虑了。不过这个网络的性能还是有局限,正如论文中所说:
因为采用固定的 grid cell, 并且每个 grid cell 只识别一个类,所以如果这个 grid cell 如果有多个物体,这是识别不了的,也就是说对小物体,这个网络的识别性能较差。
因为检测是用 bound box 做的,bounding box 是固定的形状,所以这个网络对形变或者不同的尺寸比适应性较差。
最后,loss function 对 bounding box 的 error 是一视同仁的,不同大小的bounding box 的 error 应该要区别对待。同样的error,对小的bounding box 的影响会比大的bounding box的影响要大很多。
具体的细节讨论,实验结果可以看论文。后面我们再介绍 YOLO-v2
Joseph Redmon, Santosh Divvala, Ross Girshick, Ali Farhadi, “You Only Look Once: Unified, Real-Time Object Detection”
机器学习:YOLO for Object Detection (一)的更多相关文章
- [Localization] YOLO: Real-Time Object Detection
Ref: https://pjreddie.com/darknet/yolo/ 关注点在于,为何变得更快? 论文笔记:You Only Look Once: Unified, Real-Time Ob ...
- 机器学习:YOLO for Object Detection (二)
之前介绍了 YOLO-v1 单纯的利用一个卷积网络完成了目标检测,不过 YOLO-v1 虽然速度很快,但是比起其他的网络比如 Fast R-CNN 检测的准确率还是差不少,所以作者又提出了改良版的 Y ...
- YOLO: Real-Time Object Detection
YOLO detection darknet框架使用 YOLO 训练自己的数据步骤,宁广涵详细步骤说明
- YOLO: Real-Time Object Detection 安装和测试
1.下载darknet git clone https://github.com/pjreddie/darknet.git 2.修改make GPU= CUDNN= OPENCV= DEBUG= 3. ...
- 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 ...
- [YOLO]《You Only Look Once: Unified, Real-Time Object Detection》笔记
一.简单介绍 目标检测(Objection Detection)算是计算机视觉任务中比较常见的一个任务,该任务主要是对图像中特定的目标进行定位,通常是由一个矩形框来框出目标. 在深度学习CNN之前,传 ...
- 读论文系列:Object Detection CVPR2016 YOLO
CVPR2016: You Only Look Once:Unified, Real-Time Object Detection 转载请注明作者:梦里茶 YOLO,You Only Look Once ...
- Object Detection(RCNN, SPPNet, Fast RCNN, Faster RCNN, YOLO v1)
RCNN -> SPPNet -> Fast-RCNN -> Faster-RCNN -> FPN YOLO v1-v3 Reference RCNN: Rich featur ...
- [C4W3] Convolutional Neural Networks - Object detection
第三周 目标检测(Object detection) 目标定位(Object localization) 大家好,欢迎回来,这一周我们学习的主要内容是对象检测,它是计算机视觉领域中一个新兴的应用方向, ...
随机推荐
- 仿百度壁纸client(五)——实现搜索动画GestureDetector手势识别,动态更新搜索keyword
仿百度壁纸client(五)--实现搜索动画GestureDetector手势识别,动态更新搜索关键字 百度壁纸系列 仿百度壁纸client(一)--主框架搭建,自己定义Tab + ViewPager ...
- Android 4.4(KitKat)中apk包的安装过程
原文地址:http://blog.csdn.net/jinzhuojun/article/details/25542011 事实上对于apk包的安装.4.4和之前版本号没大的区别. Android中a ...
- ajax 和jsonp 不是一码事 细读详解
由于Sencha Touch 2这种开发模式的特性,基本决定了它原生的数据交互行为几乎只能通过AJAX来实现. 当然了,通过调用强大的PhoneGap插件然后打包,你可以实现100%的Socket通讯 ...
- [置顶] 2013_CSUST暑假训练总结
2013-7-19 shu 新生训练赛:母函数[转换成了背包做的] shuacm 题目:http://acm.hdu.edu.cn/diy/contest_show.php?cid=20083总结:h ...
- c++操作flash
c++操作falsh,忘了原文在哪了,自己尝试了,直接贴代码 // SDK版本 //////////////////////////////////////////////////////////// ...
- hive查询注意及优化tips
Hive是将符合SQL语法的字符串解析生成可以在Hadoop上执行的MapReduce的工具.使用Hive尽量按照分布式计算的一些特点来设计sql,和传统关系型数据库有区别, 所以需要去掉原有关系型数 ...
- Java基础教程:多线程基础(1)——基础操作
Java:多线程基础(1) 实现多线程的两种方式 1.继承Thread类 public class myThread extends Thread { /** * 继承Thread类,重写RUN方法. ...
- 每天一个Linux命令(26)chown命令
chown命令改变某个文件或目录的所有者和所属的组,该命令可以向某个用户授权,使该用户变成指定文件的所有者或者改变文件所属的组. (1)用法: 用法: chown [选项 ...
- 使用Pydoc生成文档
Python中本身带有很多实用的工具,如pydoc.pydoc模块主要用来从Python模块中提取信息并生成文档. 使用方法 在Windows和Linux下的使用方法有些区别. Windows pyt ...
- 第一篇 dom
文档对象模型(Document Object Model,DOM)是一种用于HTML和XML文档的编程接口.它给文档提供了一种结构化的表示方法,可以改变文档的内容和呈现方式.我们最为关心的是,DOM把 ...