R-CNN——Ross Girshick
简介
R-CNN(region with CNN features)是一类用于处理序列数据的神经网络。R-CNN是使用深度学习进行目标检测的鼻祖论文(Rich feature hierarchies for accurate object detection and semantic segmentation),此后诸如Fast-RCNN和Faster-RCNN都是基于RCNN的改进。
RCNN的优点
- 速度快。以往的目标检测算法使用滑窗依次判断所有可能的区域,而R-CNN则预先提取一系列可能是物体的候选区域,然后在候选去上提取特征。
- 自动特征提取。传统目标检测算法在区域中提取人工设定的特征(Haar,HOG),而R-CNN训练深度神经网络进行特征提取。
RCNN的缺点
- 候选框没有共享神经网络,参数多。
- 使用SVM分类,较为复杂。
RCNN的大致流程
- 生成候选区
- 候选区上使用深度神经网络提取特征
- 特征用SVM分类器分类
- 回归器修正候选框位置
RCNN基本原理
目标检测主要有两个任务:其一,对于图像中的每个物体,判断出物体的类型,即分类;其二,判断物体的位置,一般选用回归的方法实现。
整体框架:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/17958aa1c567c6973923488c240daa44.png)
名词解释
IoU:intersaction over union
NMS:非极大值抑制算法
Bounding Box:把物体位置标注出来的矩形框
Ground Truth:正确的标注数据
Region Proposal:候选区
fine-tune:微调
候选区域的生成
生成候选区的方法有:objectness、selective search、category-independen object proposals、constrained parametric min-cuts(CPMC)、multi-scale combinatorial grouping(MCG)、Ciresan等。R-CNN选择的是selective search。
关于候选框的生成,可以参考PAMI2015的“What makes for effective detection proposals?”。
![img](https://i-blog.csdnimg.cn/blog_migrate/dfb79529a329f7ab896ed220ec3d42ee.jpeg)
- selective search
使用Selective Search方法从一张图像生成约2000-3000个候选区域。基本思路:
- 使用过分割手段,将图像分为小区域。
- 查看现有线区域,合并可能性最高的两个区域,从发直到整张图像合并成一个区域位置。
- 输出候选区
- 区域的合并
上述思路的关键在于“合并”的过程。一般来说,区域的合并有以下优先规则:
- 颜色相近的(颜色直方图)
- 纹理相近的(梯度直方图)
- 合并后总面积小的 [ 1 ] _{[1]} [1]
- 合并后在Bounding Box中所占比例大的 [ 2 ] _{[2]} [2]
[1]:保证每一次合并后的区域相对均匀,避免出现一个大区域不断合并其他小区域的情况。
[2]:也就是说选取合并后在矩形框中占比更大的,否则不合并。目的是使物体形状规则。
多样化与后处理
为了尽可能不遗漏候选区,候选区将在多个颜色空间中同时生成,生成后放入分类器。针对梅格雷,通过计算IoU的指标,采取非极大值抑制算法,剔除重复位置的区域。
- IoU
IoU的输入:
-
ground-truth的bounding box
-
预测的bounding box
IoU的输出:
两个矩形交集的面积/两个矩形并集的面积
![img](https://i-blog.csdnimg.cn/blog_migrate/9161a4c1fcac82fb26dc16a4ad414b57.png)
![img](https://i-blog.csdnimg.cn/blog_migrate/cf2104e83270d4b91a12f704f5903f58.png)
- 非极大值抑制算法
用于对生成的大量候选框进行后处理,去除冗余的候选框。如下图。
具体步骤:
- 先根据候选框的类别分类概率做排序:A<B<C<D<E<F,并标记最大概率矩形框F是我们要留下来的。
- 分别判断A-E与F的IoU是否大于某个设定的阈值,如果重叠度超过阈值,就除去。
- 从剩下的除F之外的矩形框中,选择标记最大概率的候选框,继续重复上述步骤。
特征提取
- 预处理
在使用深度神经网络提取特征之前,首先把候选区归一化成统一尺寸227*227。当然,外扩或内缩可以采用不同的方法,如原比例放大/缩小、直接填补灰色区等。不同的方法会轻微影响性能。
- 预训练
网络结构借鉴AlexNet。
![这里写图片描述](https://i-blog.csdnimg.cn/blog_migrate/0e991e18538154c6534ecbac6ead78ac.png)
这里训练的是模型识别物体类型的能力,而不是预测bbox位置的能力。提取4096维特征,经过全连接层后,输出1000维特征。采用SGD训练,初始学习率0.01。
- 微调训练
同样使用AlexNet,最后一层输出21维(20种类+1背景)。学习率0.001。
类别判断
- SVM分类器
每个候选框都放入SVM中判断物体类别。每个类别对应一个SVM,输入深度神经网络输出的4096维特征(也就是除去最后一层),输出positive或 negatoive。
由于负样本很多,使用hard negative mining方法。
- hard negative mining
hard negative mining解决的是负样本的训练问题。如果仅仅将随机创建的、不与正样本重叠的bounding box作为负样本,训练出的分类器并不好用,会抛出一堆错误的正样本(负样本不是bounding box中学习的负样本,于是错误地预测为正样本。
hard negative就是当错误检测到patch(特征图中的块)时,明确地从patch中创建负样本,并添加到训练集中。当再次训练后,分类器就会不断表现得更好。
位置精修
- 回归器bounding box regression
对于每一类目标,训练一个线性脊回归器精细修正候选框的位置,说白了就是把region proposal往gound truth上靠(图中红框到蓝框的过程)。正则项 λ = 10000 \lambda=10000 λ=10000。输入为深度网络pool5层的4096维特征,输出为xy方向的缩放和平移。
![这里写图片描述](https://i-blog.csdnimg.cn/blog_migrate/490a7f0c46359abd815c64201c0025fa.png)
bounding box一般用四维向量( x , y , w , h x, y, w, h x,y,w,h)来表示,分别代表中心点和宽高。
参考资料:
边框回归(Bounding Box Regression)详解
目标检测中IOU的介绍(Intersection over Union)
R-CNN论文详解(论文翻译)