【论文解读】R-CNN 深入浅出理解目标检测开山之作

R-CNN是CNN处理目标检测问题的开山之作,其中的区域提议,难例挖掘,非极大值抑制等等方法沿用至今。。整个打下了two-stage模型的框架。但我并不推荐研究R-CNN的实现,因为选择性搜索部分与现在的方法差距太大了,还是计算机视觉“特征工程”时代的产物。

因此,只要根据太长不看版本大致了解pipeline即可,不过这里还是满足以下好奇心宝宝(比如我自己),把内容细讲一下。

一、 太长不看版本

ps:这部分改编自《动手学深度学习》,内容很不错。

R-CNN[1]首先对图像选取若干提议区域Region Proposal(如锚框Anchor也是一种选取方法)并标注它们的类别和边界框(如偏移量)。然后,用卷积神经网络对每个提议区域做前向计算抽取特征。之后,我们用每个提议区域的特征预测类别和边界框。

R-CNN模型示意图

具体来说,R-CNN主要由以下4步构成。

  1. 提议区域:对输入图像使用选择性搜索(selective search)来选取多个高质量的提议区域 [2]。这些提议区域通常是在多个尺度下选取的(@FPN提到的图像金字塔),并具有不同的形状和大小。每个提议区域将被标注类别和真实边界框。

  2. 提取特征:选取一个预训练的CNN,并将其在输出层之前截断。将每个提议区域变形为网络需要的输入尺寸,并通过前向计算给提议区域抽取特征。

  3. 目标分类:将每个提议区域的特征连同其标注的类别作为一个样本,训练多个支持向量机对目标分类。其中每个支持向量机用来判断样本是否属于某一个类别。

  4. 回归边框:将每个提议区域的特征连同其标注的边界框作为一个样本,训练线性回归模型来预测真实边界框。

R-CNN虽然通过预训练的卷积神经网络有效抽取了图像特征,但它的主要缺点是速度慢。想象一下,我们可能从一张图像中选出上千个提议区域,对该图像做目标检测将导致上千次的卷积神经网络的前向计算。这个巨大的计算量令R-CNN难以在实际应用中被广泛采用。


二、引言 Introduction

开始之前,注意这是14年的论文,不能苛求其有多么高大上。虽然我们现在觉得R-CNN非常笨重低效,但在R-CNN之前,是更加黑暗的时代,这体现在:

  1. 速度超慢:在R-CNN之前,目标检测多用滑动窗口检测法,约等于有多少个像素点,就要做多少次检测。R-CNN至少提前定好了提议区域。

  2. 计算超复杂:检测特征多为人工提取(Haar,HOG,SIFT…等等许多没学过数字图像处理的同学听都没听说过的算法)。R-CNN使用CNN提取特征,这至少在提取特征上做到了多快好省。

相比传统办法,因为RCNN的CNN在各个类别中共享特征所以内存占比和计算时间都贼低,和类别数量有关(随种类数量增大而增大)的部分只有非极大值抑制和线性SVM。R-CNN的贡献在于极大地缩短了监督学习(与Ground-Truth有关)的时间,涉及的运算只有CNN/svm/线性回归的矩阵运算与非极大值抑制(NMS)。当然,现在看来其最需要优化的地方,就是所谓“类别无关”的部分了(提议区域)。第二个贡献在于将在ImageNet上训练好的CNN作为“黑箱”特征提取,无需fine-tune省时省力。当然,现在看来,仅仅作为无需fine-tune的特征提取器也是其局限之一。


三、模型详解

1. 提议区域:选择性搜索

首先就是神秘的选择性搜索(Selective Search)了,我研究了算法的主页,其中有代码,还居然是用matlab写的……

选择性搜索流程:

  1. 图像分割(不是语义分割,属于数字图像处理中比较“低级”的手段) 成若干小区域。

  2. 按规则反复融合小区域,直到整张图片只剩一个区域为止。

  3. 输出所有曾经存在过的区域,即提议区域。

合并规则:

优先合并以下四种区域:

  1. 颜色(颜色直方图)相近的

  2. 纹理(梯度直方图)相近的

  3. 合并后总面积小的(使得合并均匀,避免出现过大的区域逐个吃掉剩下的小区域。比如你手里有斗地主里面的5连飞机,也不能一次性打出去,而是拆成三带二。)

  4. 合并后,总面积在其所属Ground-Truth边界框bounding box中所占比例大的。下面是例子

左边适合合并,右边则不适合

可见一二条规则是合并的基本原则,而第三条保证了区域大小分布均匀,第四条保证了区域形状规则

为尽可能不遗漏候选区域,上述操作在多个颜色空间中同时进行(RGB,HSV,Lab等)。在一个颜色空间中,使用上述四条规则的不同组合进行合并。所有颜色空间与所有规则的全部结果,在去除重复后,都作为候选区域输出。

2. 预处理与提取特征

众所周知,CNN只能接受特定大小的输入,因此需要对输入图片进行变形,使每个region proposal的大小都是227*227。

作者关于“如何变形”给出了大量讨论实验。比如直接先裁剪后变形,还是裁剪后零填充等等

A:原图,B:能框下物体最小的正方形,C:裁剪并填充,D:直接变形

事实上我认为区别不大……,直接变形还是正则化呢对不对

取得提取特征的模型的过程分为两步:

  1. 有监督预训练

  2. 调优训练

