Mask R-CNN

目录

摘要

Abstract

Mask R-CNN

网络架构

Backbone

RPN

Proposal Layer

ROIAlign

bbox检测

Mask分割

损失计算

实验复现

总结


摘要

Mask R-CNN是在Faster R-CNN的基础上进行改进的目标检测和实例分割网络。Faster R-CNN主要用于目标检测,输出对象的边界框和类别标签,而Mask R-CNN在Faster R-CNN的基础上增加了像素级分割的能力,能够输出对象的像素级掩码。Mask R-CNN使用了ROI Align层,解决了Faster R-CNN在边界像素对齐方面的问题,从而提高了检测和分割的精度。ROI Align通过双线性插值来避免量化操作,更精确地从特征图中提取对应RoI的富含空间信息的特征,保持空间位置信息,解决了Faster R-CNN中使用的RoI Pooling方法的定位不准确问题 。Mask R-CNN在Faster R-CNN的架构基础上增加了一个并行的掩膜预测分支,在每个RoI上,使用FCN来预测对象的掩膜,使得网络能够更细致地学习物体的空间特征。Mask R-CNN在PASCAL VOC和MS COCO等多个重要的数据集上达到了当时的最佳分割和检测精度。

Abstract

Mask R-CNN is an improved object detection and instance segmentation network based on Faster R-CNN. Faster R-CNN is primarily used for object detection, outputting the bounding boxes and class labels of objects, while Mask R-CNN adds the capability of pixel-level segmentation on the basis of Faster R-CNN, enabling the output of pixel-level masks for objects. Mask R-CNN employs the ROI Align layer, which addresses the issue of boundary pixel alignment in Faster R-CNN, thereby enhancing the precision of detection and segmentation. ROI Align uses bilinear interpolation to avoid quantization operations, extracting features from the feature map that correspond to the RoI with rich spatial information more accurately, preserving spatial location information, and resolving the inaccurate localization issue of the RoI Pooling method used in Faster R-CNN. Mask R-CNN adds a parallel mask prediction branch to the architecture of Faster R-CNN, using an FCN to predict the masks of objects on each RoI, allowing the network to learn the spatial features of objects in more detail. Mask R-CNN has achieved the best segmentation and detection accuracy at the time on several important datasets, including PASCAL VOC and MS COCO.

Mask R-CNN

论文地址:[1703.06870v3] Mask R-CNN

项目地址:Mask R-CNN

Mask R-CNN是一种在有效检测目标的同时输出高质量的实例分割的网络模型,是对Faster R-CNN的扩展,在bbox检测的同时并行地增加一个预测分割掩码的分支。Mask R-CNN就是将物体检测和语义分割结合起来,从而达到了实例分割的效果,该模型效果图如下所示:

在我们学习Mask R-CNN之前,我们需要先对Faster R-CNN有一定的了解,大家可以通过我之前的博客了解。

网络架构

Mask R-CNN网络模型,如下图所示:

Backbone

该模型采用了ResNet101+FPN作为骨干网络进行图像特征提取,选用ResNet提取特征我们已再熟悉不过了,为了增强图像的语义特征,更好地预测不同大小的物体,额外引入了FPN模块。FPN示意图如下图(d)所示:

图(d)中金字塔底部为浅层特征图,金字塔顶部为深层特征图。浅层特征图感受野小,适合检测小目标;深层的特征图感受野大,适合检测大目标。FPN通过融合不同尺度的特征图,使得模型能够同时处理不同大小的目标。

FPN网络结构如下所示:

该网络主要由自底向上的特征提取路径和自顶向下的特征融合路径组成。自底向上的路径是ResNet的正向传播过程,用于提取不同层次的特征图。自顶向下的路径通过上采样和横向连接的方式,将高层特征图的语义信息与低层特征图的空间信息进行融合。

RPN

主要是在骨干网络提取的特征图像中选取候选区域,详细可看Faster R-CNN中的介绍。

Proposal Layer

将RPN选取的候选框作为输入,利用rpn_bbox对选取的anchors进行修正,得到修正后的RoI。然后,舍弃掉修正后边框超过图片大小的anchor,再根据RPN网络,获取score靠前的前6000个RoI。最后,利用非极大抑制的方法获得最终需要进行预测和分割的区域。

ROIAlign

ROIAlign的提出是为了解决Faster R-CNN中RoI Pooling的区域不匹配的问题。

  • RoI Pooling

RoI Pooling是Faster R-CNN中必不可少的一步,因为其会产生长度固定的特征向量,有了长度固定的特征向量才能进行Softmax计算分类损失。该方法区域不匹配问题是由于RoI Pooling过程中的取整操作造成的。

例如:输入一张 800×800 的图片,经过一个有5次降采样的卷机网络,得到大小为 25×25 的特征图像。

  • 第一次区域不匹配

输入图像的RoI区域大小为 600×500 ,经过网络之后对应的区域为 18.75 × 15.625 ,ROI Pooling采用向下取整的方式,得到RoI区域的特征图像为 18 × 15 。

  • 第二次区域不匹配

然后,RoI Pooling将上一步中的特征图像分块,假如需要一个 7 × 7 块,每个块大小为 \frac{18}{7}\times \frac{15}{7} ,同样进行向下取整,导致每块大小为 2×2 ,即整个RoI区域的特征图像的尺寸为缩小为 14×14 。

上述两次不匹配导致特征图像在横向和纵向上分别产生了4.75和1.625的误差,对于Faster R-CNN进行目标检测而言,几个像素的偏差在视觉上可能微乎其微。但是,对于Mask R-CNN增加了实例分割而言就会严重影响精确度。

  • ROIAlign

RoIAlign没有取整操作,可全程使用浮点数。

(1)计算RoI区域的边长,边长不取整;

(2)将RoI区域均匀分成 k × k 个块,每个块的大小不取整;

(3)每个块的值为其最邻近的特征图像的四个值通过双线性插值得到;

假设白框中的交点为特征图像上的点,蓝框为RoI特征图像。将蓝框分为了 7x7 的块,若要计算每个块的值,则需要借助以下公式:

f=(1-u)(1-v)f_{1}+u(1-v)f_{2}+(1-u)vf_{3}+uvf_{4}

其中u、v分别为某块中心粉点与f_{1}f_{3}的横向距离u,以及与f_{1}f_{2}的纵向距离v。

(4)使用Max Pooling或者Average Pooling得到长度固定的特征向量。

使用RoIAlign的对于准确度的提升还是很明显的,如下图所示:

bbox检测

将RoIAlign输出的 7x7x256 的特征图像拉伸至 1x1x1024 的特征向量,然后分别进行分类和框预测即可。与Faster R-CNN类似,如下图灰色区域所示:

Mask分割

如上图下半部分所示,Mask分支使用传统的FCN图像分割方法,最后生成 28×28×80 的预测掩码结果。

最后得到的结果是软掩码,经过Sigmoid后的(0,1)浮点数。

损失计算

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

Mask R-CNN在Faster R-CNN的基础上添加了一个用于语义分割的Mask损失函数L_{mask}

在进行掩码预测时,FCN的分割和预测是同时进行的,即需要预测每个像素属于哪一类。而Mask R-CNN将分类和语义分割任务进行了解耦,即每个类单独的预测一个位置掩码,这种解耦提升了语义分割的效果,如下图所示:

实验复现

本次实验特征提取网络采用预训练的ResNet50,Mask R-CNN以Batch Size=8、学习率为0.08,在COCO2017数据集上训练一轮。

由于资源有限只训练了一轮,由于COCO数据集比较大,最后得到的检测和分割效果还能接受。

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值