论文:Mask R-CNN 阅读笔记

Mask R-CNN

目录

Mask R-CNN

1 概述

2 模型设计

3 模型损失函数设计

4 模型的训练细节

5 模型实验

6 人体关键点检测

7 模型的性能指标


1 概述

基于Fast/Faster R-CNN、FCN的基础网络,迅速推动了目标检测和语义分割的发展。实例分割是具有挑战性的,因为它需要正确地检测到所有物体,并且对每一个实例进行精确的分割。我们的方法叫做Mask R-CNN,它是由Faster R-CNN拓展而来,增加了一个分支来预测ROI(感兴趣区域)上的分割Masks。这个分支是基于FCN的网络,和现有的分类和边框回归网络是并行的。其结构如图1-1所示。

                                                            图1-1 实例分割Mask R-CNN框架示意图

我们提出了一个RoIAlign无量化误差的层,来精确的保留提取的空间位置信息。这个看似细微的改变,把Mask的精确度提升了10%-50%。我们的网络在GPU上处理每帧图像需要200ms,利用COCO数据集在8-GPUs上训练需要花费两天的时间。最后,我们在COCO的关键点数据集上进行了人体姿态判别的实验。Mask R-CNN可以看作为一个灵活的框架,并且应用在其他复杂的任务上面。

2 模型设计

                                                                       图2-1 Faster R-CNN结构示意图

如图2-1所示,Faster R-CNN由两个阶段构成。第一个阶段是RPN(Region Proposal Network),是为了产生候选的目标边框。第二个关键的阶段,使用RoIPool对每一个候选边框进行分类和回归。

Mask R-CNN继承了Faster R-CNN的结构,第一个阶段单独使用。在第二个阶段中,在预测类别和边框偏差的同时,对每一个RoI输出二值化的Mask。每一个RoI输出的二值化Mask维度为,共K个类别。设置其分辨率为m*m是为了保证目标的空间维度。先前的方法都是通过全连接层来进行mask预测,我们的全卷积代表需要更少的参数,并且更加的准确。

                                                                             图2-2 RoIAlign示意图

我们用不同的架构部署了Mask R-CNN:

  1. 使用backbone网络对整幅图像的特征进行提取。我们评估了深度为50或者101层的ResNet和ResNeXt网络,Faster R-CNN最初使用ResNet在最后的第4层上面提取特征,所以将之命名为ResNet-50-C4。我们最近采用了一种更加有效的backbone网络,叫做FPN(Feature Pyramid Network),其使用了一种横向的结构来从固定尺寸的输入图像上面提取金字塔特征。使用FPN的Faster R-CNN根据特征金字塔的大小,以不同尺度来提取RoI特征。这种方法显著的提高了速度和精度。
  2. 使用head网络进行边框的分类和回归。细节设计如图2-3所示,这两种结构分别表示了ResNet C4和FPN的head网络设计。

                                                                       图2-3 head网络结构示意图

如图2-4所示,为采用了RoIAlign、backbone和head网络的Mask R-CNN整体结构示意图。

                                                                    图2-4 Mask R-CNN整体网络结构示意图

3 模型损失函数设计

4 模型的训练细节

和Fast R-CNN一样,如果生成的RoI和真实边框的IoU是大于0.5的,那么这个RoI是正例样本。只定义在有效的RoI上面,Mask的目标是把RoI和真实边框联结起来。

我们把图像的尺寸修改为边长为800个像素,每一个mini-batch使用2幅图片,一幅图片有N个采样RoIs,正反例的比例为1:3。对于C4 backbone和FPN来说,N的值分别为64和512。参数设置如下:num of GPU=8,iter=160k,learning rate=0.02,weight dacay = 0.0001,momentum=0.9。RPN的anchors有5种尺度和3种横纵比,为了研究方便,RPN是单独训练的,不合Mask R-CNN共享参数。

