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实例分割通用框架,检测,分割和特征点定位一次搞定(多图)的更多相关文章
- CVPR2020:三维实例分割与目标检测
CVPR2020:三维实例分割与目标检测 Joint 3D Instance Segmentation and Object Detection for Autonomous Driving 论文地址 ...
- 手把手教你使用LabVIEW实现Mask R-CNN图像实例分割
前言 前面给大家介绍了使用LabVIEW工具包实现图像分类,目标检测,今天我们来看一下如何使用LabVIEW实现Mask R-CNN图像实例分割. 一.什么是图像实例分割? 图像实例分割(Instan ...
- TensorFlow学习之运行label_image实例
前段时间,搞了搞编译label_image中cc的实例,最后终于搞定...但想在IDE中编译还没成功,继续摸索中. 现分享一下,探究过程,欢迎叨扰,交流. 个人地址:http://home.cnblo ...
- tf.nn.embedding_lookup TensorFlow embedding_lookup 函数最简单实例
tf.nn.embedding_lookup TensorFlow embedding_lookup 函数最简单实例 #!/usr/bin/env python # -*- coding: utf-8 ...
- tensorflow笔记:多层CNN代码分析
tensorflow笔记系列: (一) tensorflow笔记:流程,概念和简单代码注释 (二) tensorflow笔记:多层CNN代码分析 (三) tensorflow笔记:多层LSTM代码分析 ...
- TensorFlow的安装与CNN测试
0.说明 在Google开源该框架之后便使用真实K40m卡测试,由于生产环境是CentOS6.6的操作系统,但是该框架需要在Python2.7环境下执行,CentOS6.6下折腾了一天没搞定,后来换成 ...
- 【Python 实例】面向对象 | 按逗号分割列表
[Python 实例]面向对象 | 按逗号分割列表 题目: 按逗号分割列表 应该得到如下结果: ["xx"],["xx"],["xx"] 解 ...
- pytorch中检测分割模型中图像预处理探究
Object Detection and Classification using R-CNNs 目标检测:数据增强(Numpy+Pytorch) - 主要探究检测分割模型数据增强操作有哪些? - 检 ...
- 100天搞定机器学习|day40-42 Tensorflow Keras识别猫狗
100天搞定机器学习|1-38天 100天搞定机器学习|day39 Tensorflow Keras手写数字识别 前文我们用keras的Sequential 模型实现mnist手写数字识别,准确率0. ...
随机推荐
- aapt.exe finished with non-zero exit value 1
在一个APP 中导入 严振杰的 ALBUM,出现错误 在网上找了各种,最后在 stackoverflow上找到这样的说法: -Go to File->project structure-> ...
- mui的上拉下载和下拉刷新
head部分(引入mui) <link href="./resources/css/mui.min.css" rel="stylesheet" /> ...
- RxJava 1升级到RxJava 2过程中踩过的一些“坑”
RxJava2介绍 RxJava2 发布已经有一段时间了,是对 RxJava 的一次重大的升级,由于我的一个库cv4j使用了 RxJava2 来尝鲜,但是 RxJava2 跟 RxJava1 是不能同 ...
- weblogic 忘记控制台账号密码 进行重新设置
第一步:首先要关闭weblogic服务. 第二步:对一些重要的文件进行备份: 1. 为了保证操作安全,备份%DOMAIN_HOME%/security/DefaultAuthenticatorInit ...
- javascript字符串格式化string.format
String.prototype.format = function () { var values = arguments; return this.replace(/\{(\d+)\}/g, fu ...
- JFinal常量配置学习笔记
在继承 JFinalConfig 类时,需要 实现 /** * Config constant */ public abstract void configConstant(Constants me) ...
- koa2实现文件上传服务
使用方法 方法一: 使用中间介 koa-body 方法二: 自己写个借口去接收数据流并保存 方法三: 使用 koa-body 接受文件,自己写个接口做文件保存或处理等操作 这里简单记录方法三 app. ...
- Linux让Apache支持中文URL图片/文件名
需要用到iconv_hook和mod_encoding Apache(32位): 安装环境:CentOS 5.6 + Apache 2.2.15 (Apache2.4同样适用) 安装结果:安装后支持“ ...
- HDU 3697 Selecting courses 选课(贪心)
题意: 一个学生要选课,给出一系列课程的可选时间(按分钟计),在同一时刻只能选一门课程(精确的),每隔5分钟才能选一次课,也就是说,从你第一次开始选课起,每过5分钟,要么选课,要么不选,不能隔6分钟再 ...
- 从.net到java,从基础架构到解决方案。
这一年,职业生涯中的最大变化,是从.net到java的直接跨越,是从平台架构到解决方案的不断完善. 砥砺前行 初出茅庐,天下无敌.再学三年,寸步难行.很多时候不是别人太强,真的是自己太弱,却不自知. ...