MMDetection学习系列(5)——Mask R-CNN深度探索与实战指南

360影视 2025-01-22 15:29 2

摘要:Mask R-CNN(Region-Based Convolutional Neural Networks)是一种扩展自Faster R-CNN的目标检测与实例分割模型。Mask R-CNN通过在传统的目标检测任务中引入像素级的分割掩码,使得实例分割成为可能。

Mask R-CNN(Region-Based Convolutional Neural Networks)是一种扩展自Faster R-CNN的目标检测与实例分割模型。Mask R-CNN通过在传统的目标检测任务中引入像素级的分割掩码,使得实例分割成为可能。

Mask R-CNN是在每个任务上的表现都优于所有现有的单一模型(当时),包括COCO 2016挑战赛的获胜者。在COCO 2017挑战赛中,获胜者的网络也是基于Mask R-CNN。

参考论文:https://arxiv.org/pdf/1703.06870

实例分割

实例分割(Instance Segmentation)是计算机视觉中的一项任务,它不仅需要识别图像中的物体类别,还要为每个物体实例生成像素级的分割掩码。与传统的目标检测任务不同,目标检测只需要框定物体的位置并分类,而实例分割要求对图像中每个物体的轮廓进行精准的分割,即每个物体的像素都要被标识出来,甚至可以区分出同一类物体的不同实例。通过对每个物体的像素级分割,实例分割能显著提高物体识别的精度,并提供更丰富的视觉理解。

Mask R-CNN的推出极大地提升了实例分割的性能,它使得每个物体实例不仅能够被识别和定位,还能够精确地进行像素级分割,这比传统的语义分割方法(只关心类别标签)更加细粒度。

模型算法下载

Coovally AI Hub模型算法」,即可获取!

R-CNN系列

为了更好地理解Mask R-CNN网络架构,最好从R-CNN来理解,Mask R-CNN 的架构与Faster R-CNN非常接近,可以通过以下的简单介绍以及架构图详细了解一下它们之间的关联性。

R-CNN

在R-CNN中,在网络底层采用非深度学习的选择性搜索(SS)进行特征提取,生成2k个区域提议。

每个区域提议都经过扭曲并最终经过卷积神经网络 (CNN) 和支持向量机 (SVM),输出分类和边界框。

Fast R-CNN

在Fast R-CNN中,SS仍然用于生成2k个区域提议。

但与R-CNN不同的是,输入图像经过CNN进行特征提取,生成特征图,然后根据各个区域提案,将这些特征图共享用于RoI池化。

对于每个区域提案,都会对提案进行RoI池化,最后通过网络,即全连接 (FC) 层。并且不再使用SVM。

最后,在全连接(FC)层的输出处输出分类和边界框。

但区域提议部分仍然使用非基于深度学习的SS方法。

Faster R-CNN

在Faster R-CNN中,输入图像经过CNN。这些特征图将用于区域提议网络(RPN)生成区域提议,并用于在后面生成 RoI 池化的特征图。

这种情况下就不再使用SS了,而是使用单个CNN,整个网络是一个端到端的深度学习网络,这对于梯度传播对于提高物体检测的准确率至关重要。

和Fast R-CNN类似,对每一个regionproposal进行RoI pooling,最后经过网络,也就是全连接层,最后输出分类和边界框。

Mask R-CNN

Mask R-CNN的架构与Faster R-CNN非常接近。主要区别在于,在网络的末端,还有另一个头部,即上图中的mask分支,生成用于实例分割的 mask。

Mask R-CNN

Mask R-CNN的基本思想是,在Faster R-CNN的基础上添加了一个新的分支,用于预测每个RoI(Region of Interest)区域内的物体分割掩码。

头部结构细节

尝试了 3 个主干网络:ResNet、ResNeXt和FPN。

左图:当不使用FPN的情况下使用ResNet/ResNeXt时,首先进行进一步的卷积,然后分成两个头。一个头用于分类和边界框,一个头用于掩码。

右图:当ResNet/ResNeXt与FPN一起使用时,网络直接分为两个头。一个头用于分类和边界框,一个头用于掩码。

两阶段架构

采用两阶段架构,与Faster R-CNN类似。

第一阶段:区域提案网络(RPN),生成区域提案或候选区域。每个区域提案都会经过第二阶段。

