基于MMSegmentation,在自己的数据集(voc格式的分割数据集)上复现upernet_convnext网络。

本文档详细介绍了如何基于MMSegmentation库,利用PyTorch和VOC格式的分割数据集,复现upernet_convnext网络的训练过程。内容涵盖环境配置、MMSegmentation安装、数据集准备、模型配置修改及训练,最后还涉及到训练结果的可视化操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.简介

最近在做分割任务,看了一篇《A ConvNet for the 2020s》里面提到一个upernet网络做分割任务,发现现在很多做分割的都基于mmsegmentation这个类似的工具箱做,所以我也尝试用它训练一下,也方便以后做对比实验。因为第一次使用mmsegmentation,所以不太熟练,经过几天努力终于跑通了,在这里记录和分享一下,免得以后自己忘记那个步骤,又跑不通了。
github的代码链接:https://github.com/open-mmlab/mmsegmentation

2.环境介绍

要根据自己的电脑或者服务器的配置(CUDA版本)来选择安装相应的pytorch版本。python我直接安装了3.7的版本(官方要求大于3.6就可以了)。

创建环境指令

conda create -n mmlab python=3.7

安装pytorch
pytorch的官网链接代码:https://pytorch.org/get-started/previous-versions

我电脑的cuda版本是10.2的,所以装的pytorch版本是1.5.1的(官方要求大于1.3的就可以了)。

# CUDA 10.2
conda install pytorch==1.5.1 torchvision==0.6.1 cudatoolkit=10.2 -c pytorch

我使用服务器的cuda版本是11.4的,所以装的1.7.1版本的pytorch。

# CUDA 11.0
conda install pytorch==1.7.1 torchvision==0.8.2 torchaudio==0.7.2 cudatoolkit=11.0 -c pytorch

3.安装mmcv

建议安装mmcv前先安装一下opencv(从别的代码得到的经验),反正后面也要装。
opencv安装指令

pip install opencv-python

1)使用mim安装mmcv(跟官网一样)

pip install -U openmim
mim install mmcv-full

我默认安装的mmcv-full版本是1.7.1。安装其它版本的话可以将上面的第二条指令换成下面的。(1.x.x表示版本,如mmcv-full==1.5.1)

mim install mmcv-full==1.x.x

2)使用pip安装mmcv

可以参考这个官方提供的网址:https://mmcv.readthedocs.io/en/latest/get_started/installation.html 这里面可以让你根据自己的系统,cuda版本,torch版本安装对应的mmcv-full版本。下面是一个例子:

pip install mmcv-full==1.5.0 -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.8/index.html

网址一点内容截图
在这里插入图片描述

4.安装mmsegmentation

我是源码安装的
从github上下载代码,然后解压到自己的文件夹下。
然后在mmsegmentation目录下执行以下指令(注意最后那个点也是指令的一部分):

pip install -v -e .

下面是我在自己电脑下采用pycharm编译器运行的方式:
在这里插入图片描述服务器上就更简单了,这里就不说了。

5.验证安装

这部分按照官网来就可以了,在windowsx下权重和配置的可能有点问题,我没下成功(我从服务器上下的)
验证推理那一步不想像官网那样需要将配置文件和权重的路径一起作为指令输入,可以按照下面方式改一下(其实就是把配置文件(configs),权重和输出的路径在代码中配置好,然后直接运行就可以了)。
在这里插入图片描述

6.按照voc格式准备自己的数据集。

在这里插入图片描述

7.使用自己的数据集训练upernet_convnext分割网络。

1)在mmsegmentation目录下的configs/base/datasets/下创建一个our_dataset.py文件。

我的our_dataset.py的文件内容如下(其实就是将mmsegmentation原有的pascal_voc12.py的内容复制过来,然后改一下dataset_type和data_root,懒的话可以直接在pascal_voc12.py上改):

# dataset settings
dataset_type = 'Our_Dataset'
data_root = '/semantic_Datasets/VOCdevkit/VOC2007'
img_norm_cfg = dict(
    mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True)
crop_size = (512, 512)
train_pipeline = [
    dict(type='LoadImageFromFile'),
    dict(type='LoadAnnotations'),
    dict(type='Resize', img_scale=(2048, 512), ratio_range=(0.5, 2.0)),
    dict(type='RandomCrop', crop_size=crop_size, cat_max_ratio=0.75),
    dict(type='RandomFlip', prob=0.5),
    dict(type='PhotoMetricDistortion'),
    dict(type='Normalize', **img_norm_cfg),
    dict(type='Pad', size=crop_size, pad_val=0, seg_pad_val=255),
    dict(type='DefaultFormatBundle'),
    dict(type='Collect', keys=['img', 'gt_semantic_seg']),
]
test_pipeline = [
    dict(type='LoadImageFromFile'),
    dict(
        type='MultiScaleFlipAug',
        img_scale=(2048, 512),
        # img_ratios=[0.5, 0.75, 1.0, 1.25, 1.5, 1.75],
        flip=False,
        transforms=[
            dict(type='Resize', keep_ratio=True),
            dict(type='RandomFlip'),
            dict(type='Normalize', **img_norm_cfg),
            dict
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梧梨香院

感谢您的支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值