【前沿】何恺明大神ICCV2017最佳论文Mask R-CNN的Keras/TensorFlow/Pytorch 代码实现

简介: 何恺明大神的论文Mask R-CNN 获得ICCV最佳论文 ,而关于这篇论文的TensorFlow\Pytorch\Keras实现相继开源出来,让我们来看下。

914f3f5a11532f44a8dc71ba84e89d0689feb05c

我们提出了一个概念上简单、灵活和通用的用于目标实例分割(object instance segmentation)的框架。我们的方法能够有效地检测图像中的目标,同时还能为每个实例生成一个高质量的分割掩码(segmentation mask)。这个方面被称为 Mask R-CNN,是在 Faster R-CNN 上的扩展——在其已有的用于边界框识别的分支上添加了一个并行的用于预测目标掩码的分支。Mask R-CNN 的训练很简单,仅比 Faster R-CNN 多一点计算开销,运行速度为 5 fps。此外,Mask R-CNN 可以很容易泛化到其它任务,比如,让我们可以在同一个框架中估计人类的姿态。我们在 COCO 难题套件的所有 3 种任务(track)上都得到了最佳结果,其中包括实例分割、边界框目标检测和人物关键点检测(person keypoint detection)。没有使用其它的技巧,Mask R-CNN 的表现超越了在每个任务上所有已有的单个模型,包括 COCO 2016 挑战赛的获胜模型。我们希望我们的简单又有效的方法能成为一个坚实的基础,能帮助简化实例层面识别的未来研究。我们将会公开相关代码。

Mask_RCNN Keras

这是一个在Python 3,Keras和TensorFlow基础上的对Mask R-CNN的实现。这个模型为图像中的每个对象实例生成边界框和分割掩码。它是在 Feature Pyramid Network (FPN) 和 ResNet101基础上实现的。

790eaad0809af9855da1f0d09925daba1b73acc2

这个项目包括包括: - 在FPN和ResNet101基础上构建的Mask R-CNN的源代码。 - MS COCO的训练代码 - 预训练的MS COCO 权重 - 使用Jupyter notebooks 来可视化检测过程的每一个步骤 - 用于多GPU训练的ParallelModel类 - MS COCO指标评估(AP) - 用于训练你自己数据集的例子

代码被整理和设计得很容易被扩展。 如果在你的研究中使用了这份代码,请考虑引用此项目。 如果您从事3D视觉的相关研究,你可能会发现我们最近发布的Matterport3D数据集同样很有用

开始

  • demo.ipynb 最简单的事从这里开始. 这里演示了怎么用一个MS COCO预训练的模型来分割你的图片。里面包含了对任意图片进行目标检测和实体分割的代码。
  • train_shapes.ipynb  演示怎么在你自己的数据集上训练Mask R-CNN。这个notebook通过一个简单的模拟数据来展示怎么用在新的数据集上。
  • (model.py, utils.py, config.py): 这几个文件是Mask RCNN 的主要实现部分
  • inspect_data.ipynb. 这个notebook对几个不同的数据处理步棸进行可视化。
  • inspect_model.ipynb  这个notebook深入代码演示物体检测和分割过程,还提供了对每一步的可视化。
  • inspect_weights.ipynb 这个notebook用来观察训练模型的权重以及检查一些特例。

一步一步的检测

为了方便理解和调试模型,我们提供了三个notebook (inspect_data.ipynb, inspect_model.ipynb, inspect_weights.ipynb),包含实验的可视化过程,还可以让你一步一步的观察每个点的输出过程。下面是一些例子。

1. 锚点排序和过滤

第一步候选区域(Region Proposal)网络的可视化以及沿着anchor box refinement 的正锚点和负锚点。

2. boundingbox 精简

这是一个最终的检测区域(虚线)以及改善后的结果(实线)例子。

3. 掩码生成

生成的掩码例子。这些掩码随后会被缩放放置在图片的合适区域。

4. 每一层激活值的可视化

