论文笔记 《Part-based R-CNNs forFine-grained Category Detection》

ECCV14的oral,论文出处:http://www.cs.berkeley.edu/~rbg/papers/part-rcnn.pdf

概述


fine-grained的核心挑战是定位part,于是这个工作在RCNN上加了part,主体流程见上图:

  1. 提取region proposal,这里用的selective search
  2. 找到物体的bbox和part的bbox,这里需要用到空间信息进行重打分
  3. 之后将bbox的特征提取出来,然后分类

Part-based RCNNs

训练一个有part的RCNN,满足了两个条件:

  • proposal里面覆盖了95%的part
  • part有标记信息,可进行有监督学习

但是其实具体来说,跟RCNN框架还是有点差别的:

  • 都用ImageNet的模型做pretrain,但这里finetuning一个200的分类器(这里对应了200种鸟)。而RCNN是tuning200类+1背景的。
  • 之后得到特征后,用SVM训练root和part的分类器。RCNN中没有part分类器(而且为啥part的分类器不在CNN中tuning之后再重新训练SVM呢?)

Geometric constraints

这里需要对上述root和part进行重新打分,利用到的是part相对于root的空间信息,用式子(1)表示:

上面的△(X)表示某种约束。
首先给出第一个约束是part的bbox应该要几乎都在root的bbox里面(最多只有10个像素能在外面),对应式子(2)和(3):

然后给出一个更强的约束是,part相对于root应该是有一个“默认”的位置的(比如鸟头应该在上方等),于是有基于第一个约束有了第二个约束,对应式子(4):

其中$\delta_i$代表对part的位置的某种建模方式,文中提到了两种,分别是基于多高斯和最近邻的,对应下面:

基于最近邻的定位效果见这个:

Fine-grained categorization

用上述方法得到了root和part的位置后,用CNN提取特征,然后拼成长向量,用SVM求解。

Evaluation

用的数据集是Caltech-UCSD bird dataset(CUB200-2011),有1w+的图片,200类鸟(即平均每类鸟50+张左右),标记有bbox和15个part的位置。
细节:

  • 作者只用到了头部和身体这两个part。
  • CNN特征取的是fc6

对比结果如下:

大致意思是,提升10%以上了。
在给出bbox时候,是state-of-the-art(其中Oracle82%是因为测试阶段也用了bbox还有part标注)。在不给出bbox的时候,因为太难基本没有其他人做,这个方法依然是state-of-the-art。


上图给出了去掉part特征时候的结果,也就是只利用空间信息来定位object,依然有提高,说明了空间约束有助于提高结果。


上图对应selective search给出的proposal的召回率。在ol>0.5时候,基本都能够召回。在ol>0.7时候,召回率会大幅度下降。所以作者认为目前方法的bottleneck在于proposal方法。

总结

不愧是oral,感觉挺有启发。
提高10%以上主要功劳应该是在CNN特征。
其他贡献是part的定位和几何约束,大概能提高1~2%个点。

很久没有更新网站,发现多了不少评论和问题,无法一一回复,如果现在仍有问题请再次留言 :) 2016.03.29