RCNN将CNN方法引入目标检测。
首先RNN的基本流程:
- 采用Selective Search方法生成1k-2k个候选区域(region proposal)
- 对每个候选区域使用CNN网络提取特征
- 将特征输入分类网络,判断是否属于该类
- 使用回归器精细修正候选框位置
select search单独进行总结,这里直接使用
1 生成候选边界框
我们输入一张图像,利用Select Search(单独总结)方法生成1k-2k个候选框,但是其大小不一致,很难在输入下面的网络,因此,需要将图像缩放到相同大小。
这里实验了两种办法:各向异性缩放和各向同性缩放
2 CNN特征提取
2.1 网络选择
直接使用了经典的AlexNet网络的特征提取层(单独总结过)。
2.2 参数初始化
随机初始化参数对训练数据的要求非常大,因此作者选择了先使用AlexNet网络的参数,在后续对Select Search生成的候选框进行fine-tuning训练。优化使用的是随机梯度下降,学习率为0.001。
2.3 正负样本的界定
fine-tuning时需要界定Select Search生成的候选框是正样本还是负样本,方法如下:
因此在CNN阶段我们需要用IOU为2000个bounding box打标签。
如果用selective search挑选出来的候选框与物体的人工标注矩形框的重叠区域IoU大于0.3,那么我们就把这个候选框标注成物体类别(正样本)。否则我们就把它当做背景类别(负样本)
3 分类网络
假设输出2000个候选框,那么经过CNN特征提取层后我们输出的结果应该是20004096,此时将该矩阵**与大小为4096\N的SVM权值矩阵相乘*即可得到2000\N的结果(N代表一共N类)
4 位置精修
目标检测问题的衡量标准是重叠面积,许多看似准确的检测结果,往往候选框不够准确,重叠面积很小,故需要一个位置精修步骤。
这里采用一个线性回归器进行位置精修,输入是CNN网络提取的特征,输出是缩放和平移后的xy坐标。
5 测试
SVM将CNN提取的特征分类后(假设2000个候选框,每个候选框N个类别)。对每一个类别,2000个候选框根据分数采取NMS(单独总结)除去相交的多余的候选框,最后对这些框进行canny边缘检测,得到bounding-box。