通常观察不同层激活对于解决检测中遇到的一些问题很有帮助。(全零值,或者随机噪声)

5. 权重直方图

另外一个调试技巧就是观察权重的直方图。这里是inspect_weights.ipynb notebook.给出的演示效果。

6.TensorBoard 可视化

还有一个非常重要的调试和可视化工具是TensorBoard. 这个模型被配置为记录loss值的变化,并在每个epoch后保存权值。

7. 组合得到最终结果

在MS COCO上训练

我们提供预训练的权值让你更简单的上手。 你还可以用这些权重为七点训练自己的模型。训练和验证的代码在coco.py中。你可以在notebook中引入这个模块或者直接从命令行运行。

Train a new model starting from pre-trained COCO weights python3 coco.py train --dataset=/path/to/coco/ --model=coco
Train a new model starting from ImageNet weights python3 coco.py train --dataset=/path/to/coco/ --model=imagenet
Continue training a model that you had trained earlier python3 coco.py train --dataset=/path/to/coco/ --model=/path/to/weights.h5
Continue training the last model you trained. This will find the last trained weights in the model directory. python3 coco.py train
 --dataset=/path/to/coco/ --model=last

你也可以像这样运行COCO的验证代码:

训练优化方法,学习率以及其他参数都是在coco.py 中设置。

Python安装依赖包

  • Python 3.4+ • TensorFlow 1.3+ • Keras 2.0.8+ • Jupyter Notebook • Numpy, skimage, scipy, Pillow

MS COCO 要求:

为了训练MS COCO,你需要以下:

  • pycocotools (installation instructions below)
  • MS COCO Dataset
  • Download the 5K minival and the 35K validation-minus-minival subsets. More details in the original Faster R-CNN implementation. 如果你使用Docker,代码已经在 Docker container中验证通过。

