Mask R-CNN实例分割通用框架,检测,分割和特征点定位一次搞定(多图)

 
导语:Mask R-CNN是Faster 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实例分割通用框架,检测,分割和特征点定位一次搞定(多图)的更多相关文章

  1. CVPR2020:三维实例分割与目标检测

    CVPR2020:三维实例分割与目标检测 Joint 3D Instance Segmentation and Object Detection for Autonomous Driving 论文地址 ...

  2. 手把手教你使用LabVIEW实现Mask R-CNN图像实例分割

    前言 前面给大家介绍了使用LabVIEW工具包实现图像分类,目标检测,今天我们来看一下如何使用LabVIEW实现Mask R-CNN图像实例分割. 一.什么是图像实例分割? 图像实例分割(Instan ...

  3. TensorFlow学习之运行label_image实例

    前段时间,搞了搞编译label_image中cc的实例,最后终于搞定...但想在IDE中编译还没成功,继续摸索中. 现分享一下,探究过程,欢迎叨扰,交流. 个人地址:http://home.cnblo ...

  4. tf.nn.embedding_lookup TensorFlow embedding_lookup 函数最简单实例

    tf.nn.embedding_lookup TensorFlow embedding_lookup 函数最简单实例 #!/usr/bin/env python # -*- coding: utf-8 ...

  5. tensorflow笔记:多层CNN代码分析

    tensorflow笔记系列: (一) tensorflow笔记:流程,概念和简单代码注释 (二) tensorflow笔记:多层CNN代码分析 (三) tensorflow笔记:多层LSTM代码分析 ...

  6. TensorFlow的安装与CNN测试

    0.说明 在Google开源该框架之后便使用真实K40m卡测试,由于生产环境是CentOS6.6的操作系统,但是该框架需要在Python2.7环境下执行,CentOS6.6下折腾了一天没搞定,后来换成 ...

  7. 【Python 实例】面向对象 | 按逗号分割列表

    [Python 实例]面向对象 | 按逗号分割列表 题目: 按逗号分割列表 应该得到如下结果: ["xx"],["xx"],["xx"] 解 ...

  8. pytorch中检测分割模型中图像预处理探究

    Object Detection and Classification using R-CNNs 目标检测:数据增强(Numpy+Pytorch) - 主要探究检测分割模型数据增强操作有哪些? - 检 ...

  9. 100天搞定机器学习|day40-42 Tensorflow Keras识别猫狗

    100天搞定机器学习|1-38天 100天搞定机器学习|day39 Tensorflow Keras手写数字识别 前文我们用keras的Sequential 模型实现mnist手写数字识别,准确率0. ...

随机推荐

  1. let和const命令整理

    一.let命令 基本用法 ES6 新增了let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效. for循环的计数器,就很合适使用let命令. for循环还 ...

  2. js清除缓存以及jsp缓存[部分常用]

    参考: http://bbs.csdn.net/topics/330028896  浏览器缓存机制 http://www.docin.com/p-591569918.html  浏览器缓存的一些问题的 ...

  3. Java集合框架—Map

    Map集合:该集合存储键值对.一对一对往里存.而且要保证键的唯一性. 1,添加. put(K key, V value)  putAll(Map<? extends K,? extends V& ...

  4. SpringBoot常用应用属性配置表

    #========================================= #COMMON SPRING BOOT PROPERTIES # #This sample file is pro ...

  5. 《Unity預計算即時GI》笔记:二、光照图

    说明 这篇文章是对<Unity預計算即時GI>这个系列文章的笔记. 光照图 什么是光照图 光照图在第三章中有如下的定义,读起来很是费解. 一個光照圖(Chart)是表示一個光照貼圖的區域, ...

  6. Android商城开发系列(十三)—— 首页热卖商品布局实现

    热卖商品布局效果如下图: 这个布局跟我们上节做的推荐是一样的,也是用LinearLayout和GridView去实现的,新建一个hot_item.xml,代码如下所示: <?xml versio ...

  7. Sqlserver列出所有数据库名,表名,字段名【转】

    1.获取所有数据库名: SELECT Name FROM Master..SysDatabases ORDER BY Name 注意: 表Master与SysDatabases之间有两个点 2.获取所 ...

  8. [Git] Create a new repository on the command line

    echo "# xxx" >> README.md git init git add README.md git commit -m "first commi ...

  9. jq实现剪裁图片设置为头像

    有时候我们需要设置为这样,就是将某些图片设置为剪裁成设置的尺寸:就是这样的 插件的地址: http://www.htmleaf.com/jQuery/Image-Effects/20150421171 ...

  10. 详解Unity 4.6新UI的布局

    本文所讲的是Unity 4.6中新加入的uGUI,官方称Unity UI,而不是过去的OnGUI式的旧UI(官方称Legacy GUI). 我曾经在8月份对照4.6 Beta的文档写过一篇笔记学习Un ...