机器学习: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) 大家好,欢迎回来,这一周我们学习的主要内容是对象检测,它是计算机视觉领域中一个新兴的应用方向, ...
随机推荐
- unity shader学习笔记(1) shader基础结构以及Properties面板
首先是shader的基础结构: Shader "Custom/Example { Properties//变量属性面板 { } SubShader { Tags { "Render ...
- 关于ES6的let,const与var之间的三生三世
首先需要明确的是let.const.var都是用来定义变量的 在ES6之前,我们一般都用var来定义变量,例如 : function test(){ var i=1; console.log(i); ...
- NumPy入门基础【2】
通用函数ufunc 一元ufunc举例: 1.abs.fabs:计算绝对值,fabs更快 2.sqrt:计算各元素的平方根,相当于arr0.5 3.square:计算各元素的平方根,相当远arr2 4 ...
- php自定义函数: 遍历文件夹及其子文件夹
function traverse_folder($path = '.') { $current_dir = opendir($path); while(($file = readdir($curre ...
- 【python】-- RabbitMQ 安装、基本示例、轮询机制
RabbitMQ MQ全称为Message Queue, 是一种分布式应用程序的的通信方法,它是消费-生产者模型的一个典型的代表,producer往消息队列中不断写入消息,而另一端consumer则可 ...
- android 获取短信验证码倒计时
android 获取短信验证码倒计时 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbWVuZ2xlbGUxMzE0/font/5a6L5L2T/fonts ...
- Activiti使用过程_1
1 微信公众号:
- 如何解决Asp.Net MVC和WebAPI的Controller名称不能相同的问题
1.问题描述 假如有一个文章的业务(Article),我们在 Controllers文件夹中创建MVC Controller和Api Controller,各个Controller中都有相同的获取文章 ...
- 用cocos2d-html5做的消除类游戏《英雄爱消除》(3)——游戏主界面
游戏主界面,同时也是主程序,包括sprite的生成加入以及游戏状态的控制. 下面同样贴下源码再讲解; /** * Power by html5中文网(html5china.com) * author: ...
- ZOJ - 3705 Applications 【模拟】
题目链接 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3705 题意 给出N个队员 然后一个教练要从中选择 M名队员 要选 ...