复现open-mmlab的mmsegmentation详细细节
1.配置环境
stage1:创建python环境
conda create --name openmmlab python=3.8 -y
conda activate openmmlab
stage2:安装pytorch(这里我是以torch1.10.0为例)
pip install torch==1.11.0+cu113 torchvision==0.12.0+cu113 torchaudio==0.11.0 --extra-index-url https://download.pytorch.org/whl/cu113
stage3:安装MMCV,全部都可以加上清华源,-i https://pypi.tuna.tsinghua.edu.cn/simple
pip install openmim
pip install mmengine
pip install "mmcv>=2.0.0"
但是,这里在安装mmcv的时候,容易出错,比如:ImportError: DLL load failed while importing _ext: 找不到指定的程序。
很大就是mmcv版本装的有问题。
我们定位到mmcv的安装文档
https://mmcv.readthedocs.io/en/latest/get_started/installation.html#install-mmcv
会有根据操作系统、cuda版本,以及torch的版本后,确定自己选择的mmcv版本,进而生成最终的安装指令。
stage4:安装MMSegmentation:
方式1:
git clone -b main https://github.com/open-mmlab/mmsegmentation.git
cd mmsegmentation
pip install -v -e .
方式2:
pip install "mmsegmentation>=1.0.0"
2.数据处理
这里我们以COCO Stuff 10k
为例:tools/dataset_converters/coco_stuff10k.py
mkdir coco_stuff10k && cd coco_stuff10k
wget http://calvin.inf.ed.ac.uk/wp-content/uploads/data/cocostuffdataset/cocostuff-10k-v1.1.zip
unzip cocostuff-10k-v1.1.zip
下载并解压好,目录如下,我将他们统一放在data/coco_stuff10k
文件夹下。
images
存放的是.jpg格式的数据集图片。
annotations
存放是.mat格式的标注文件,我们后边需要使用脚本转换成mask。
imageLists
存放的是划分数据集对应于train和test的.txt文件,里面存放的是数据集的名称。
下面,需要将annotations存放是.mat格式的标注文件转换成mask的png图片,以及划分数据集。
mmsegmentation根路径下的tools/dataset_converters/coco_stuff10k.py
。coco_path 指向我们解压好的数据集根路径,out_dir 指向data下的output,用于存放转换的mask。
python tools/dataset_converters/coco_stuff10k.py coco_path data/coco_stuff10k --out_dir data/dataset
就会生成如下的文件夹,已经划分好数据集,并且标注文件全部由.mat转换成了.png。
3.训练
训练脚本就是mmsegmentation根路径下的tools/train.py
。主要就是指定config文件,以及输出文件夹路径。
config文件包含网络模型和数据的配置,这里就以mask2former和coco_stuff10k数据集为例:
其中,这里我选择的配置文件,就是模型的配置文件等,均以字典形式保存,都在configs文件夹下,我们找到自己想使用的模型。
比如,我们使用mask2former文件下的mask2former_r50_8xb2-90k_cityscapes-512x1024.py这个配置文件,主要看_base_
列表。
这里我们因为是使用coco_stuff10k,更改为../_base_/datasets/coco-stuff10k.py
,并定位到configs/_base_/datasets/coco-stuff10k.py
。将这里的data_root更换为上面处理好的数据集根路径即可。
开始训练:
python tools/train.py config configs/mask2former/mask2former_r50_8xb2-90k_cityscapes-512x1024.py --work-dir output