深入浅出之RCNN网络

一、提出背景

在计算机视觉领域,目标检测是一项基本且重要的任务,旨在识别图像中的物体并确定其位置。传统的目标检测方法通常依赖于手工设计的特征和复杂的机器学习算法,这些方法在精度和鲁棒性上存在一定的局限性。随着深度学习技术的兴起,尤其是卷积神经网络(CNN)在图像识别领域的成功应用,研究者们开始探索将CNN应用于目标检测任务。RCNN(Regions with CNN features)正是在这一背景下被提出的,它通过将候选区域与CNN特征提取相结合,实现了高精度的目标检测。

二、作者及时间

RCNN由Ross Girshick、Jeff Donahue、Trevor Darrell和Jitendra Malik在2013年提出。其中,Ross Girshick是Facebook的AI科学家,致力于计算机视觉和机器学习领域,对RCNN的发展做出了重要贡献。

三、目的

RCNN的主要目的是提高目标检测的精度和鲁棒性,通过引入深度学习技术,特别是卷积神经网络(CNN),来自动学习图像中的特征表示,从而减少对手工设计特征的依赖。 

与Fast RCNN 、Faster RCNN相比,速度较慢,也被称为Slow RCNN 

四、算法思想、实现过程与原理

R-CNN算法的核心思想就是对每个候选框通过CNN提取特征,然后接上一个分类器预测这个区域包含一个感兴趣对象的置信度,也就是说,转换成了一个图像分类问题(类似Imagenet),后面接的这个分类器可以是独立训练的svm。

RCNN的实现过程大致可以分为以下几个步骤:

  1. 候选区域生成:使用选择性搜索(Selective Search)等方法在输入图像中生成一系列可能包含物体的候选区域(Region Proposals),找出图片中可能存在目标的侯选区域region proposal。

  2. 特征提取:将每个候选区域缩放至固定大小(如227x227),然后输入到预训练的卷积神经网络(如AlexNet)中进行特征提取,通过CNN对候选区域提取特征向量,2000个建议框的CNN特征组合成2000×4096维矩阵。

  3. 分类:使用支持向量机(SVM)作为分类器,对提取的特征进行分类,识别出候选区域中的物体类别,将2000×4096维特征与20个SVM组成的权值矩阵4096×20相乘(20种分类,SVM是二分类器,则有20个SVM),获得2000×20维矩阵。然后,分别对2000×20维矩阵中每一列即每一类进行非极大值抑制(NMS)剔除重叠建议框,得到该列即该类中得分最高的一些建议框。

  4. 边界框回归:对于分类后的候选区域,使用线性回归模型对边界框进行微调,以获得更精确的目标位置,修正bbox,对bbox做回归微调。

详解解释:

一、候选区域的提取
这部分有很多传统的方法可以选择,本文为了和之前的物体检测算法进行对比,选择了selective search方法

二、缩放候选区域
因为CNN对输入图像的大小有限制,所以在将候选区域输入CNN网络之前,要将候选区域进行固定尺寸的缩放。
缩放分为两大类(该部分在原文附录A):

1)各向同性缩放,长宽放缩相同的倍数

tightest square with context:
把region proposal的边界进行扩展延伸成正方形,灰色部分用原始图片中的相应像素填补,如下图(B)所示
tightest square without context:
把region proposal的边界进行扩展延伸成正方形,灰色部分不填补,如下图©所示
2)各向异性缩放, 长宽放缩的倍数不同
不管图片是否扭曲,长宽缩放的比例可能不一样,直接将长宽缩放到227*227,如下图(D)所示

在放缩之前,作者考虑,在region proposal周围补额外的原始图片像素(pad p)。上图中,第一层p=0,第二层p=16。

最后试验发现,采用各向异性缩放并且p=16的时候效果最好。

三.分类
在测试的时候,先对带检测图像提取出约2000个候选区域,将每个区域都进行缩放,然后将缩放后的图片输入CNN进行特征提取,对CNN输出的特征用SVM进行打分(每类都有一个SVM,21类就有21个SVM分类器),对打好分的区域使用NMS即非极大抑制(每类都单独使用)。

