首先我们在第一篇里面已经下载了SegNeXt代码
打开源代码
查看readme文件

我们先安装一下里面提到的torchprofile
链接在这
其实只要这个语句就能安装
pip install torchprofile
这一步没什么问题
很顺利
接下来继续按照他的教程走

我们在(一)已经安装了mmsegmentation
接下来去下载一下他的数据
下载数据

数据的描述在这个文件里
我先去下载ade数据试试
ADE20K 的训练集和验证集可以在 这里 下载。
您还可以在 这里 下载验证集。
数据格式如下
mmsegmentation
├── mmseg
├── tools
├── configs
├── data
│ ├── ade
│ │ ├── ADEChallengeData2016
│ │ │ ├── annotations
│ │ │ │ ├── training
│ │ │ │ ├── validation
│ │ │ ├── images
│ │ │ │ ├── training
│ │ │ │ ├── validation
编译配置
然后按照他的语句进行源代码编译
很顺利
没报什么错
打开vscode查看一下train的代码
这里忘记如何配置的vscode的小伙伴可以查看我的这篇文章Ubuntu20搭建pytorch深度学习框架——运行Dlinknet提取道路(一)——前期准备环境配置
我详细介绍了怎么查询自己的虚拟环境
以及如何配置vscode
配置完成后包就不会变红啦

然后打算在vscode中运行
报错
bash: ./tools/dist_train.sh: 权限不够
解决方法
chmod 777 ./tools/dist_train.sh /path/to/config 8
但这里报错
chmod: 无法访问 ‘/path/to/config’: 没有那个文件或目录
chmod: 无法访问 ‘8’: 没有那个文件或目录

训练
查看train的md文件

这个里面写的有个bug
按照我下面的语句运行才可以成功
bash tools/dist_train.sh configs/pspnet/pspnet_r50-d8_512x512_80k_ade20k.py
然后就会生成这样一些文件

这个一直报错

RuntimeError: NCCL error in: /opt/conda/conda-bld/pytorch_1640811805959/work/torch/csrc/distributed/c10d/ProcessGroupNCCL.cpp:957, invalid usage, NCCL version 21.0.3
ncclInvalidUsage: This usually reflects invalid usage of NCCL library (such as too many async ops, too many collectives at once, mixing streams in a group, etc).
错误解决

这个问题是因为我们执行的语句有问题
在我请教了师兄之后
师兄告诉我
bash 那个是分布式用的,我们就一张卡不需要
救了孩子的命
所以我们的语句换成这样就可以成功啦
单卡的说明在这里

python tools/train.py configs/pspnet/pspnet_r50-d8_512x512_80k_ade20k.py
成功开始训练!

测试
结果已经预测出来了

同理 我的语句是

python tools/test.py work_dirs/pspnet_r50-d8_512x512_80k_ade20k/pspnet_r50-d8_512x512_80k_ade20k.py work_dirs/pspnet_r50-d8_512x512_80k_ade20k/iter_80000.pth --eval mIoU
出来的页面与之前的类似

其他尝试
还可以尝试一下其他的检查点文件

比如我尝试了一下 iter_40000.pth
看一下结果
果然没有之前的好

但是这个语句只会出来一个miou结果
我需要他把预测的图片生成该怎么办呢


这个语句就可以输出结果
python tools/test.py work_dirs/pspnet_r50-d8_512x512_80k_ade20k/pspnet_r50-d8_512x512_80k_ade20k.py work_dirs/pspnet_r50-d8_512x512_80k_ade20k/iter_80000.pth --show-dir work_results/ --eval mIoU

使用SegNeXt进行训练及预测
首先去他给的网址下载与训练权重

下载下来后

用相同的方法进行训练 看看ade数据效果如何
把这个预训练放在这个路径下
base
训练语句如下:

只不过数据的位置需要更改一下
放在如下图所示的位置

结果比想象中的好太多了!

使用最新的检查点文件进行测试

结果如下:

large
同样的我尝试了large训练到8000的权重的测试结果为


继续训练
第32000次:


第36000次:


latest:


训练自己的数据集
参考博客1
参考博客2(voc格式)
参考博客3(voc格式)
参考博客4(ade格式)

结合这一句话
我明白了
对数据格式的要求:
1、八位深度的mask
2、类别的顺序就代表了mask上对应类别的像素值!!!所以我需要修改一下我的图片

本文详细介绍使用SegNeXt进行语义分割任务的全过程,包括环境配置、数据下载与格式设置、模型训练与测试等关键步骤,并解决了训练过程中遇到的常见问题。

被折叠的 条评论
为什么被折叠?



