基于ADE20K数据集的SETR模型训练

基于ADE20K数据集的SETR模型训练

安装

复制代码
conda create -n open-mmlab python=3.7 -y
conda activate open-mmlab
conda install torch==1.12.0+cu116 torchvision==0.13.0+cu116 -f https://download.pytorch.org/whl/torch_stable.html
pip install mmcv-full==1.6.0 -f https://download.openmmlab.com/mmcv/dist/cu116/torch1.12.0/index.html
git clone https://github.com/fudan-zvg/SETR.git
cd SETR
pip install -e . 
pip install -r requirements/optional.txt
mkdir data # 将数据集放到该目录下

训练

复制代码
./tools/dist_train.sh ${CONFIG_FILE} ${GPU_NUM}
例如在Cityscapes dataset,使用8 GPUs,SETR-PUP训练
./tools/dist_train.sh configs/SETR/SETR_PUP_768x768_40k_cityscapes_bs_8.py 8
或者其他
./tools/dist_train.sh configs/SETR/SETR_Naive_512x512_160k_ade20k_bs_16.py 1

本次使用:
./tools/dist_train.sh configs/SETR/SETR_MLA_512x512_160k_ade20k_bs_8.py 1

test

复制代码
./tools/dist_test.sh configs/SETR/SETR_MLA_512x512_160k_ade20k_bs_8.py work_dirs/SETR_MLA_512x512_160k_ade20k_bs_8/iter_160000.pth 1 --format-only --eval-options "imgfile_prefix=./SETR_MLA_512x512_160k_ade20k_bs_8_test_results"

修改bug:

复制代码
将mmseg/models/decode_heads/hlg_utils.py中的16行/19行注释掉
#from ..backbones.region_attention import LayerNorm2d
#from mmseg.models.backbones.hlg_share import AttentionShareGlobal, AttentionShareLocal, DWMlp, InnerPatchEmbed

问题解决:

1.报错:

复制代码
	Traceback (most recent call last):
	  File "./tools/train.py", line 12, in <module>
		from mmseg import __version__
	  File "/root/autodl-tmp/SETR/mmseg/__init__.py", line 27, in <module>
		f'MMCV=={mmcv.__version__} is used but incompatible. ' \
	AssertionError: MMCV==1.6.0 is used but incompatible. Please install mmcv>=[1, 1, 2], <=[1, 2, 7].

解决:

复制代码
	将SETR/mmseg/__init__.py中
	第6行
	MMCV_MAX = '1.2.7'
	改为:
	MMCV_MAX = '1.7.0'

2.报错:

复制代码
	ImportError: cannot import name 'container_abcs' from 'torch._six' (/root/miniconda3/envs/open-mmlab/lib/python3.7/site-packages/torch/_six.py)
	ERROR:torch.distributed.elastic.multiprocessing.api:failed (exitcode: 1) local_rank: 0 (pid: 39872) of binary: /root/miniconda3/envs/open-mmlab/bin/python

解决:

复制代码
	将SETR/mmseg/models/backbones/vit.py中
	第6行
	from torch._six import container_abcs
	改为:
	import collections.abc as container_abcs

	将SETR/mmseg/models/backbones/vit_mla.py中
	第6行
	from torch._six import container_abcs
	改为:
	import collections.abc as container_abcs

3.报错:

复制代码
	File "/root/miniconda3/envs/open-mmlab/lib/python3.7/site-packages/mmcv/runner/hooks/logger/text.py", line 234, in log
		self._log_info(log_dict, runner)
	File "/root/miniconda3/envs/open-mmlab/lib/python3.7/site-packages/mmcv/runner/hooks/logger/text.py", line 153, in _log_info
		log_str += f'time: {log_dict["time"]:.3f}, ' \
	KeyError: 'data_time'
	ERROR:torch.distributed.elastic.multiprocessing.api:failed (exitcode: 1) local_rank: 0 (pid: 2283) of binary: /root/miniconda3/envs/open-mmlab/bin/python

解决:

复制代码
	打开报错文件vim /root/miniconda3/envs/open-mmlab/lib/python3.7/site-packages/mmcv/runner/hooks/logger/text.py
	定位到153-154
	log_str += f'time: {log_dict["time"]:.3f}, ' \
			   f'data_time: {log_dict["data_time"]:.3f}, '
	将 log_dict["data_time"] 改为:
		log_dict.get("data_time", 0.0)

继续训练

复制代码
	./tools/dist_train.sh configs/SETR/SETR_MLA_512x512_160k_ade20k_bs_8.py 1 --resume-from work_dirs/SETR_MLA_512x512_160k_ade20k_bs_8/iter_16000.pth
	
	./tools/dist_train.sh configs/SETR/SETR_MLA_512x512_160k_ade20k_bs_8.py 1 --resume-from work_dirs/SETR_MLA_512x512_160k_ade20k_bs_8/iter_80000.pth
	
	./tools/dist_train.sh configs/SETR/SETR_MLA_512x512_160k_ade20k_bs_8.py 1 --resume-from work_dirs/SETR_MLA_512x512_160k_ade20k_bs_8/latest.pth

数据集目录结构

相关推荐
qq_3718021119 小时前
Ubuntu Linux中安装WorkBuddy
linux·运维·服务器·ubuntu
且从容.2 天前
Ubuntu安装flume
linux·ubuntu·flume
承渊政道2 天前
Linux网络学习【Reactor反应堆模式】
linux·网络·学习·ubuntu·reactor
且从容.2 天前
ubuntu安装flink
linux·ubuntu·flink
Linux-lucky3 天前
45-Linux学习之旅之防火墙与WEB加固
linux·前端·网络·学习·ubuntu
禁默3 天前
启元 Q1 二次开发实践:Ubuntu 部署与仿真验证,从 PrimeConsole 到 ROS 2 Humble + RViz
linux·运维·ubuntu
skywalk81633 天前
把 去也网站 从 Ubuntu 搬到 FreeBSD:一次 Service Jail + nginx 的部署实录
linux·运维·nginx·ubuntu·freebsd
David猪大卫3 天前
【Linux修炼】环境变量、进程地址空间
linux·c语言·经验分享·笔记·学习·ubuntu·centos
且从容.4 天前
Ubuntu 安装 Docker
linux·ubuntu·docker
承渊政道5 天前
Linux网络学习【深入理解多路转接select、poll的代码改写】
linux·ubuntu·select·多路转接·poll