计算机系统应用教程网站

网站首页 > 技术文章 正文

目标检测开山之作RCNN体现的诸多思想与方法(上)

btikc 2024-08-31 17:16:41 技术文章 12 ℃ 0 评论

RCNN(Regions with CNN features)是目标检测领域的开山之作,是将CNN方法应用到目标检测问题上的一个里程碑,由年轻有为的RBG大神提出,发表在2014年的CVPR。借助CNN良好的特征提取和分类性能,通过RegionProposal方法实现目标检测问题的转化。

RCNN是Fast RCNN和Faster RCNN的基础,该论文提出的诸多思想、方法,为后续目标检测新的思想、原理、方法的提出提供了诸多颇具启发性的思路,尽管RCNN有诸多的不足,速度慢、占用空间大等。所以,透彻的理解RCNN的思想、原理、方法,有利于我们更好的理解后续目标检测算法,甚至启迪创新的思想,独立设计新的算法。

论文全名:Rich feature hierarchies for accurate object detection and semantic segmentation

一、思想

1、分步的思想

目标检测按照分步的思想,分为定位与分类两步:

· 定位(Localization)问题:这是目标检测的第一个问题,图上里有什么?具体在哪里?这是首要解决的问题。所以在一张图片中,我们首先要找到表示对象的位置,给出确定对象位置的四个数值:中心点x坐标、中心点y坐标、对象高度、对象宽度;

· 分类(Classification)问题:这是目标检测的第二个问题,找到对象位置后,问题就转化为分类问题了,就是能够准确给出检测到的对象的类别;

因为我们对分类问题比较熟悉,所以关键问题就是定位问题,通过计算机视觉来找到物体对象,不像人的视觉,一看就会找到熟悉的、或者陌生的物体,而要有"遍历"、"过滤"的思想,这是计算机视觉与人的视觉,本质不同的地方。既然是遍历,我们就要在一张图片中从最左、最上端一直到最右、最下端去遍历,搜寻物体。这就是定位目标的思想。

2、深度学习的思想

在CNN图像分类中,我们已经知道深度神经网络能够通过一层层的卷积核去过滤、提取、突出重要特征,进而在最后抽取出决定物体属性、类别的关键特征。所以,对于第二步的分类问题,RCNN应用深度神经网络结构CNN抽取主要的、关键的、决定性的特征,这是当前解决图片分类非常有效的方法

3、转化的思想

在第一步的定位物体过程中,我们需要从最左、最上端一直到最右、最下端去遍历,搜寻物体,我们知道物体在图片中的大小是不一样的,所以要找到尽可能多的物体,就要将遍历转化为用一系列大小不同的方框去"分割"原图像,所以问题又转化为两个问题:1、怎么样确定某个区域可能是一个物体?2、如何合并小区域,和丢弃不精确甚至是错误的候选区域?

4、相似性原理

在获取候选区域时,我们怎么才能找到候选的一个一个的区域呢?这里用的思想就是相似性原理。同一个物体图片,衡量其相似性有以下4个方面:

  • 颜色相近的
  • 纹理相近的
  • 大小,即

--合并后总面积小的

--合并后,总面积在其BBOX(bounding-box)中所占比例大的

RCNN中用到了论文《Graph-Based Image Segmentation》(基于图的图像分割)中提到的selection search(以下称SS方法)。而这个SS方法正是用到上述特征。

SS方法通过设置不相似度来定义阈值,如果两个区域不相似度不大于这两个区域阈值的最小值,那么就可以合并这两个区域。

二、问题分解

根据上述思想,RCNN要解决的问题可以分为以下几个部分:

· 生成候选区域:一张图片生成2000个候选区域

· 提取特征:对每个候选区域,使用深度CNN网络提取特征

· 分类:每一类的SVM 分类器接收特征

· 反过来细调:使用回归器精细修正候选框位置

1、候选区域生成的具体方法论

根据上文中的思想,SS方法要尽可能多的"卡"出目标对象来,所以预先划分区域大小尺度要多样化,满足目标多尺度的要求,这就是过度分割,所以对这些区域还有一个合并的过程,最后剩下的是最可能的候选区域。

SS方法通过最小生成树(minimum spanning tree)来形成候选区域,由相似度思想可知,这个MST就是根据给定需要连接的顶点,选择边权之和最小的树。

《基于图的图像分割》论文中,初始化时每一个像素点都是一个顶点,然后逐渐合并得到一个区域,确切地说是连接这个区域中的像素点的一个MST。

对于两个区域(包括像素点)的相似性,最简单的方法即只考虑连接二者的边的不相似度。如下图,已经有棕色和绿色两个区域,现在通过紫色边来判断这两个区域是否合并。那么我们就可以设定一个阈值,当两个像素之间的差异(即不相似度)小于该值时,合二为一。迭代合并,最终就会合并成一个区域。

但是,如果是下述情况:

对于上边两个图,下图,显然应该聚成上图所示的3类:高频区h,斜坡区s,平坦区p。

如果设置一个全局阈值,那么h区要合并成一块的话,该阈值要选很大,但是那样就会把p和s区域也包含进来,分割结果太粗;如果以p为参考,那么阈值应该选特别小的值,那样的话p区是会合并成一块,但是h区就会合并成特别特别多的小块,分割结果太细。显然,全局阈值并不合适,过虑用自适应阈值。p区阈值要特别小,s区稍大,h区巨大。

2、实现

论文《Graph-Based Image Segmentation》(也就是Fel&Hut(2004))中的具体方法为:

一个区域内的类内差异Int(C)

可以近似理解为一个区域内部最大的差异值,定义是MST中不相似度最大的一条边。

两个区域的类间差异Diff(C1, C2)

即连接两个区域所有边中,不相似度最小边的不相似度,也就是两个区域最相似的地方的不相似度。

直观的判断,当:

Diff(C1,C2) ≤min(Int(C1),Int(C2))

两个区域应当合并

RCNN在上述基础上,给出区域合并算法如下:

三、深度CNN网络提取特征

· 数据:ImageNet(预训练)、pascal VOC 2012数据集

· 输入:region proposal进行尺寸变换后的统一尺寸(2000个)

· 训练:采用AlexNet网络结构(用ImageNet训练好),包含5个卷积层和2个全连接层,最后一层由1000改为21,包括一个背景

· 输出:f7的输出特征2000*4096维,2000个建议框的CNN特征组合成2000×4096维矩阵;

训练好后,对所有的region proposal,前向计算一遍来得到fc7 feature

AlexNet要用ImageNet进行预训练,使网络具有图片识别能力。

(未完待续:还有下篇)

关键词:目标检测、RCNN、分步、转化、深度学习、相似性、AlexNet、region proposal

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表