在测试阶段,对于C4 backbone和FPN来说,提名区域的个数分别为300和1000。在这之后,进行边框预测NMS(非极大值抑制)。Mask分支只设置在分值最高的100个检测边框之后。尽管这和训练阶段的并行结构有所不同,但是却由于其使用了更精确和更少的RoIs,显著提高了精确度和推理的速度。Mask分支对于每一个RoI可以预测K个RoIs,但是我们只使用第k个mask,其中k是由分类分支所预测出来的类别。最后改变m*m的浮点数Mask输出到RoI的大小,并通过设置阈值为0.5来进行二值化输出。

5 模型实验

我们在COCO数据集进行训练,并使用AP(averaged over IoU thresholds)作为评估指标。在图5-1中可以看到Mask R-CNN和其他最先进方法的AP指标对比结果。

                                                                    图5-1 Mask R-CNN COCO-test AP指标

在图5-2中可以看到Mask R-CNN使用不同配置的AP指标对比结果。分别设置了Backbone Architecture、Multinomial vs Idependent Masks、Class-Specific vs Class-Agnostic Masks、RoIAlign with ResNet-50-c4 vs ResNet-50-c5和Mask Branch。

                                                                    图5-2 不同结构配置的Mask R-CNN AP指标结果对比

我们在COCO数据集上面和其他的最先进目标检测方法进行了对比,图5-3为其对比结果。使用ResNeXt-101-FPN,Mask R-CNN进一步提升了效果。为了进一步对比,我们提出了Faster R-CNN RoIAlign网络,其去掉了Mask R-CNN的Mask分支。

                                                                    图5-3 Mask R-CNN 检测效果指标结果对比

Mask R-CNN最终可以在Nvidia Tesla M40 GPU上达到每张图片195ms的速度,我们的设计可以实现在速度和精确度之间的折中。训练速度也是非常快的,在8片GPU上,我们使用ResNet-50-FPN在COCO trainset135k进行训练花费了32小时,使用ResNet-101-FPN花费了44小时。

6 人体关键点检测

我们的模型可以很容易地应用在人体关键点检测上面,我们把一个关键点定义为一个Mask,并用Mask R-CNN来预测K个Mask。对于一个实例的K个关键点,训练目标是分辨率为m*m二值化掩膜输出中的一个点作为前景。在训练

过程中,对于每一个可视的真实关键点,我们最小化交叉熵损失以m*m作为softmax的输出。我们使用了ResNet-FPN的变体,并且关键点检测模型的head和图2-3左边的结构很相似,是由3*3*512卷积层的叠加,后面是双线性上变换的反卷积,输出分辨率为56*56。我们发现高分辨率的输出,需要关键点检测的高准确度。模型在COCO trainval135k训练集上面进行训练,我们减小了训练集的大小,来减小过拟合的风险,并从[640,800]中进行随机采样,来作为训练图像的实际大小。以学习率为0.2训练90个迭代周期,以0.5作为边框NMS的阈值。

                                                                    图6-1 Mask R-CNN关键点检测指标

我们以AP作为人体关键点检测的评估指标,并用ResNet-50-FPN作为backbone。图6-1显示出来了Mask R-CNN进行关键点检测时的性能指标。当添加Mask后指标进一步达到了63.1。

图6-2 多任务Mask R-CNN的表现

图6-2显示出来了Mask R-CNN进行多任务关键点检测时的性能指标,可以发现通过添加keypoint和mask分支后可以提升到64.7,但是稍微影响了keypoint/mask各自的AP。

                                                                    图6-3 RoIAlign和RoIPool对Mask R-CNN关键点检测的表现

图6-3显示出来设置RoIAlign和RoIPoolMask,对 R-CNN进行多任务关键点检测时的性能指标的影响。RoIAlign依旧对其有很大的改善。

7 模型的性能指标

7.1 Cityscapes

                                                                  图7-1 Mask R-CNN在Cityscapes数据集上的表现

7.2 COCO

图7-2 Mask R-CNN在COCO数据集上的表现

7.3 Keypoint

                                                                    图7-3 Mask R-CNN在Keypoint上的表现

猜你喜欢

转载自blog.csdn.net/weixin_42717395/article/details/83152618