有监督预训练(Supervised pre-training)的过程:现在我们喜欢管这个过程叫迁移学习(transfer-learning),即使用别的数据集训练好模型(这里是ImageNet训练的CNN)。(稍加修改后)用于其他任务(这里是去掉最后一个用于输出的FC层,用于提取提议区域的特征)。

调优训练(fine-tune):使用选择性搜索得到的提议区域训练。设目标检测数据集中N类物体,就在上一步预训练的模型最后加上N+1个输出的神经元(还有一类背景类,比如VOC有20个类别,就有21个输出)。训练的batch size=128(32个正样本+96个负样本)

这里就已经体现出平衡数据的思想了,这也是目标检测的老大难问题之一。

稍等一下,什么是正样本,什么是负样本?

正负样本选择

对一张图片进行选择性搜索,即使以上述组合规则的办法,搜索出2000个候选框;出现一个和Ground Truth的边界框完全一致的概率也约等于0。

因此在一切开始之前,就需要先用IoU为2000个候选框打分。若其与Ground-Truth的边界框的IoU>0.5,那么我们就把这个候选框标注成物体类别(正样本),否则我们就把它当做背景类别(负样本)。

注:由上一部分的分析,通常情况下,正样本数量远远小于负样本,因此引出了后续的难例挖掘。(和后来的Focal Loss)

啥?你说你连IoU是啥都不知道?

  • 啥是IoU

衡量边界框位置,常用交并比指标,交并比(Injection Over Union,IOU)发展于集合论的雅卡尔指数(Jaccard Index)[3],被用于计算真实边界框Bgt(数据集的标注)以及预测边界框Bp(模型预测结果)的重叠程度。

具体来说,它是两边界框相交部分面积与相并部分面积之比,如下所示:

摘自我的毕业设计,当时觉得自己真是天才。咳咳,总之这就是IoU。

3. SVM分类

对每一类目标,使用一个线性SVM二类分类器进行判别。输入为CNN输出的4096维特征,输出是否属于此类。由于负样本很多,使用难例挖掘(hard negative mining)方法。

正样本:本类的Ground-Truth标定框。

负样本:遍历所有的提议区域,如果和本类所有标定框的重叠都小于0.3,则认为其为负样本。

好的,问题又来了:

  • Fine-tune时已经有CNN的分类输出了,为什么还要再训练一堆SVM?

SVM与CNN的正负样本定义不同,导致CNN输出的精度差。这主要由于CNN的IoU只要高于0.5就算正样本,但SVM的正样本则是需要将整个物体包括在内。

  • 0.3这个阈值是哪里来的?

试出来的,事实上,每个物体的正样本通常只有一个。负样本太多了就要筛选,IoU阈值选的太大了会让模型产生困惑,太小了呢负样本又太多了。反复实验对比才确定了0.3这个阈值。

  • 什么是难例挖掘?

薰风初入弦:薰风AI知识点:Hard Negative Mining/OHEM 你真的知道二者的区别吗? zhuanlan.zhihu.com

4. 回归边框

之前的区域提议只是大致的选出了物体在哪,本身也是一个无监督的过程。某种意义上框不狂得准完全是玄学。因此需要额外的回归器进行边框回归(精修)。

回归器:

对每一类目标,使用一个线性岭回归器进行精修。正则项λ=10000。输入为深度网络pool5层的4096维特征,输出为xy方向的缩放和平移。

训练样本:

判定为本类中和Ground Truth的IoU大于0.6的区域提议框。

岭回归我个人理解是个有正则的线性回归?还没开始凸优化课,不太了解……

四、测试阶段

在描述Object Dection算法时,测试阶段也是需要单独拎出来的,因为从训练过程可以看出,即使在训练时,我们也无法得到百分百准确的区域提议,需要经过繁琐的过程预处理数据。更别提被区域提议不知所措的测试阶段了。

  • 测试阶段流程:

  1. 首先使用选择性搜索提取测试图片的区域提议(和训练时一样,2000+个)。

  2. 将所有区域提议变形为227*227(用和训练时一致的变形方法),并使用CNN获得特征。

  3. 对所有特征用SVM进行分类

  4. 对每个类,用非极大值抑制(NMS)筛选出最终的待回归的框

  5. 对NMS选出的边界框进行回归

那么什么是NMS呢?NMS又是如何在numpy/pytorch/C++上实现的呢,请移步

薰风初入弦:非极大值抑制Non-Maximum Suppression(NMS)一文搞定理论+多平台实现 zhuanlan.zhihu.com

参考文献

[1] Girshick, R., Donahue, J., Darrell, T., & Malik, J. (2014). Rich feature hierarchies for accurate object detection and semantic segmentation. In Proceedings of the IEEE conference on computer vision and pattern recognition (pp. 580-587).

[2] Uijlings, J. R., Van De Sande, K. E., Gevers, T., & Smeulders, A. W. (2013). Selective search for object recognition. International journal of computer vision, 104(2), 154-171.

[3] en.wikipedia.org/wiki/J

除此之外,本文参考了blog.csdn.net/shenxiaol这篇笔记


往期精彩回顾



适合初学者入门人工智能的路线及资料下载机器学习及深度学习笔记等资料打印机器学习在线手册深度学习笔记专辑《统计学习方法》的代码复现专辑
AI基础下载机器学习的数学基础专辑
获取本站知识星球优惠券,复制链接直接打开:
https://t.zsxq.com/qFiUFMV
本站qq群704220115。

加入微信群请扫码:

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值