Mask RCNN笔记

昨天刚看了mask rcnn

先写一点留有的印象

mask rcnn是在faster rcnn的基础上,又添加了一个并行的分支,用来做实例分割。

并且将之前的RoIPooling 替换为了 RoIAlign,使用RoIAlign的优势是,使用双线性插值,能将操作前的信息更加具体的保留下来,从而有利于进行实例分割。

mask rcnn的论文相对简单,在实例分割时,使用了FCN,现在能想起来的,大概就这么多。

mask rcnn的关键 RoIAlign,是将RoIPooling的插值方式,从最近邻插值(INTER_NEAREST)方式变为双线性插值。

这里复习一下关于RoI,RoIPooling的知识

RoI是Region of Interests 特征图上感兴趣的区域(“框”)

RoIPooling的过程是将一个个大小不同的box框,都映射成固定大小(w*h)的矩形框

具体操作是:先把RoI中的坐标映射到feature map上,得到feature map上的坐标后,使用Pooling得到输出,在Pooling过程中需要计算Pooling后的结果对应到feature map上所占的范围,然后在那个范围中进行取max或average操作。使用RoIPooling会在RoI和extracted features之间引入误差(introduce misalignments)。

所以使用RoIAlign 来解决这个问题。

论文中还和RoIWarp(J. Dai, K. He, and J. Sun. Instance-aware semantic segmentation via multi-task network cascades. In CVPR, 2016. 2, 3,4, 5, 6 )进行了比较,实验结果表明RoIAlign的效果要好于 RoIWarp。

尝试了两种不同的faster rcnn的结构,ResNet C4和FPN结构。

从图中可以看到,ResNet C4共享RoI层,而FPN是两个任务分开做RoI。

mask Loss 只定义在了正例的RoIs上。

在该文章中RPN和 mask分支,训练时,不共享特征;对于前边的特征提取,RPN和mask共享基础网络结构。

 

 

猜你喜欢

转载自www.cnblogs.com/ya-cpp/p/8954828.html
今日推荐