一、RCNN概述
包含三个模块:
1. 产生类别无关的region proposals(2000).候选检测区域的集合。
2. 卷积神经网络,用于提取每个region特点大小的特征向量。
3. 类别相关的线性SVM.
二、候选框生成
训练阶段检测
1. 在众多方法中,最终使用selective search方法。进行生成region proposals。
将region 变形成为277277的尺寸大小(图像拉伸)。
2. 使用CNN对每个region proposal提取一个4096维的特征向量。
即,通过前向传播(一个去均值的227277的RGB图像),五个卷积层和两个全连接层来计算特征。
测试阶段检测
1. 在测试图像上使用selective search抽取约2000个region proposals。
2. 变形每一个region proposals,再通过CNN计算特征。
3. 对于每个类别,使用训练好的SVM(二分类),进行特征向量打分。
4. 给出一整天中所有的scored regions,然后使用NMS,将IOU大的剔除。
其中,将计算过程转换为矩阵和矩阵运算,大大压缩了空间和时间。
三、训练
-
使用CNN预训练方式,简化训练过程。
-
精调CNN
– 将分类层换成随机初始化的(N+1)路分类层。N 类别数,1 背景。
– 将所有与ground-truth边框的IOU>=0.5的region proposals作为正例pos,其他为负例neg。
– SGD,开始学习率为0.001,每轮SGD迭代,统一使用32个pos proposal 和 96个neg proposal,即每个mini-batch的大小为128. 正负数据比(1:3)个人理解:当传入一个图像时,会生成2000个region proposal,将这些通过与gt的IOU比,分为正负类,每次从中取128个进行训练。其中正负比 1:3.
-
目标类别分类器 (多SVM)
仍然采用IOU方式,低于0.3的为负例,正样本就是每个类的ground-truth边框。
每个类别都有一个线性SVM,对于训练数据过大,采用了一种困难样本挖掘方法(hard negative mining),更换负样本的数据,以减少数据量。感受野,即当前特征图对原始图像上的感受范围大小(映射)。 pool5时,感受野达到195*195,计划接近全局图像大小。
-
边框回归 以提高定位性能
线性回归模型。在pool5时,预测一个新的proposal窗口出来,修复了大量定位错误问题。
在类别检测SVM给定每个region proposal评分后,使用类别相关的边框回归器预测一个新的边框。
四、正负样本说明
在CNN时,有前景和背景的正负样本区分方式,1:3的正负比训练。输出4096维特征向量。
在SVM训练时,采用gt 和iou<0.3的proposal,进行正负类别分类。
五、总结
img --》 region proposal --》 CNN --》 类别分类 --》 边框回归
train
- 使用selective search为每张图生成2k个region proposals。
- 使用一个已训练好的CNN(分类数据集上训练的模型)。
- 使用每个region proposal 采用padding=16的方式,修改为277*277尺寸,输出4096维特征图。
- 对于每个类别训练一个SVM分类器,用与每个类别的打分(正样本为gt,负样本使用iou<0.3的region 或者 困难样本)。
- 边框回归。
test
- 为图片生成2k个region proposals,对每个框进行pading16,去均值,resize277*277.
- 通过CNN获取特征值,对特征值进行SVM预测分类评分(2k)。
- 对于每个类别的2k 进行NMS,去除超出IOU的region proposals。
- 对于保留下的,进行边框回归预测最终的边框值。