第二阶段:对于每个区域提议,将第一阶段提出的特征图根据区域进行RoI池化,然后经过剩余的网络,输出类,边界框,以及二值掩码。

损失函数

因此,损失函数是多任务损失:

Lcls:分类损失,与Faster R-CNN相同。

Lbox:边界框损失,与Faster R-CNN相同。

Lmask:二值掩码损失。该掩码分支为每个RoI输出Km²,即K个分辨率为m ×m的二值掩码,代表K个类别。

掩码

与传统的目标检测不同,Mask R-CNN在最后的全连接层之后增加了一个额外的卷积层,用来为每个检测到的物体生成一个像素级的掩码。应用了每像素 S形函数。平均二元交叉熵损失用于Lmask。Lmask仅考虑RoI 中第k个掩码,其中掩码具有真实类别k。其他类别不会导致损失。因此,它与全卷积网络(FCN)不同。在FCN中,使用逐像素softmax和多项式交叉熵损失。与此相反,此处将mask和类预测分离为Lcls和Lmask。

为了提取mask的空间结构,使用FCN预测每个RoI的m×m mask 。不使用FC层的优点是需要的参数更少。

RoIAlign

Mask R-CNN的目标是进行实例分割,要求对每个物体的轮廓进行精细的分割,这需要比普通目标检测更高的精度。RoIPool的量化误差在处理细节时会导致性能下降,特别是在小物体和复杂背景中。RoIAlign通过精确的像素级对齐,大大提高了分割精度,从而使得Mask R-CNN在实例分割任务中表现更加优越。

Faster R-CNN中的RoIPool

首先,我们得到如图所示的输入特征图。

根据区域提议,使用7×5区域作为RoIPool的输入,输出2×2特征图。

每个黑色矩形都被圆整为整数长度,以方便之后的池化。

对于输出特征图的每一个值,都对应着每个黑色矩形的最大值,这被称为最大池化。

Mask R-CNN 中的RoIAlign

不是将黑色矩形四舍五入为整数长度,而是使用大小相同的黑色矩形。

根据特征图值重叠的区域,采用双线性插值得到中间池化特征图。

然后对该中间池化特征图执行最大池化。

RoIAlign是对RoIPool的改进,使得模型能够在实例分割任务中获得更好的精度,避免了传统RoIPool带来的量化误差,能够更精确地保留物体的细节信息。

实例分割实验

消融研究

更好的主干网络带来预期的收益:更深层的网络表现更好,FPN优于C4特征,ResNeXt在ResNet上有所改进。

通过每类二进制掩码(S型)进行解耦比多项式掩码(Softmax)具有很大的增益。

RoIWarp最初是在R-CNN中使用,RoIPool最初已经在Fast R-CNN中使用。

RoIAlign层将AP提高了3个百分点,将AP75提高了5个百分点。使用正确的对齐是导致RoI层之间差距较大的唯一因素。

使用步幅32的ResNet-50-C5。

与步幅为16的特征相比,错位更为严重,导致巨大的准确性差距。

与MLP(多层感知器,使用FC层)相比,FCN能够改善结果,因为它们利用了明确编码的空间布局。

定性结果

SOTA 方法比较

MNC和FCIS分别是COCO 2015和2016分割挑战赛的获胜者。

Mask R-CNN的表现优于更复杂的FCIS+++,后者包括多尺度训练/测试、水平翻转测试和OHEM。所有条目均为单模型结果。

Coovally AI模型训练与应用平台

Coovally AI模型训练与应用平台,它整合了整合30+国内外开源社区1000+模型算法

平台已部署Mask R-CNN系列模型算法

在Coovally平台上,无需配置环境、修改配置文件等繁琐操作,一键另存为我的模型,上传数据集,即可使用Mask R-CNN、Faster RCNN等热门模型进行训练与结果预测,全程高速零代码!而且模型还可分享与下载,满足你的实验研究与产业应用。

总结

Mask R-CNN是一种强大的深度学习模型,能够同时进行目标检测和实例分割。它在多个实际应用中展现了出色的性能,特别是在需要高精度图像分割的任务中。然而,模型的计算复杂度和对数据标注的高要求仍然是限制其广泛应用的因素。随着技术的进步,Mask R-CNN有望在更广泛的场景中得到应用,并推动计算机视觉领域的进一步发展。

来源:小码科普君

相关推荐