目标检测领域得益于卷积神经网络CNN和region proposal算法的发展,在各种大规模竞赛数据集(ImageNet,Pascal VOC,COCO等)上准确率突飞猛增。
目标检测中非常重要的指标:识别精度,识别速度,定位精度
目标检测中衡量识别精度的指标是mAP(mean average precision)。多个类别物体检测中,每一个类别都可以根据recall和precision绘制一条曲线,AP就是该曲线下的面积,mAP是多个类别AP的平均值。目标检测评价体系中衡量定位精度的指标是IoU,IoU就是算法预测的目标窗口和真实的目标窗口的交叠(两个窗口面积上的交集和并集比值),Pascal VOC中,这个值是0.5(已被证明相对宽松)。而2014年以来出现的MS COCO竞赛规则把这个IoU变成了0.5-1.0之间的综合评价值,也就是说,定位越准确,其得分越高,这也侧面反映了目标检测在评价指标方面的不断进步。
一.传统目标检测方法
存在问题:1基于滑窗的区域选择策略没有针对性,时间复杂度高,窗口冗余;2手工设计的特征对于多样性的变化并没有很好地鲁棒性。
二.基于RegionProposal的深度学习目标检测算法
Region Proposal很多好的解决了滑窗策略的冗余性。Region Proposal(候选区)是预先找到所有可能包含目标的位置。Region proposal利用了图像中的纹理、边缘、颜色等信息,可以保证在选取较少窗口(几千个甚至几百个)的情况下保持较高的召回率,大大降低了后续操作的时间复杂度,并且获取的候选窗口要比滑动窗口的质量更高(滑动窗口固定长宽比)。有了候选区域,剩下的工作实际就是对候选区域进行图像分类的工作(特征提取+分类)。
2014年,Ross B.Girshick使用region proposal+CNN代替传统目标检测中的滑动窗口+手工设计特征,设计了R-CNN框架,使得目标检测取得巨大突破,并开启了基于深度学习目标检测的热潮。
1. R-CNN (CVPR2014, TPAMI2015)
R-CNN目标检测流程:
(1) 输入测试图像
(2) 利用selective search算法在图像中提取2000个左右的regionproposal。
(3) 将每个region proposal缩放(warp)成227x227的大小并输入到CNN,将CNN的fc7层的输出作为特征。
(4) 将每个region proposal提取到的CNN特征输入到SVM进行分类。
R-CNN存在的问题:
(1) 训练分为多个阶段,步骤繁琐: 微调网络+训练SVM+训练边框回归器
(2) 训练耗时,占用磁盘空间大:5000张图像产生几百G的特征文件
(3) 速度慢: 使用GPU, VGG16模型处理一张图像需要47s。
2. SPP-NET (ECCV2014, TPAMI2015)
R-CNN慢:对图像提完region proposal(2000个左右)之后将每个proposal当成一张图像进行后续处理(CNN提特征+SVM分类),实际上对一张图像进行了2000次提特征和分类的过程!
SPP-NET解决速度慢的方法:对整张图像只提一次卷积层特征,然后只需要将region proposal在原图的位置映射到卷积层特征图上,然后将每个region proposal的卷积层特征输入到全连接层做后续操作。(对于CNN来说,大部分运算都耗在卷积操作上,这样做可以节省大量时间)。
问题难点和解决方法:
1.每个region proposal的尺度不一样,直接这样输入全连接层肯定是不行的,因为全连接层输入必须是固定的长度。
2. SPP-NET的网络结构图,任意给一张图像输入到CNN,经过卷积操作我们可以得到卷积特征(比如VGG16最后的