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系列显卡_第1张图片

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.2 安装 mmcv
Mask rcnn代码实现_pytorch版_适用30系列显卡_第3张图片
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

Mask rcnn代码实现_pytorch版_适用30系列显卡_第4张图片

4. 修改源代码

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

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

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

Mask rcnn代码实现_pytorch版_适用30系列显卡_第5张图片
Mask rcnn代码实现_pytorch版_适用30系列显卡_第6张图片

4.2 修改配置文件

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

Mask rcnn代码实现_pytorch版_适用30系列显卡_第7张图片

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

(1)修改 mask_rcnn_r50_fpn.py 文件

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

Mask rcnn代码实现_pytorch版_适用30系列显卡_第8张图片

(2)修改 coco_instance.py 文件

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

Mask rcnn代码实现_pytorch版_适用30系列显卡_第9张图片
Mask rcnn代码实现_pytorch版_适用30系列显卡_第10张图片

(3)修改 schedule_1x.py 文件

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

Mask rcnn代码实现_pytorch版_适用30系列显卡_第11张图片

(4)修改 default_runtime.py 文件

按照如下修改就行

Mask rcnn代码实现_pytorch版_适用30系列显卡_第12张图片

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

pycharm软件下添加文件参数:

Mask rcnn代码实现_pytorch版_适用30系列显卡_第13张图片
Mask rcnn代码实现_pytorch版_适用30系列显卡_第14张图片

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

Mask rcnn代码实现_pytorch版_适用30系列显卡_第15张图片

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

Mask rcnn代码实现_pytorch版_适用30系列显卡_第16张图片

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

原始代码

Mask rcnn代码实现_pytorch版_适用30系列显卡_第17张图片

修改后代码:

Mask rcnn代码实现_pytorch版_适用30系列显卡_第18张图片

大功告成!!

Mask rcnn代码实现_pytorch版_适用30系列显卡_第19张图片

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

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

你可能感兴趣的:(日常记录,pytorch,深度学习,python)