这里SVM怎么打分的这些细节没有细讲,只是简单的说检测的时候使用20004096维度的特征矩阵与4096N的SVM参数矩阵相乘(N为所要分的类别数),我也没看过原码,所以也不太清楚,知道的可以讨论一下。

到这里分类就完成了,但是得到的位置只是候选区在图像中的位置,而候选区的位置并不一定就是ground truth,即检测目标的真实位置。

四.定位(回归)
将CNN对候选区域提取出的特征输入训练好的线形回归器中,得到更为精确的位置定位,具体情况会在下面训练方法中详细介绍。但要明确的是,这些回归器是按照类来训练的,即每类分类完后进行回归。

五、训练过程

1.预训练
训练的时候,文章用了个trick,他先用ILSVRC2012数据库训练Alexnet,训练的时候目标时图片分类,因为ILSVRC2012数据库没有bbox的标定数据。这步称为预训练。

2.fine-tuning
这种方法也是当数据量不够的时候,常用的一种训练方式,即先用别的数据库训练网络,然后再用自己的数据库微调训练(fine-tuning)。微调期间,定义与ground truth的IoU大于0.5的候选区域为正样本,其余的为负样本。
这里训练时,网络输出要有所改变,因为分类问题,网络输出为N+1,其中N为正样本的类别数,1为背景。
对于VOC,N=20,对于ILSVRC2013, N=200。

3.目标分类
因为最终目标分类是通过SVM进行分类的,而不是通过网络框架中的softmax分类的。

下面先说一下在SVM的训练中,正负样本的定义,为什么这样定义,然后再说一下为什么不直接用softmax输出的结果而是再训练SVM来进行分类的。

1)SVM正负样本的定义,为什么fine-tuning与SVM正负样本定义不一样?
在训练SVM时,正样本为groundtruth,负样本定义为与ground truth的IoU小于0.3的候选区域为负样本,介于0.3与0.7之间的样本忽略。
fine-tuning时担心过拟合的原因,要扩大正样本的样本量,所以定义比较宽松,但是SVM是最终用于分类的分类器,而且SVM原理就是最小的距离最大化,越难分的数据越有利于SVM的训练,所以对样本的定义比较严格。

2)为什么不直接用softmax的输出结果?
因为在训练softmax的时候数据本来就不是很准确,而SVM的训练使用的是hard negative也就是样本比较严格,所以SVM效果会更好。

4.回归器训练
回归器是线性的,输入为Alexnet pool5的输出。
bbox回归认为候选区域和ground-truth之间是线性关系(因为在最后从SVM内确定出来的区域比较接近ground-truth,这里近似认为可以线性关系)

六、特点

  1. 高精度:利用CNN强大的特征提取能力,RCNN在目标检测任务上取得了较高的精度。

  2. 灵活性:可以根据不同的任务需求选择合适的CNN模型作为特征提取器。

  3. 多阶段处理:RCNN的处理流程包括候选区域生成、特征提取、分类和边界框回归等多个阶段,每个阶段都可以根据需要进行优化。

七、优缺点

优点

  • 精度高:在多个基准数据集上取得了优异的检测性能。
  • 灵活性好:可以适应不同的检测任务和场景。

缺点

  • 计算量大:每个候选区域都需要独立进行特征提取和分类,导致计算资源消耗较大。
  • 训练过程复杂:需要分阶段进行训练,包括候选区域生成、特征提取网络训练、SVM分类器训练和边界框回归器训练等。

八、应用前景

RCNN及其后续改进版本(如Fast RCNN、Faster RCNN)在目标检测领域具有广泛的应用前景。随着深度学习技术的不断发展和计算能力的提升,RCNN系列算法的性能将得到进一步提升,并广泛应用于智能安防、自动驾驶、医学影像分析等领域。同时,RCNN的思想也为其他计算机视觉任务(如图像分割、姿态估计等)提供了有益的借鉴和参考。

参考:

  1. R-CNN文章详细解读
  2. 【目标检测】SPP-Net论文理解(超详细版本)
  3. RCNN- 将CNN引入目标检测的开山之作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值