神经网络的认识(七)R-CNN

Region Proposal

在这里插入图片描述
可以解决滑动窗口的问题

候选区域(Region Proposal)

是预先找出图中目标可能出现的位置。它利用了图像中的纹理、边缘、颜色等信息,可以保证在选取较少窗口(几千甚至几百)的情况下保持较高的召回率(Recall)。
RCNN(Regions with CNN features) 是将 CNN 方法应用到目标检测问题上的一个里程碑, 借助 CNN 良好的特征提取和分类性能, 通过 Region Proposal 方法实现目标检测问题的转化。

候选区域选择

Region Proposal 是一类传统的区域提取方法,可以看作不同宽高的滑动窗口, 通过窗口滑动获得潜在的目标图像, 关于Proposal 大家可以看下SelectiveSearch,一般Candidate 选项为 2k 个即可, 这里不再详述; 根据 Proposal 提取的目标图像进行归一化,作为 CNN 的标准输入。

CNN 特征提取

标准 CNN 过程,根据输入进行卷积/池化等操作,得到固定维度的输出

分类与边界回归

实际包含两个子步骤,一是对上一步的输出向量进行分类(需要根据特征训练分类器);二是通过边界回归(bounding-box regression) 得到精确的目标区域,由于实际目标会产生多个子区域,旨在对完成分类的前景目标进行精确的定位与合并,避免多个检出。

提取特征相关步骤如下图
在这里插入图片描述
分为四个步骤:
在这里插入图片描述

  1. 输入测试图像
  2. 利用 selective search 算法在图像中从下到上提取 2000 个左右的 Region Proposal
  3. 将每个 Region Proposal 缩放(warp)成 227x227 的大小并输入到 CNN, 将 CNN 的 fc7层的输出作为特征
  4. 将每个 Region Proposal 提取到的 CNN 特征输入到 SVM 进行分类

RCNN 存在三个明显的问题:
(1) 训练分为多个阶段,步骤繁琐: 微调网络+训练 SVM+训练边框回归器
(2) 多个候选区域对应的图像需要预先提取, 训练耗时,占用磁盘空间大: 5000 张图像产生几百 G 的特征文件
(3)针对传统 CNN 需要固定尺寸的输入图像, crop/warp(归一化)产生物体截断或拉伸,会导致输入 CNN 的信息丢失;
(4)测试速度慢:每个候选区域需要运行整个前向 CNN 计算。 每一个 ProposalRegion 都需要进入 CNN 网络计算,上千个 Region 存在大量的范围重叠,重复的特征提取带来巨大的计算浪费。 使用 GPU, VGG16 模型处理一张图像需要 47s。
(5) SVM 和回归是事后操作:在 SVM 和回归过程中 CNN 特征没有被学习更新

步骤

  1. 对输⼊图像使⽤选择性搜索(selective search)来选取多个⾼质量的提议区域。这些提议区域通常是在多个尺度下选取的,并具有不同的形状和⼤小。每个提议区域将被标注类别和真实边界框。
  2. 选取⼀个预训练的卷积神经⽹络,并将其在输出层之前截断。将每个提议区域变形为⽹络需要的输⼊尺⼨,并通过前向计算输出抽取的提议区域特征。
  3. 将每个提议区域的特征连同其标注的类别作为⼀个样本,训练多个⽀持向量机对⽬标分类。其中每个⽀持向量机⽤来判断样本是否属于某⼀个类别。
  4. 将每个提议区域的特征连同其标注的边界框作为⼀个样本,训练线性回归模型来预测真实边界框。
发布了163 篇原创文章 · 获赞 117 · 访问量 21万+

猜你喜欢

转载自blog.csdn.net/u010095372/article/details/91147900