安装

  • Clone this repository
  • Download pre-trained COCO weights (mask_rcnn_coco.h5) from the releases page.
  • (可选) To train or test on MS COCO install pycocotools from one of these repos. They are forks of the original pycocotools with fixes for Python3 and Windows (the official repo doesn't seem to be active anymore).
  • Linux: https://github.com/waleedka/coco
  • Windows: https://github.com/philferriere/cocoapi. You must have the Visual C++ 2015 build tools on your path (see the repo for additional details)

更多例子


  1. Keras [https://github.com/matterport/Mask_RCNN\]
  2. TensorFlow [https://github.com/CharlesShang/FastMaskRCNN]
  3. Pytorch [https://github.com/felixgwu/mask_rcnn_pytorch\]
  4. caffe [https://github.com/jasjeetIM/Mask-RCNN]
  5. MXNet [https://github.com/TuSimple/mx-maskrcnn]

原文发布时间为:2017-11-9
本文来自云栖社区合作伙伴新智元,了解相关信息可以关注“AI_era”微信公众号
相关文章
|
6月前
|
机器学习/深度学习 PyTorch TensorFlow
TensorFlow与PyTorch深度对比分析:从基础原理到实战选择的完整指南
蒋星熠Jaxonic,深度学习探索者。本文深度对比TensorFlow与PyTorch架构、性能、生态及应用场景,剖析技术选型关键,助力开发者在二进制星河中驾驭AI未来。
825 13
|
机器学习/深度学习 JavaScript PyTorch
9个主流GAN损失函数的数学原理和Pytorch代码实现:从经典模型到现代变体
生成对抗网络(GAN)的训练效果高度依赖于损失函数的选择。本文介绍了经典GAN损失函数理论,并用PyTorch实现多种变体,包括原始GAN、LS-GAN、WGAN及WGAN-GP等。通过分析其原理与优劣,如LS-GAN提升训练稳定性、WGAN-GP改善图像质量,展示了不同场景下损失函数的设计思路。代码实现覆盖生成器与判别器的核心逻辑,为实际应用提供了重要参考。未来可探索组合优化与自适应设计以提升性能。
1060 7
9个主流GAN损失函数的数学原理和Pytorch代码实现:从经典模型到现代变体
|
存储 物联网 PyTorch
基于PyTorch的大语言模型微调指南:Torchtune完整教程与代码示例
**Torchtune**是由PyTorch团队开发的一个专门用于LLM微调的库。它旨在简化LLM的微调流程,提供了一系列高级API和预置的最佳实践
790 59
基于PyTorch的大语言模型微调指南:Torchtune完整教程与代码示例
|
8月前
|
PyTorch 算法框架/工具 异构计算
PyTorch 2.0性能优化实战:4种常见代码错误严重拖慢模型
我们将深入探讨图中断(graph breaks)和多图问题对性能的负面影响,并分析PyTorch模型开发中应当避免的常见错误模式。
463 9
|
6月前
|
机器学习/深度学习 PyTorch TensorFlow
66_框架选择:PyTorch vs TensorFlow
在2025年的大语言模型(LLM)开发领域,框架选择已成为项目成功的关键决定因素。随着模型规模的不断扩大和应用场景的日益复杂,选择一个既适合研究探索又能支持高效部署的框架变得尤为重要。PyTorch和TensorFlow作为目前市场上最主流的两大深度学习框架,各自拥有独特的优势和生态系统,也因此成为开发者面临的经典选择难题。
1214 0
|
10月前
|
机器学习/深度学习 PyTorch 算法框架/工具
提升模型泛化能力:PyTorch的L1、L2、ElasticNet正则化技术深度解析与代码实现
本文将深入探讨L1、L2和ElasticNet正则化技术,重点关注其在PyTorch框架中的具体实现。关于这些技术的理论基础,建议读者参考相关理论文献以获得更深入的理解。
291 4
提升模型泛化能力:PyTorch的L1、L2、ElasticNet正则化技术深度解析与代码实现
|
并行计算 PyTorch TensorFlow
Ubuntu安装笔记(一):安装显卡驱动、cuda/cudnn、Anaconda、Pytorch、Tensorflow、Opencv、Visdom、FFMPEG、卸载一些不必要的预装软件
这篇文章是关于如何在Ubuntu操作系统上安装显卡驱动、CUDA、CUDNN、Anaconda、PyTorch、TensorFlow、OpenCV、FFMPEG以及卸载不必要的预装软件的详细指南。
12372 4
|
12月前
|
机器学习/深度学习 数据可视化 机器人
比扩散策略更高效的生成模型:流匹配的理论基础与Pytorch代码实现
扩散模型和流匹配是生成高分辨率数据(如图像和机器人轨迹)的先进技术。扩散模型通过逐步去噪生成数据,其代表应用Stable Diffusion已扩展至机器人学领域形成“扩散策略”。流匹配作为更通用的方法,通过学习时间依赖的速度场将噪声转化为目标分布,适用于图像生成和机器人轨迹生成,且通常以较少资源实现更快生成。 本文深入解析流匹配在图像生成中的应用,核心思想是将图像视为随机变量的实现,并通过速度场将源分布转换为目标分布。文中提供了一维模型训练实例,展示了如何用神经网络学习速度场,以及使用最大均值差异(MMD)改进训练效果。与扩散模型相比,流匹配结构简单,资源需求低,适合多模态分布生成。
1107 13
比扩散策略更高效的生成模型:流匹配的理论基础与Pytorch代码实现
|
12月前
|
机器学习/深度学习 编解码 PyTorch
从零实现基于扩散模型的文本到视频生成系统:技术详解与Pytorch代码实现
本文介绍了一种基于扩散模型的文本到视频生成系统,详细展示了模型架构、训练流程及生成效果。通过3D U-Net结构和多头注意力机制,模型能够根据文本提示生成高质量视频。
518 1
从零实现基于扩散模型的文本到视频生成系统:技术详解与Pytorch代码实现

热门文章

最新文章

推荐镜像

更多