《CRAFT Objects from Images》 2016年发表在CVPR上,对于目标检测问题,将网络结构进行了进一步的改进。
目标检测任务通常分为两个子任务:产生proposals以及将proposals分类。
在本文中,作者将两个子任务进一步细分,分别提高精度,以达到提高精确率的目的。
整体框图如下:
1. 级联的proposal生成结构
理想的proposal生成器应该产生尽量少的proposal,却能覆盖尽量多的目标实例。
由于pooling造成的分辨率损失,以及固定比例的滑动窗口,RPN在处理不同尺度不同比例的物体上仍有不足。
为了观察RPN的效果,作者基于VGG_M,使用PASCAL VOC 2007 train+val训练了RPN网络。在PASCAL VOC 2007 test上进行测试,每张图像产生300个proposals,IoU=0.5,整体的召回率达到94.87%。但在每一个类上的召回率大有不同:
其中召回率低于平均值的类别被highlight。
可以发现:1. object的比例不同、尺度不同的类别难检测(boat、bottle)
2. 外观复杂度较低、有遮挡的类别难检测(plant、tv、chair)
为了改善RPN提取的proposals质量,提出级联的结构,即RPN级联FRCN,用RPN的输出训练FRCN:
其中RPN提取一般的图案,如纹理。FRCN学到更加细致的图案。
分别训练RPN、FRCN网络。RPN网络训练后,每张训练图像上生成2000个初始proposals。用这些proposals训练FRCN网络。
训练时,positive和negative的设定与RPN相同:和任意groundTruth的IoU大于0.7视为positive;和所有groundTruth的IoU小于0.3视为negative。
测试时,RPN生成2000个初始proposals,输入到FRCN,通过合适的阈值抑制策略,可以获得小于300个proposals。这些proposals包含背景的信息更少了,而且不同来源的proposals可以整合输入,从而利用互补信息。
为什么不级联两个RPN网络?因为FRCN能够处理更难的分类问题。
2. 级联的object分类结构
分类任务需要特征能够提取到类间、类内的差异。
在Fast R-CNN中,通过softmax,分类器可以获得多类别的交叉熵损失。
多类别的交叉熵损失能够学习到丰富的类间差异,而在获取类内差异方面较弱。
Fast R-CNN的实验表明,最终检测中,错误分类是一个很大的问题。
Fast R-CNN舍弃了R-CNN中one-vs-rest SVM(训练时依次把某个类别的样本归为一类,其他剩余的样本归为另一类,这样k个类别的样本就构造出了k个SVM。分类时将未知样本分类为具有最大分类函数值的那类)。在本文中,重新应用这种形式。