目标检测之RCNN算法基本步骤

文章:Girshick, Ross, et al. “Rich feature hierarchies for accurate object detection and semantic segmentation.” Proceedings of the IEEE conference on computer vision and pattern recognition. 2014.

代码:https://github.com/Liu-Yicheng/R-CNN

数据集:采用17flowers据集, 官网下载:http://www.robots.ox.ac.uk/~vgg/data/flowers/17/

基本步骤:

1. 预训练Alex网络。采用的数据是17flowers. 用来分类17种花。将训练好的模型保存。

2. Fineturn训练。 在这一步中选用了2flower数据作为训练集。首先会逐步读入图片,然后采用seletive search 对读入的图片生成候选区域,再计算每个候选区域和ground truth(代码中的fine_turn_list)的交并比(IOU).当IOU大于阈值时,则认为是当前的候选区域属于正确类。并且将其标定为相应的类别(label)。这样每一个候选区域就会产生相应的label即(image, label). (image, label)就是Fineturn训练的训练集。然后利用这些数据训练alex网络,这时候参数的初始化即为步骤1中与训练的结果,将训练好的fineturn模型保存。

3. SVM训练。采用与2相同的方法生成svm训练集。首先会逐步读入图片,然后采用seletive search 对读入的图片生成候选区域,这时候会生成候选区域候选框的坐标信息, 再计算每个候选区域和ground truth(代码中的fine_turn_list)的交并比(IOU).当IOU大于阈值时,则认为是当前的候选区域属于正确类。并且将其标定为相应的类别(label), 并将这个label对应的候选区域图(iamge)的候选框坐标信息与ground truth的位置信息作对比,保留相对位置(平移和缩放)信息保留下来(label_bbox),作为训练数据。这样整个训练数据则为(image, label, label_bbox)对。但是在训练SVM时并没有用到label_bbox信息。还只是用来分类。而且需要对每种类型都单独训练一个分类器, 并保存训练好的模型,备用。另外SVM分类器的输入是Alex网络softmax链接层之前的全连接层的输出结果。

4.候选框回归(Reg_box)。这个模型的训练集就是3中方法生成的(image, label_bbox)对。模型会计算出候选框相对于ground truth的平移缩放结果。

5.测试。读入测试图片,生成候选框,用SVM判断类别,如果不是背景,用Reg_box生成平移缩放值, 然后对生成的候选区域进行调整。最后取所有候选区域调整后的结果的平均值作为最终的标定框。最终结果如下图所示。

目标检测之RCNN算法基本步骤