摘要
2012年之前, 目标检测算法性能已经进入平台期。性能好的算法都是集成算法(绑定底层特征和高层context)。在这篇文章中,作者提出了 R-CNN (Regions with CNN features)。
算法介绍
1. R-CNN方法包含三个模块:
1)产生类别无关的候选区域;
2)利用CNN(卷积神经网络)提取固定长度的特征;
3)学习linear SVM的集合,每个linear SVM对应一个类别分类器。
a) 生成候选区域(region proposals)
许多文章提供了这类方法,例如:objectness, selective search, 等等。作者使用了selective search。
b) 特征提取
作者使用caffe在每个候选区域提取4096维特征。作者在实现的时候,使用了AlexNet提取特征。
因为AlexNet的输入图像大小是227*227RGB图像。输入的候选区域必须转换为227*227。作者采用了最简单的转换方法。不管候选区域的尺寸和方向率,直接将图像转为227*227。
在转换之前,作者将图像的边缘像素进行了填充。填充的基本条件是,填充的边缘在变换后的图像上是16像素。
2.R-CNN测试
在测试的时候,1)运行selective search提取2000个候选区域。2)转换每个候选区域为227*227的RGB图像,然后送给AlexNet,提取4096维特征。3)4096维特征送给linear SVM分类器,为每个类别打一个分数。
得到了所有的打分区域,然后使用非最大抑制 拒绝掉一些低分值的区域。
3.运行时间分析
存在两个属性使计算更加有效率。
1)所有类的特征是共享的。
2)CNN提取的特征向量是低维的(仅仅4096)
计算region proposals和特征的时间被分摊给所有类别,因此计算效率非常高。
4.R-CNN训练
1)监督预训练
首先使用ImageNet(图像级别的标注,没有标定每个目标的位置)训练一个CNN网络。
2)Fine-tuning微调
使用warped regions proposals进行微调,并且1000类的分类层,修改为21类
(20个类别,加上1个背景)。
3)类别分类器
使用Linear SVM训练类别分类器。Linear SVM的输入是4096维特征。
4.评估
end