美文网首页
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