Mask R-CNN
(一)论文地址:
https://arxiv.org/abs/1703.06870
(二)核心思想:
作者在 Faster-RCNN 目标检测网络的基础上提出了 Mask R-CNN,先检测出物体,再在检测框内对物体进行像素级的分割,可用于实例分割和 2D 姿态评估;
核心就是作者提出了一种新的 ROI 池化方式—— ROI Align,通过双线性插值的方法,改进了 ROI Pooling 像素不匹配的问题;
(三)Loss 函数:
这里定义了 Mask R-CNN 的 Loss 函数:
其中前两项与 相同, 是 softmax_cross_entropy_loss 函数, 是 smooth_l1_loss 函数,第三项 是分割的损失函数;
对于每个 ROI,输出结果为使用 sigmoid 预测的大小为
,代表
个像素上
个分类的二进制掩码;由于每个 ROI 都与一个分类为
的真值框关联,因此这里定义
只与该分类框内像素点是否为第
个分类有关,使用了 binary_cross_entropy_loss 函数,即二分类交叉熵损失函数;
(四)ROI Align:
4.1 ROI Pooling 的局限:
![](/qrcode.jpg)
ROI Pooling 是 Faster R-CNN 提出的一种将不同大小的 ROI 量化到相同的 7×7 大小,从而能够用权值共享的全卷积层输出 ROI 区域的分类向量和回归值;
假设输出大小为 7×7,则量化过程为:
- 对边界取整,并将每个 ROI 区域划分成 7×7 个区域;
- 对每个区域分别进行最大池化操作;
这样导致的问题是会有特征信息的丢失,虽然对 ROI 检测的结果没有很大影响,但是对分割的结果影响很大;
4.2 ROI Align:
为了解决上述量化过程造成问题,作者提出了 ROI Align:
即使用双线性插值法计算映射区域的值,即对每个 ROI 区域平均分成 7×7 个区域,每个区域的中心点使用双线性插值计算,从而避免使用取整操作和最大池化操作;
(五)网络结构:
作者在这里延伸了如图的两种结构,其中下采样的卷积层都是 3×3 大小,预测层是 1×1 大小,上采样(反卷积)使用的是步长为 2 的 2×2 大小的反卷积;
(六)训练细节:
正样本阙值为 0.5,输入边最小长度为 800,其余跟 Faster R-CNN 相同;