背景
在2012 Imagenet LSVRC比赛中,Alexnet以15.3%的top-5 错误率轻松拔得头筹(第二名top-5错误率为26.2%)。由此,ConvNet的潜力受到广泛认可,一炮而红。既然convNet在图像分类任务上能取得好成绩,是不是也能放到目标检测任务上呢。本文就是用convNet解决目标检测任务的首次探索。在PASCAL VOC 2010上的mAP达到了53.7%。
方法
模型一共分为三个模块。
(1)region proposals(区域推荐))。在一张整图上面产生很多的侯选框,因为目标检测任务不仅要做分类,还得把目标框出来。这里其实是用了遍历的思想,先把可能存在目标的位置全部列出来,再一个个分类。这里用到的是selective search算法。
(2)Feature extraction(特征提取)。这部分就是通过AlexNet的前5个conv层和前2个FC层对上面产生224*224*3的图片进行特征提取(注意:产生的子图片要resize到224*224*3,因为后面的FC层接受的是固定长度的vector),最终产生的是4096-d的feature vector。
(3)SVM分类。使用SVM方法对每个4096-d的feature vector进行分类。注意,原AlexNet里面分类是在后面加一个FC层,把4096-d的vector转成N-d(N是类别数),然后用softmax算法做分类。作者之所以不用这种方法是因为实验中SVM方法效果更好。
(4)bbox regression(边框回归)。 使用回归器精细修正候选框位置。
总结
可以发现,RCNN的原理十分简单,先用selective search算法在整图上产生n个子图,再把子图resize到224*224*3,然后扔到AlexNet里面(FC-softmax层去掉),产生n个4096-d的vector,用SVM算法分类。
它的贡献在于是用convNet解决目标检测问题的开山之作,模型的mAP比传统方法高,让更多人通过ConvNet来解决目标检测问题。
缺点
(1)它的缺点当然也是很明显的,首先这种方法太暴力,一张图片要产生几千张子图,占用大量的磁盘空间;
(2)还有就是效率低,我们可以发现,几千张图片肯定有非常多重合的部分,然而这些重合部分都要分开来计算,产生了大量的冗余计算。