开源地址:
https://github.com/matterport/Mask_RCNN
个人主页:
MaskRCNN 是何恺明基于以往的 faster rcnn 架构提出的新的卷积网络,一举完成了 object instance segmentation。该方法在有效地目标的同时完成了高质量的语义分割。文章的主要思路就是把原有的 Faster-RCNN 进行扩展,添加一个分支使用现有的检测对目标进行并行预测。
此开源代码:这是在 python 3,Keras 和 TensorFlow 上实现 Mask R-CNN 。该模型为图像中对象的每个实例生成边界框和分割蒙版。它基于特征金字塔网络(FPN)和ResNet101骨干网。
存储库包括:
代码记录在案,设计易于扩展。如果您在研究中使用它,请考虑引用此存储库(下面的bibtex)。如果您从事3D视觉,您可能会发现我们最近发布的Matterport3D数据集(https://mp.weixin.qq.com/s/Dt0jbw5Mg-NA_c1A4D_jhg)也很有用。该数据集是由我们的客户捕获的3D重建空间创建的,这些客户同意将其公开供学术使用。您可以在此链接(https://matterport.com/gallery/)查看更多示例。
首先在项目源码地址下载源码到本机中:
https://github.com/matterport/Mask_RCNN
1.1 要求
Python 3.4,tensorflow 1.3,Keras 2.0.8和其他常见软件包requirements.txt。
亲测Python版本为3.6也可以,建议3.4及以上。
Python安装建议使用 mini conda 安装和管理环境
TensorFlow,Keras 也建议直接使用 conda install tensorflow keras
1.2 MS COCO要求:
要在MS COCO上进行训练或测试,还需要:
安装链接如下:
MS COCO数据集:
迷你:(https://dl.dropboxusercontent.com/s/o43o90bna78omob/instances_minival2014.json.zip?dl=0)
验证 - 减去迷你的:(https://dl.dropboxusercontent.com/s/s3tw5zcg7395368/instances_valminusminival2014.json.zip?dl=0)
快速R-CNN:
(https://github.com/rbgirshick/py-faster-rcnn/blob/master/data/README.md)
如果您使用Docker,则已验证代码可以在 此Docker容器上运行(https://hub.docker.com/r/waleedka/modern-deep-learning/)。
为什么需要安装 pycocotools,经过看源码发现,训练 coco 数据集时用到了pycocotools 这个模块,如果不安装会报错无法正常运行。
1.3 安装
1. 克隆此存储库:https://github.com/matterport/Mask_RCNN
2. 安装依赖项(CD 进入项目根目录,pip3 不行的话可以尝试用 pip)
pip3 install -r requirements.txt\n
在linux安装时,使用此方法一切正常,就是速度会有些慢,因为安装内容较多。
使用Windows安装时可能会遇到shapely,无法安装的情况,解决方法如下:
conda install shapely -y\n
3. 从存储库根目录运行安装程序
python3 不行的话就用 python,还要注意一点你使用哪个python环境安装,后面运行的时候也要用此python环境运行MaskRCNN。
4. 从发布页面下载预先训练的COCO权重(mask_rcnn_coco.h5)。
这里提供一个下载地址,可以直接下载使用:
https://github.com/matterport/Mask_RCNN/releases/download/v2.0/mask_rcnn_coco.h5
5.(可选)pycocotools从这些回购中的一个训练或测试MS COCO安装。(这里就是1.2 MS COCO要求,需要安装pycocotools)
经过本人安装测试,可以使用较为简单的方式来安装:
Linux中直接使用:
pip3 install pycocotools\n
windows 中需要先安装 Visual C++ 2015,下载地址:https://go.microsoft.com/fwlink/?LinkId=691126
然后执行:注意要和安装MaskRCNN同一Python环境
上述都执行完成的话,keras版本的MaskRCNN就安装完成了。下面我们动手试用一下。
用安装Mask RCNN的python环境打开 jupyter notebook,命令行,或shell运行:
运行完成后,会自动打开一个网页,如果不能就手动复制一下地址打开。
进入下载的MaskRCNN的根目录,打开 samples/demo.ipynb 文件。
代码如下:
In [1]:导入相关文件,设置参数,下载网络模型等:
由于下载速度慢,建议直接下载
https://github.com/matterport/Mask_RCNN/releases/download/v2.0/mask_rcnn_coco.h5
到根目录在运行下面代码
In [2]:进行一些参数设置
我们将使用一个经过 MS-COCO 数据集训练的模型。这个模型的配置在coco.py 中的 cococonfig 类中。
为了进行推断,请稍微修改配置以适合任务。为此,对 cococonfig 类进行子类化,并重写需要更改的属性。
In [3]:建立网络模型,载入参数
类名
模型对对象进行分类并返回类 ID,类 ID 是标识每个类的整数值。有些数据集将整数值赋给它们的类,而有些则没有。例如,在 MS-COCO 数据集中,“Person”类为 1,“Teddy Bear”类为 88。ID 通常是连续的,但并不总是连续的。例如,COCO 数据集具有与 ID70 和 72 相关联的类,但没有与 71 相关联的类。
为了提高一致性与同时支持对来自多个源的数据的训练,我们的 DataSet 类为每个类分配了它自己的顺序整数 ID。例如,如果使用我们的数据集类加载 COCO 数据集,“Person”类将获得类 ID=1(就像 COCO 一样),“Teddy Bear”获得类 78(不同于 COCO)。在将类 ID 映射到类名时,请记住这一点。
要获取类名列表,你需要加载数据集,然后使用类名称属性,如下所示
我们不希望你为了运行这个演示而下载 COCO 数据集,所以我们在下面列出了类名列表。列表中类名的索引表示其 ID(第一个类是 0,第二个类是 1,第三个类是 2,…等等)。
In [4]:配置类别名
In [5]:读入照片进行识别
原文中采用从 images 文件夹随机读取的方式。我这里注释掉了前两句,采用读取自己准备的照片,这里是我的母校照片。
大家只需要将 image_file 改为自己准备照片地址即可。
我训练了samples/shapes/train_shapes.ipynb例子,并成功调用了多GPU,如果大家遇到问题可以看我下面的解决方法。
3.1 MS COCO 培训
我们为 MS COCO 提供预先训练的砝码,使其更容易入手。你可以使用这些权重作为起点来训练您自己在网络上的变化。培训和评估代码在samples/coco/coco.py。你可以在 Jupyter 笔记本中导入此模块(请参阅提供的笔记本中的示例),或者你可以直接从命令行运行它:
你还可以使用以下命令运行 COCO 评估代码:
应设置培训计划,学习率和其他参数 samples/coco/coco.py。
3.2 对您自己的数据集进行培训
首先阅读关于气球颜色飞溅样本的博客文章。
(https://engineering.matterport.com/splash-of-color-instance-segmentation-with-mask-r-cnn-and-tensorflow-7c761e238b46)
它涵盖了从注释图像到培训再到在示例应用程序中使用结果的过程。
总之,要在您自己的数据集上训练模型,您需要扩展两个类:
Config 该类包含默认配置。对其进行子类化并修改您需要更改的属性。
Dataset 此类提供了一种使用任何数据集的一致方法。它允许您使用新数据集进行培训,而无需更改模型的代码。它还支持同时加载多个数据集,如果要检测的对象在一个数据集中并非全部可用,则此选项非常有用。
见例子samples/shapes/train_shapes.ipynb,samples/coco/coco.py,samples/balloon/balloon.py,和samples/nucleus/nucleus.py。
本人测试了 samples/shapes/train_shapes.ipynb,单 GPU 训练基本都没有问题,使用多 GPU 运行时可能会出现这个问题:
Keras object has no attribute '_is_graph_network'\n
解决方法:
降级Keras到2.1.6可以解决这个问题
pip install keras==2.1.6\n
加速安装
3.3 与官方文件的不同之处
这个实现大部分都遵循 Mask RCNN 文章,但在一些情况下我们偏向于代码简单性和泛化。这些是我们意识到的一些差异。如果您遇到其他差异,请告诉我们。
花了数个小时完成了这个上手教程,希望能对 MaskRCNN 感兴趣朋友提供帮助。
原文链接:
https://blog.csdn.net/xiaosongshine/article/details/99670519
福利时刻
入群参与每周抽奖~
扫码添加小助手,回复:大会,加入福利群,参与抽奖送礼!
9大技术论坛、60+主题分享,百余家企业、千余名开发者共同相约 2019 AI ProCon!技术驱动产业,聚焦技术实践,倾听大牛分享,和万千开发者共成长。5折优惠票倒计时5天抢购中!