博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
paper 111:图像分类物体目标检测 from RCNN to YOLO
阅读量:6590 次
发布时间:2019-06-24

本文共 2295 字,大约阅读时间需要 7 分钟。

参考列表

Selective Search for Object Recognition 

 
 
 
 

 

 

Ross B. Girshick(RCNN系列开创者) 

RCNN 

 

Fast RCNN 

 

Faster RCNN 

 
 

You Only Look Once 

 

 

RCNN

最早的物体识别,是通过窗口扫描的方式进行,并且需要对图片进行几个级别的缩放来重复进行。 

这种方式非常暴力,计算量大。 
RCNN主要解决的是去掉窗口扫描,用聚类方式,对图像进行分割分组,得到多个侯选框的层次组。 
分割分组方法有很多,RCNN用到的是Selective Search。

以下就是RCNN的结构。

  • 从原始图片,通过Selective Search提取出区域候选框,有2000个左右
  • 把所有侯选框缩放成固定大小
  • 然后通过CNN网络,提取特征
  • 再添加两个全链接层,然后再用SVM分类,回归来微调选框位置与大小

 

Fast RCNN

RCNN有两千个左右的候选框,都要进行CNN操作。但候选框有大量重叠,造成重复计算。 

Fast RCNN就是解决这个问题的。

  • 利用CNN(卷积神经网络),得到整个原始图片的特征层
  • 在原始图片上通过Selective Search等方法,提取出域候选框
  • 把候选框投影到最后的特征层,并进行Max-Pooling采样,得到固定大小的特征矩形
  • 然后再通过两个全连接层,分别用softmax分类,regressor进行选框位置与大小微调

 

Faster RCNN

在上面的 RCNN 与 Fast RCNN中,相对于在GPU上计算的CNN,在CPU上运行的提取候选框效率低下,一张图片大概需要2秒。 

Faster RCNN则直接利用CNN来计算候选框,方式如下:

  • 原始图片经过CNN,得到最后的卷积特征
  • 利用3×3的矩形进行扫描,得到256维的向量(相当于再添加了一个卷积层,卷积核为3×3,输出特征数为256)
  • 3×3的特征层映射到最初图片,是一块比较大的固定区域,在此固定区域上进行长宽变形,比如分别3个缩放级别,则一共有9个不同的矩形区域,称做anchor box。9就是上图中的k值。
  • 对上图中的k个anchor box进行是否是物体判断预测,和矩形框位置与大小微调
  • 选出物体框后,再利用同Fast RCNN同样的方式,对物体类别进行判断
  • 选框与分类使用同样的CNN网络

一张1000×600的图片,大概可以得到20k个anchor box(60×40×9)。 

anchor box的设置应比较好的覆盖从大到小的区域,如下图:

注 

这里有一点疑惑,3×3的卷积核对应的原始图是块固定区域(感受野),并没有包含区域外的信息,如何做到预测更大区域的物体位置? 
或者类似于人的感知,比如只看到部分人像,推测整个人像的大小?看到老虎的头,预测整个老虎的位置与大小?

 

You Only Look Once

Faster RCNN需要对20k个anchor box进行判断是否是物体,然后再进行物体识别,分成了两步。 

YOLO(You Only Look Once)则把物体框的选择与识别进行了结合,一步输出,即变成”You Only Look Once”。 
所以识别速度非常快,达到每秒45帧,而在快速版YOLO(Fast YOLO,卷积层更少)中,可以达到每秒155帧。 
网络的整体结构如下图:

  • 把原始图片缩放成448×448大小
  • 运行单个卷积网络
  • 得到物体的位置与类别

模型如下:

  • 把缩放成统一大小的图片分割成S×S的单元格
  • 每一个单元格负责输出B个矩形框,每一个框带四个位置信息(x, y, w, h),与一个该框是物体的概率,用Pr(Object)或者C(Confidence)表示
  • 每一个单元格再负责输出C个类别的概率,用Pr(ClassObject)表示
  • 最终输出层应有S×S×(B5+C)个单元

相关说明:

  • 如果一个物体的中心落入一个单元格,则该单元格上的B个矩形框的位置信息都为该物体的位置信息,
  • C个概率中对应该物体类别值为1,其它为0。
  • x, y表示中心相对于单元格左上角的位置偏移,单元格左上角为(0, 0),右下角为(1, 1)
  • w, h表示矩形框的宽与高,都是相对于整个图片的相对值,全副图片大小为(1, 1),长宽都一半就是(0.5, 0.5)

最终输出时,是物体的概率乘以类别概率,才是整体识别到是一个物体的概率:

 

Pr(class)=Pr(ClassObject)Pr(Object)

 

在论文中,S = 7,B = 2,C = 20。 

所以输出的单元数为7×7×30

具体的网络结构如下:

从上图的结构可以看到,倒数第二层是一个全连接层,所以最终的单元输出整合了全局信息,更好地预测图像区域。

训练

整个网络最后一层为线性激活,其它层都为Leaky Rectified Linear激活方式:

 

ϕ(x)={
x,0.1x,if x > 0otherwise

 

因为一张图片中,大部分单元格中都没有落入物体中心,所以引入两个参数λcoord=5λnoobj=0.5。 

整个网络的代价函数变成:

 

J=λcoordi=0S2j=0B1objij(xix^i)2+(yiy^i)2+λcoordi=0S2j=0B1objij(wi−−√w^i−−√)2+(hi−−√h^i−−√)2+i=0S2j=0B1objij(CiC^i)2+λnoobji=0S2

转载于:https://www.cnblogs.com/molakejin/p/5812958.html

你可能感兴趣的文章
企业私有云之rabbitmq高可用
查看>>
OpenCV学习】矩阵运算和操作2
查看>>
nginx+ffmpeg搭建rtmp转播rtsp流的flash服务器
查看>>
Win10 IoT C#开发 1 - Raspberry安装IoT系统及搭建开发环境
查看>>
关于在arm裸板编程时使用printf问题的解决方法
查看>>
开源人工智能技术将改变一切
查看>>
2015 上半年 JavaScript 使用统计数据
查看>>
《Python算法教程》——1.6 如果您感兴趣
查看>>
干货 | 豆子科技首席架构师钟声:Java的纯真年代
查看>>
深度解析Java8 – AbstractQueuedSynchronizer的实现分析(下)
查看>>
SSH原理与运用(一):远程登录
查看>>
Spring Framework 4.2 中的新功能和增强功能
查看>>
动态代理解决网站字符集编码
查看>>
我所想的GIX4的权限
查看>>
Hbuilder--让手爽,飞一般的编码(二)
查看>>
后台统计
查看>>
React组件: 提取图片颜色
查看>>
3D应用开发中的欧拉角和旋转矩阵
查看>>
爬虫必备技能xpath的用法和实战
查看>>
MacOS下安装Grafana、InfluxData、telegraf
查看>>