基于华为MindSpore框架的Mask-R-CNN

Mask-R-CNN-MindSpore

Mindspore版本的Mask R-CNN,在GPU上训练。其backbone包括Resnet50和Mobilenetv1。

Mask R-CNN

Mask R-CNN扩展了Faster R-CNN,增加了一个用于预测每个感兴趣区域(Region of Interest, RoI)上的分割掩码的分支,与现有的用于分类和边界框回归的分支并行。掩码分支是一个小的FCN应用于每个RoI,以像素-像素的方式预测一个分割掩码。Mask R-CNN是简单的实现和训练的更快的R-CNN框架,这有利于广泛的灵活的架构设计。此外,掩码分支只增加了很小的计算开销,从而实现了快速系统和快速实验。

请添加图片描述

没有bells和whistles的情况下,在COCO的实例分割任务上,Mask R-CNN超越了之前所有SOTA的单个模型取得的结果,包括根据2016年实例检测比赛冠军模型精心设计的,在2018年推出的改进作品。

Model Features

  1. Mask R-CNN在Faster R-CNN的基础上增加了Mask预测的一个分支。
  2. Mask R-CNN提出ROI对齐。

Pretrained Model

modeltraining datasetbboxsegmckpt
maskrcnn_coco2017_bbox37.4_segm32.9coco20170.3740.329checkpoint/maskrcnn_coco2017_acc32.9.ckpt
maskrcnnmobilenetv1_coco2017_bbox22.2_segm15.8coco20170.2220.158checkpoint/maskrcnnmobilenetv1_coco2017_bbox24.00_segm21.5.ckpt

请在此处下载 预训练权重文件。并将它放在checkpoint文件夹下。

Training Parameter Description

在这里,我们列出了一些重要的训练参数。此外,您可以查看配置文件的详细信息。

ParameterDefaultDescription
workers1Number of parallel workers
device_targetGPUDevice type
learning_rate0.002learning rate
weight_decay1e-4Control weight decay speed
total_epoch13Number of epoch
batch_size2Batch size
datasetcocoDataset name
pre_trained./checkpointThe path of pretrained model
checkpoint_path./ckpt_0The path to save

Example

下面介绍一下如何使用Mask R-CNN和Mask R-CNN MobileNetV1。
以Mask R-CNN为例,Mask R-CNN MobileNetV1遵循相同的流程。

Dataset

首先,你需要下载 coco2017 数据集。

也可以直接用下方命令,在服务器端获取coco数据集。

wget http://images.cocodataset.org/zips/train2017.zip
wget http://images.cocodataset.org/zips/val2017.zip

然后您可以将它们解压缩到指定的文件夹。

下载完coco2017后,需要修改配置文件中的“coco_root”和其他参数。

获得数据集后,确保你的路径如下:

.
└─cocodataset
  ├─annotations
    ├─instance_train2017.json
    └─instance_val2017.json
  ├─val2017
  └─train2017

如果您想使用其他数据集,请在运行脚本时将config.py中的“dataset”更改为“other”(自己定义的命名)。

Data Augmentation

在你开始训练模型之前。数据增强对于您的数据集以及创建训练数据和测试数据是必要的。对于coco数据集,你可以使用dataset.py为图像添加蒙版,并将它们转换到MindRecord。MindRecord是一种指定的数据格式,可以在某些场景下优化MindSpore的性能。

Train Model

当您应该更改参数和数据集时,您可以在config.py中更改参数和数据集路径。

python train.py

Evaluate Model

训练之后,您可以使用验证集来评估模型的性能。

运行eval.py来实现这一点。model_type参数的使用与训练过程相同。

python eval.py

Evaluation Results

Mask R-CNN ResNet50
Model trained by MindSpore on GPU

Evaluate annotation type bbox

IoUareamaxDetsAverage Precision (AP)
0.50:0.95all1000.374
0.50all1000.599
0.75all1000.403
0.50:0.95small1000.235
0.50:0.95medium1000.415
0.50:0.95large1000.474
0.50:0.95all10.312
0.50:0.95all100.501
0.50:0.95all1000.530
0.50:0.95small1000.363
0.50:0.95medium1000.571
0.50:0.95large1000.656

Evaluate annotation type segm

IoUareamaxDetsAverage Precision (AP)
0.50:0.95all1000.329
0.50all1000.555
0.75all1000.344
0.50:0.95small1000.165
0.50:0.95medium1000.357
0.50:0.95large1000.477
0.50:0.95all10.284
0.50:0.95all100.436
0.50:0.95all1000.455
0.50:0.95small1000.283
0.50:0.95medium1000.490
0.50:0.95large1000.592
Mask R-CNN Mobilenetv1
Model trained by MindSpore on GPU

Evaluate annotation type bbox

IoUareamaxDetsAverage Precision (AP)
0.50:0.95all1000.235
0.50all1000.409
0.75all1000.241
0.50:0.95small1000.145
0.50:0.95medium1000.250
0.50:0.95large1000.296
0.50:0.95all10.243
0.50:0.95all100.397
0.50:0.95all1000.418
0.50:0.95small1000.264
0.50:0.95medium1000.449
0.50:0.95large1000.515

Evaluate annotation type segm

IoUareamaxDetsAverage Precision (AP)
0.50:0.95all1000.191
0.50all1000.350
0.75all1000.190
0.50:0.95small1000.095
0.50:0.95medium1000.204
0.50:0.95large1000.278
0.50:0.95all10.206
0.50:0.95all100.315
0.50:0.95all1000.328
0.50:0.95small1000.194
0.50:0.95medium1000.350
0.50:0.95large1000.424

Inference

最后,您可以使用自己的图像来测试训练后的模型。将图像放入images文件夹,然后运行inference. py进行推断。

python infer.py

请添加图片描述
请添加图片描述
请添加图片描述

Notes

  1. 当更改backbone时,你可以fine-tune模型并在config.py中更改权重文件。
  2. 你可以参考data.py创建自己的数据集,并在config.py中更改数据集的根目录。

Reference

[1] He K, Gkioxari G, Dollár P, et al. Mask r-cnn[C]//Proceedings of the IEEE international conference on computer vision. 2017: 2961-2969.

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值