Tensorflow实现Mask R-CNN实例分割通用框架,检测,分割和特征点定位一次搞定(多图)
Posted 曹明
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tensorflow实现Mask R-CNN实例分割通用框架,检测,分割和特征点定位一次搞定(多图)相关的知识,希望对你有一定的参考价值。
Mask R-CNN实例分割通用框架,检测,分割和特征点定位一次搞定(多图)
对Facebook而言,想要提高用户体验,就得在图像识别上做足功夫。
雷锋网此前报道《Facebook AML实验室负责人:将AI技术落地的N种方法》(上 ,下篇)就提到,做好图像识别,不仅能让Facebook的用户更精准搜索到想要的图片,为盲人读出图片中包含的信息,还能帮助用户在平台上销售物品、做社交推荐等等。
近日, FAIR部门的研究人员在这一领域又有了新的突破——他们提出一种目标实例分割(object instance segmentation)框架Mask R-CNN,该框架较传统方法操作更简单、更灵活。研究人员把实验成果《Mask R-CNN》发布在了arXiv上,并表示之后会开源相关代码。
以下为AI科技评论据论文内容进行的部分编译。
论文摘要
物体识别,图像语义分割技术能在短时间内快速发展,Fast/Faster RCNN和全卷积网络(FCN)框架等技术功不可没。这些方法概念直观,训练和推断速度快,并且具有良好的灵活性和鲁棒性。
一般来说,目标分割的难点在于,它需要正确识别出图像中所有物体的方向,并且要将不同物体精准区分开。因此,这里面涉及到两个任务:
用物体识别技术识别物体,并用边界框表示出物体边界;
用语义分割给像素分类,但不区分不同的对象实例。
大家可能认为,要同时完成这两个任务,方法一定会相当复杂;但Mask R-CNN却可以更轻松的解决这两个问题。
Mask R-CNN是Faster R-CNN的扩展形式,能够有效地检测图像中的目标,同时还能为每个实例生成一个高质量的分割掩码(segmentation mask)。
它的构建方法是:在每个兴趣点(Region of Interest,RoI)上加一个用于预测分割掩码的分层,称为掩码层(mask branch),使该层并行于已有边界层和分类层(如下图所示)。
Mask R-CNN 框架
于是,掩码层就成为了一个小型FCN。我们将它应用于单个RoI中,以在pixel-to-pixel行为中预测分割掩码。
Mask R-CNN 的优点:
由于目前已有许多设计良好,可用于Faster R-CNN的构架,因此,作为Faster R-CNN的扩展,Mask R-CNN在应用时也没有阻碍;
考虑到掩码层只给整个系统增加一小部分计算量,所以该方法运行起来非常高效;
Mask R-CNN 还可以很容易泛化到其它任务上。比如,可以在同一个框架中估计人物的动作。
在COCO测试中可以看到,Mask R-CNN 在实例分割、边界框目标检测和人物关键点检测这三个难点上都获得了较好的实验效果,并且比每个现有的独立模型,包括 COCO 2016 挑战赛的获胜模型,表现都要好。
所以,我们希望该方法能为简化势力层面的识别打下一个坚实的基础。
实验结果图&表
研究人员进行了一系列实验来分析Mask R-CNN的运行效果。例如,把Mask R-CNN放在 COCO 测试集上进行测试、对比多项掩码和单项掩码(Multinomial vs. Independent Masks)、对比Class-Specific 和Class-Agnostic Masks、对比RoIAlign和RoIWarp等。以下是论文中出现的部分实验图和表格:
-
图2:Mask R-CNN在 COCO 测试集上的测试结果。结果显示,Mask R-CNN能用 ResNet-101,在 5 fps 的度下实现 35.7 的 mask AP。图上不同的颜色表示不同的掩码,另外也给出的边界框、类别和置信度。
-
图 3:顶端架构:我们延展了两个已有的 Faster R-CNN 头 [14,21]。左图和右图分别展示了 ResNet C4 和 FPN 的主干的顶端部分,分别来自 [14] 和 [21],而且可以看到上面还增加了一个 mask 分支。图中的数字表示空间分辨率和信道,箭头表示卷积、去卷积或全连接层。具体可以根据情况推断(卷积会保持空间维度而去卷积会增加空间维度)。除了输出卷积是 1×1 之外,其它所有卷积都是 3×3,去卷积是 2×2,步幅为 2。我们在隐藏层中使用 ReLU [24]。左图中 res5 表示 ResNet 的第 5 阶段,但为了简单起见,我们做了修改,使第 1 个卷积层运行在一个 7×7 RoI 上,步幅为 1(而不是如 [14] 中的 14×14,步幅为 2)。右图中的 ×4 表示 4 个连续卷积的堆叠。
-
表 1:在 COCO test-dev 上的实例分割 mask AP。MNC [7] 和 FCIS [20] 分别是 COCO 2015 和 2016 分割挑战赛的获胜模型。仅有Mask R-CNN,其表现就超过了更复杂的 FCIS+++——其包括多种规模的训练/测试、水平翻转测试和 OHEM [29]。所有的项都是单个模型的结果。
-
表2:Mask R-CNN 的分解表。在 trainval35k 上训练,在 minival 上测试。主要是 mask AP 的成绩,除非有特别指明。
上图显示,更深层的网络(图2a:50 vs 101)和更先进的设计(包括FPN和ResNeXt)都对Mask R-CNN有帮助作用。不过,也不是所有框架都能自动从中受益。
-
表3:在 test-dev 上目标检测单个模型的结果(边界框 AP)vs 当前最佳。使用 ResNet-101-FPN 的 Mask R-CNN 的表现超越了所有之前最佳模型的基本变体(在这些实验中忽略了 mask output)。Mask R-CNN 在 [21] 的基础上获得的增益得益于对 RoIAlign (+1.1 APbb)、多任务训练 (+0.9 APbb) 和 ResNeXt-101 (+1.6 APbb) 的使用。
-
图6:用Mask R-CNN (ResNet-50-FPN)在COCO测试上进行关键点测试。该模型在 5 fps 条件下实现了 63.1 的关键点 AP。
-
表 4:在 COCO test-dev 上的关键点检测 AP。ResNet-50-FPN 是以 5 fps 运行的单个模型。CMUPose+++[4] 是 2016 年的比赛获胜者,使用了多尺度测试、带有 CPM 的后处理 [33] 和带有一个目标检测器的滤波,累加约 5 分(在个人通信中阐明的)。G-RMI 是在 COCP plus MPII [1](2.5 万张图像)上训练的,使用了两个模型(Inception-ResNet-v2 + ResNet- 101)。由于使用了更多数据,所以不是与 Mask R-CNN 的直接对比。
源代码见:https://github.com/Mark110/Master-R-CNN
以上是关于Tensorflow实现Mask R-CNN实例分割通用框架,检测,分割和特征点定位一次搞定(多图)的主要内容,如果未能解决你的问题,请参考以下文章
何恺明大神ICCV2017最佳论文Mask R-CNN的Keras/TensorFlow/Pytorch 代码实现
前沿 何恺明大神ICCV2017最佳论文Mask R-CNN的Keras/TensorFlow/Pytorch 代码实现
有人开源了Mask R-CNN对象检测和分割的Keras和TensorFlow代码
[OpenCV实战]13 OpenCV中使用Mask R-CNN进行对象检测和实例分割