目标检测之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算法基本步骤_第1张图片

fine-tuning

然后需要做的就是"fine-tuning",主要就是对上面得到的model进行稍微的改动。首先改变了数据集的大小,前面用的数据集是比较大的,主要适用于进行分类,这里我们主要使用的是相对较小的,并且是通过selective search之后的region proposal 作为网络的输入。如果当前region  proposal的IOU大于0.5,把他标记为positive,其余的是作为negtive,去训练detection网络。并且对SGD的参数进行的适当的修改。   https://blog.csdn.net/u011534057/article/details/51218218

测试阶段的检测

测试阶段,使用selective search的方法在测试图片上提取2000个region propasals ,将每个region proposals归一化到227x227,然后再CNN中正向传播,将最后一层得到的特征提取出来。然后对于每一个类别,使用为这一类训练的SVM分类器对提取的特征向量进行打分,得到测试图片中对于所有region proposals的对于这一类的分数,再使用贪心的非极大值抑制去除相交的多余的框。非极大值抑制(NMS)先计算出每一个bounding box的面积,然后根据score进行排序,把score最大的bounding box作为选定的框,计算其余bounding box与当前最大score与box的IoU,去除IoU大于设定的阈值的bounding box。然后重复上面的过程,直至候选bounding box为空,然后再将score小于一定阈值的选定框删除得到一类的结果。作者提到花费在region propasals和提取特征的时间是13s/张-GPU和53s/张-CPU,可以看出时间还是很长的,不能够达到及时性。

hard negatives:
 在训练过程中会出现 正样本的数量远远小于负样本,这样训练出来的分类器的效果总是有限的,会出现许多false positive。  采取办法可以是,先将正样本与一部分的负样本投入模型进行训练,然后将训练出来的模型去预测剩下未加入训练过程的负样本,  当负样本被预测为正样本时,则它就为false positive,就把它加入训练的负样本集,进行下一次训练,知道模型的预测精度不再提升  这就好比错题集,做错了一道题,把它加入错题集进行学习,学会了这道题,成绩就能得到稍微提升,把自己的错题集都学过去,成绩就达到了相对最优

 

目标检测之RCNN算法基本步骤_第2张图片

原文:https://blog.csdn.net/zhangyoufei9999/article/details/80406423  

 


 

你可能感兴趣的:(目标检测)