美文网首页
3 计算机视觉-阅读笔记(4)

3 计算机视觉-阅读笔记(4)

作者: 深度学习模型优化 | 来源:发表于2019-04-25 13:14 被阅读0次

3.3实例分割

3.3.1 问题描述

实例分割:

  • 在图像中将识别出像素属于哪个实例,并用颜色区分。

3.3.2 Mask R-CNN

图1 Mask R-CNN是Faster R-CNN的基础上增加一个Mask分支

Mask R-CNN是在Faster R-CNN的基础上改进得到的。其算法步骤为:

  • 由RPN得到RoI(FPN算法);
  • 由RoI Align(替换了Faster R-CNN中的RoI Pooling)将RoI统一为相同尺寸的特征;
  • 由这些特征,使用Faster R-CNN进行分类和bbox回归;
  • 在此基础上再加入一些卷积层用来判断RoI的每个像素的实例(这个卷积网络输出和RoI相同尺寸的矩阵,值为1表示为目标物体,0则为不是)。
图2 Mask R-CNN结构图

这里的RoIAlign(划重点)比较重要,下面重点介绍下。

3.3.3 ROI Align

RoI Pooling存在的问题(不匹配问题):

  • 将RoI区域量化为整数点坐标值;
  • 将量化后的区域分割成 k\times k 个单元(bin),即使不能整除时也将其量化。

上面的两个量化,会产生一定的偏差,导致检测和分割的准确度。

图3 RoI Pooling存在两次量化误差

如上图中的红色框所示。
一只狗狗的bbox为665 \times 665

  • backbone之后665/32 = 20.78
  • 然后通过RoI Pooling之后20/7 = 2.86都没办法整除。

于是误差出来了。为解决该问题,引入了成为RoI Align的方法。


图4 RoI Align能避免量化误差

RoI Align的思想:

  • 取消量化操作,采用双线性内插;
  • 并不是简单的双线性内插,如图6所示;

举例来说:

  • 把候选区域对于的特征区域(20.78\times 20.78)切分成7\times 7,那么我们得到的更小区域是2.97\times 2.97
  • 对这个这个更小区域进行max pooling。假设我们要进行2\times 2的max pooling,那么我们就可以把这个2.97\times 2.97的区域再切分成一个2\times 2的4个方框,然后对这4个方框的中心点求max pooling。
  • 这4个中心点的坐标可能不是整数。那么在25x25的特征映射里找离它最近的4个点,然后进行双线性插值来估计这个点的值。
图5 RoI Align能避免量化误差 图6 RoI Align的插值

RoI Align的步骤为:

  • 遍历每一个候选区域,保持浮点数边界不做量化
  • 将候选区域分割成k x k个单元,每个单元的边界也不做量化。
  • 在每个单元中计算固定四个坐标位置,用双线性内插的方法计算出这四个位置的值,然后进行最大池化操作。
    这四个固定位置是指在每一个矩形单元(bin)中按照固定规则确定的位置。(这个采样点是指采样谁?初步认为是双线性插值相关的采样点)比如,如果采样点数是1,那么就是这个单元的中心点。如果采样点数是4,那么就是把这个单元平均分割成四个小方块以后它们分别的中心点。显然这些采样点的坐标通常是浮点数,所以需要使用插值的方法得到它的像素值。

3.3.4 损失函数

Mask R-CNN不仅损失函数包括:

  • 分类
  • bbox回归
  • mask损失

L = L_{cls} + L_{bbox} + L_{mask}

相关文章

网友评论

      本文标题:3 计算机视觉-阅读笔记(4)

      本文链接:https://www.haomeiwen.com/subject/sonogqtx.html