mask R-cnn, kaiming he的新作。可以同时完成object detection和segmentation,还可以做pose estimation,简直就是功能多多啊。在coco上测试,超过去年竞赛冠军的水平了,代码会在不久的将来放出来。
如果我没记错的话,facebook的feature cascade(????)在coco上效果是挺好的,但是换到pascal voc上效果就差了不少,这点一直没明白为什么。Mask R-cnn也是只在coco上做的实验,是他们不屑做pascal voc的实验还是又和cascade一样,又是只在coco上效果好?
自大一下,之前在做分割时也测试过,对每一个pixel的二类监督,以及做检测时也有这个,只是还没有分那么多类,那部分工作后来因为忙也没测试。
整体过了一遍文章,有几点需要记住:
1. 框架和faster rcnn是类似的,也就是说如果你不熟悉faster rcnn那么请先阅读faster rcnn。
2. 模型主要是加入了mask这部分,就是对Regions,不仅仅进行object detection的监督学习,同时还细化到pixels的监督学习。object detection的监督学习就和faster rcnn类似了,主要是IOU是否大于阈值,以及分类类别是否和gt一致。而pixels的监督学习,是看看regions和segmentation gt的intersection,也是类似于IOU吧,只是计算方式不一样,这个是细化到pixels级别的。
3. RPN的参数并不共享,是先训练RPN,分开训练的mask rcnn,参数并不共享。文中说是为了convinent ablation,我猜测可能不好调试,效果不好?faster rcnn证明联调是好的,虽然理论上解释分开才收敛(汗)。
4. 实验部分做的几个小表格,结果值得注意的。分别分析了不同的模式,结果有什么差别。其中有一点是multinomial vs independent masks是说明了svm这种两类分类的效果要比一下子分好多类的效果好吗?还有class-specific vs class-agnostic masks,这点在google的multibox的工作中也有体现。只是这种好像更适用于不能联调的情况,如果模型可以做到end-to-end好像还是有class的更好的。ROIAlign,这个结果比warp或者pooling好了不少。不过文章中提到的感觉有点笼统,就是不像warp或者pooling那么近似的多了,通过插值,使得roi不发生那么大的偏移?这个大概是分割时特有需要注意的地方。等代码放出来再细看实现细节。
5. 模型的application的鲁棒性,就是同样的框架稍微有点变动就可以用在别的任务上了,其中一个实验就是pose estimation.说到这里,文章写得好像缺了concolusion,意思是这个章节就是concolusion了?恩,其实这么说的话,这个pose estimation也算是个坑。
6. 计算量的问题,8GPU,每个GPU是2minibatch.好像kaiming he在微软的工作是一样的,都是8GPU,因此并行起来16张图一起处理。只是这部分代码一直没公开,我估计这篇mask rcnn即使公开代码,也是一个单机版的。回到测试时间,5fps,还可以,反正比faster rcnn慢,但是这就要看应用和科研的需求了。tradeoff怎么选,当然要看另外一篇google的文章了,Speed/accuracy trade-offs for modern convolutional object detectors(话说,我好像当初还挖了个坑,一直没填,汗!)。
先说我理解到的这或许不算是文中精华的6点精华吧,上传一下文章中的图,结构很清晰,懂faster rcnn的自然就懂这张图了。