Mask rcnn代码实现_pytorch版_适用30系列显卡

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

Mask rcnn代码实现_pytorch版_适用30系列显卡

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 安装虚拟环境(推荐)
Mask rcnn代码实现_pytorch版_适用30系列显卡
2.2 安装 mmcv
Mask rcnn代码实现_pytorch版_适用30系列显卡
2.3 安装 mmdet
Mask rcnn代码实现_pytorch版_适用30系列显卡
剩余的包运行时候缺什么安装什么就行,简单!

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

Mask rcnn代码实现_pytorch版_适用30系列显卡

4. 修改源代码

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

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

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

Mask rcnn代码实现_pytorch版_适用30系列显卡
Mask rcnn代码实现_pytorch版_适用30系列显卡

4.2 修改配置文件

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

Mask rcnn代码实现_pytorch版_适用30系列显卡

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

(1)修改 mask_rcnn_r50_fpn.py 文件

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

Mask rcnn代码实现_pytorch版_适用30系列显卡

(2)修改 coco_instance.py 文件

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

Mask rcnn代码实现_pytorch版_适用30系列显卡
Mask rcnn代码实现_pytorch版_适用30系列显卡

(3)修改 schedule_1x.py 文件

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

Mask rcnn代码实现_pytorch版_适用30系列显卡

(4)修改 default_runtime.py 文件

按照如下修改就行

Mask rcnn代码实现_pytorch版_适用30系列显卡

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

pycharm软件下添加文件参数:

Mask rcnn代码实现_pytorch版_适用30系列显卡
Mask rcnn代码实现_pytorch版_适用30系列显卡

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

Mask rcnn代码实现_pytorch版_适用30系列显卡

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

Mask rcnn代码实现_pytorch版_适用30系列显卡

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

原始代码

Mask rcnn代码实现_pytorch版_适用30系列显卡

修改后代码:

Mask rcnn代码实现_pytorch版_适用30系列显卡

大功告成!!

Mask rcnn代码实现_pytorch版_适用30系列显卡

测试时,在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

Mask rcnn代码实现_pytorch版_适用30系列显卡

参考链接: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

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

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
青葱年少的头像青葱年少普通用户
上一篇 2023年3月11日
下一篇 2023年3月11日

相关推荐