1、环境配置
提前安装好pytorch环境,这里就不再介绍torch如何安装,下面需要安装mmcv相关的库,在终端输入:
pip install -U openmim
mim install mmengine
mim install "mmcv>=2.0.0"
2、数据集准备配置
(1)mmsegmentation支持多种数据集格式,首先需要在根目录下新建一个”data”文件夹,然后把具体的数据集放在data文件夹下,如下格式:
mmsegmentation ├── mmseg ├── tools ├── configs ├── data │ ├── my_dataset │ │ ├── ann_dir │ │ │ ├── train │ │ │ ├── val │ │ ├── img_dir │ │ │ ├── train │ │ │ ├── val
(2) 其中img_dir下面的train和val文件夹下放的就是训练集和测试集的所有原图数据,ann_dir下面就是标签文件数据
(3)再把自己的数据集拷贝到对应文件夹下面
3、修改配置
(1)在mmseg/datasets目录下找到postdam.py,这是对应于postdam数据集的类文件,直接将其复制一份,新命名为mydataset.py或者其他名字(我这里是ganzhe_dataset.py)
在mydataset.py中修改类名、分类信息、数据集图片后缀、是否忽略0标签这四个地方,由于我的数据集只需要对背景和甘蔗这两个类别进行分割,所以只需要写两个类即可。不同的数据集对应着不同的类,要修改的地方都是大同小异,针对postdam这个数据类会配置以后就可以举一反三。
注意:是否忽略0标签(reduce_zero_label)这个参数,该参数设置为true后,数值为0的标签(通常设置为背景类)不会参与loss计算,由于我的数据集就只有两个类别,所以我默认还是计算背景损失的
(2)将自己新建的ganzhe_dataset.py进行注册,通俗的讲就是修改mmseg/datasets/_init_.py这个文件,只需要将对应的py文件import一下,并在数据集支持列表中添加自己新建的数据集类即可,即新增红色框圈起来的两个位置:
(3)在configs/_base_/datasets文件夹下新建一个数据集配置文件(.py),方法也是先找到postdam.py这个文件直接复制粘贴,然后重命名为ganzhe_dataset.py,并修改相关的配置信息,包括数据集的位置、数据增强方法等信息,这里我主要修改数据集的位置信息,其他参数默认不变,还是那句话,不同的数据集配置文件可能配置信息有差异,但是都是大同小异,学会一个后举一反三。
注意:训练的数据集大小等需修改
4、修改模型配置
(1)configs/_base_/models文件夹下面是mm目前支持的所有模型的结构定义文件,选择一个你打算使用的模型,目前暂时只修改一个地方就行:
SyncBN代表分布式训练,单卡训练将其改成BN,基本上大多数人都是单卡,所以需要修改一下
(2)在configs/twins文件夹下选一个预训练模型的配置文件(.py),作为教程这里也只修改__base__这一个属性,高级的配置修改后续再说。这里只需要修改数据集的配置文件路径即可
5、模型训练
(1)在项目根目录的终端中输入“python tools/train.py 你刚刚修改的预训练模型配置文件”,比如我这里输入的就是
python tools/train.py configs/twins/twins_pcpvt-s_fpn_fpnhead_8xb4-80k_ade20k-512x512.py
回车开始训练,之后会自动下载预训练权重文件到C盘user/.cache文件夹下,等待即可。如果下载实在太慢,可以用浏览器打开下载链接,下好后放进相应的文件夹即可。具体的下载链接和文件夹位置,在控制台都会显示,仔细找找即可。
(2)如果你出现了“xxxDataset is not in the dataset registry”的报错提示,在终端运行下面两行指令:
python setup.py install pip install -v -e .
然后重新运行train.py文件开始训练即可。