Mask rcnn代码实现_pytorch版

由于科研需求,要做一个图像分割的项目,于是开始着手跑一下 mask rcnn。本以为很简单的事情,网上代码比较多,结果尝试了一下,遇到了各种问题。

主要是由于网上的代码大多是基于 tensorflow1.x 的,我的显卡是 RTX3080,而30系列显卡的 CUDA 版本要求是 11.x ,不能在 tensorflow1.x 上运行。

尝试用tensorflow2.x 代替 tensorflow1.x,改一下 bug ,结果不一样的地方实在太多,还不好改,于是脱坑,找到了 pytorch 版本的 mask rcnn 代码,30系列显卡也可以愉快的图像分割了。

1. 本文所用的代码是 mmtetection 库,pytorch 版本的 mask rcnn 代码:

代码连接:https://github.com/open-mmlab/mmdetection

在这里插入图片描述

2. 本文所用开发环境

Win10 + RTX 3080

Python=3.8.13 (最新版 python 就可以)

CUDA 11.3 + cuDNN 8.2.1(只要和30系列显卡适配就行,版本无要求)

pytorch=1.12.1 + torchvision=0.13.1 (直接安装最新版就行)

labelme=5.0.1

开发环境安装方法:https://github.com/open-mmlab/mmdetection/blob/master/docs/en/get_started.md/#Installation

打不开链接的话,就按下面的流程安装进行,很简单

2.1 安装虚拟环境(推荐)
在这里插入图片描述
2.2 安装 mmcv
在这里插入图片描述
2.3 安装 mmdet

剩余的包运行时候缺什么安装什么就行,简单!

3. 数据准备

mmdetection-master 目录下新建一个 data 文件夹, 将处理好的 coco 格式数据集,按如下样式放入到 data 文件夹中。此外还要在此目录下新建 checkpoints 文件夹和 work_dirs 文件夹。

(data 文件夹下面放 coco 文件夹,coco 文件夹下放 annotations 文件夹和 train2022, val2022 以及 test2022文件夹,这三个文件夹下直接是图片。)

这里提一下,可以用自制的数据集,用 labelme 软件标注好,再转化为 coco 数据标注格式就行,数据制作方法参考:https://blog.csdn.net/wangjianwei19911218/article/details/126348135

在这里插入图片描述

4. 修改源代码

4.1 如果是自制的数据集,需要修改数据集的类别名称和类别数量。这里以 mmdetection-master 为根目录,主要修改两个文件:

./mmdetection-master/mmdet/datasets/coco.py
./mmdetection-master/mmdet/core/evaluation/class_name.py

目前我的数据集只有 cow 样本,一个类别要加逗号,因此直接按照我的来:

在这里插入图片描述
在这里插入图片描述

4.2 修改配置文件

首先打开文件配置文件,找到需要修改的文件路径:
./mmdetection-master/configs/mask_rcnn/mask_rcnn_r50_fpn_1x_coco.py

在这里插入图片描述

需要对这4个路径中的文件进行一一修改:

(1)修改 mask_rcnn_r50_fpn.py 文件

修改第 47 行和第 66 行的类别数,根据自己的数据集,我的是 1 类。

在这里插入图片描述

(2)修改 coco_instance.py 文件

data_root 路径改为 ‘ …/data/coco ', 文件路径按我的来。

在这里插入图片描述
在这里插入图片描述

(3)修改 schedule_1x.py 文件

原文中 8 个 GPU,学习率为0.02,咱们一个GPU,因此设为0.0025.

在这里插入图片描述

(4)修改 default_runtime.py 文件

按照如下修改就行

在这里插入图片描述

我们主要用 tools 文件夹下的 train.py 文件进行训练。

pycharm软件下添加文件参数:

在这里插入图片描述
在这里插入图片描述

确定,点开始就可以训练了。

在这里插入图片描述

不过这时候,你可能会遇到这个bug:

在这里插入图片描述

这是因为官方代码有 bug, 你只要把 dataset 去掉就好了。

原始代码

在这里插入图片描述

修改后代码:

在这里插入图片描述

大功告成!!

在这里插入图片描述

测试时,在config中加入如下代码:

../configs/mask_rcnn/mask_rcnn_r50_fpn_1x_coco.py E:\relate_code\mmdetection-master\tools\work_dirs\mask_rcnn_r50_fpn_1x_coco/epoch_12.pth --show --eval bbox segm

在这里插入图片描述

参考链接:https://blog.csdn.net/wangjianwei19911218/article/details/126362613?spm=1001.2014.3001.5502

https://blog.csdn.net/wangjianwei19911218/article/details/126348135?spm=1001.2014.3001.5502

日常学习记录,一起交流讨论吧!侵权联系~

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