百度飞浆图像分割课程 笔记11:实例分割 Mask R-CNN [ICCV 2017]

Top-down:先做检测,再做分割

Mask R-CNN框架
百度飞浆图像分割课程 笔记11:实例分割 Mask R-CNN [ICCV 2017]_第1张图片
目的:检测图像中的对象object(bounding box),同时为每个实例生成高质量的分割mask(框中哪个像素属于物体,哪个像素属于背景)

  • 第一阶段(RPN):通过RPN网络提取候选框(哪些区域可能是物体)
  • 第二阶段:对于选取出来的候选框,通过RoIAlign或者RoIPooling操作得到固定大小的feature map(包括当前物体的一些信息),通过feature map来预测类别或者bounding box以及mask(mask只对正样本做)

Mask R-CNN主要组件
百度飞浆图像分割课程 笔记11:实例分割 Mask R-CNN [ICCV 2017]_第2张图片
Region Proposal Network(区域建议网络)
百度飞浆图像分割课程 笔记11:实例分割 Mask R-CNN [ICCV 2017]_第3张图片
目的:图片通过backbone得到feature map,在feature map上预测哪些地方有可能出现proposal

主要步骤:采用滑窗机制,在feature map每个点去预测多个anchor,通常根据不同长宽比设置9个anchor,然后计算anchor相对每个点代表的物体(或者包围的物体)的一个偏移量(x,y,w,h),为4k coordinates。同时预测每个proposal是正样本和负样本的分数为多少,所以为2k scores。

具体实现细节参考NIPS2015发表的文章Faster R-CNN:https://proceedings.neurips.cc/paper/2015/file/14bfa6bb14875e45bba028a21ed38046-Paper.pdf

Feature Pyramid Network(特征金字塔网络)
百度飞浆图像分割课程 笔记11:实例分割 Mask R-CNN [ICCV 2017]_第4张图片
用resnet101层网络提取特征。得到不同尺度的特征
从低分辨率往高分辨做渐进式的融合,使得每一层的feature

  • 一方面融合了更高的视觉信息
  • 一方面融合了多尺度的特征

小物体在高分辨率做,大物体在低分辨率上做
因为小物体可能本身为32×32,变成低分辨率可能变成1个pixel,就无法检测了。
最后做预测,但是Mask R-CNN其实可以不在FPN上面做,可以直接在backbone的最后面预测就行了

具体实现细节参考CVPR2017发表的文章:
https://openaccess.thecvf.com/content_cvpr_2017/papers/Lin_Feature_Pyramid_Networks_CVPR_2017_paper.pdf

Head Architecture(头部结构)
百度飞浆图像分割课程 笔记11:实例分割 Mask R-CNN [ICCV 2017]_第5张图片
目的:mask分支怎么加到检测的分支上
不使用FPN的时候,怎么做mask生成
把RoIAlign出来的feature map(7×7×1024),通过一直输入,到res5得到feature map(7×7×2048)

  • 如果是做分类和回归:通过average pooling
  • 如果是做mask生成:通过反卷积(上采样)得到更高分辨率的feature map,然后预测80类的mask(coco数据)

mask分支对应的ground true是怎么生成的?

对于proposal,跟ground truth的bounding boxes找一个IoU最大的bounding boxes
在分割的时候,把proposal对应的ground truth的mask做一个变换,当作proposal在mask分支的ground truth

首先RoIAlign(本质就是双线性插值)通过两次卷积conv,输出为(7×7或者14×14),上采样成28×28,两种方法:

  • resize到原始ground true mask的大小
  • 将原始的mask resize成28×28,mask可能超过框,我们通过框把mask做截取,然后再resize成28×28

你可能感兴趣的:(百度飞浆图像分割课程,笔记,百度,r语言,cnn)