R-CNN

这篇文章使用了CNN来检测目标,做了两个主要贡献:

  1. 使用CNN来进行物体检测,之前都用的如HOG。

  2. 给了一个迁移学习的例子。

学习分三步走:

  1. 使用Selective Search来提出Region Proposal,一张图上百个Region Proposal

  2. 将Proposal进行Warp操作,塞进CNN(有七层卷积层),再经过两层全连接,得到Feature

  3. 使用SVM根据这些Feature训练

由于卷积层们的参数共享,因此唯一与特定类有关的计算只有最后的全连接层的矩阵点乘,SVM的权重,以及非极大值抑制。这带来了减少计算量的好处。

非极大值抑制后的Region Proposal有个问题:到底和原来的Ground Truth重叠多少才算是Negative呢?作者说这需要调参,做一个网格搜索:设到0.5会使mAP降低5个百分点,设到0会使mAP降低4个百分点。

精调CNN是有用的,会提高mAP八个百分点。网络深度也有帮助,使用精调后的VGG16可以提高7.5个百分点。此外,经过对于Detection Error的分析,作者发现卷积带来的平移不变性给结果带来了一个负面影响:对于Region Proposal的不敏感。(Compared with DPM, significantly more of our errors result from poor localization, rather than confusion with background or other object classes, indicating that the CNN features are much more discriminative than HOG. )因此他们做了Bounding Box Regression,对于定位框进行微调。

做完以PASCAL VOC为基准的数据集之后就迁移到ILSVRC上。由于ILSVRC的训练数据集标注不完整,因此不能够依据ILSVRC的训练数据集生成negative example。(很严谨,如果是我可能就直接瞎生成了)由于验证数据集是标注完整的,因此根据把验证数据集的一部分拿出来,作为训练数据,且不在验证过程中使用。

总结:先前目标检测算法是利用低级图像特征的集成分类器,很复杂。这篇文章使用简单的算法,产生了在PASCAL VOC2012数据集上近相对30%的提升。

可以做的改进:

  1. 改进Region Proposal的方法。这里使用了Selective Search,可以改为其他。

  2. 取消SVM,直接改为使用SoftMax层判断对应类别概率。

引用:

[1] R-CNN原论文

[2] 什么是mAP

[3] 什么是IoU

[4] 什么是Hard Negative Mining?