一、环境配置
毕设的内容,但学校不提供机器,租用了趋动云的服务器,发现也挺好用的,记录一下跑通Mask2Former的过程。
用的官方给的镜像,用这个版本的pytorch没有出问题
我是先下载的Facebookresearch的源码,在源码的同级文件夹下载安装detectron2
然后切换到看到Mask2Former和detectron2的文件夹下,用下面的命令可以直接安装
cd detectron2
pip install -e .
pip install git+https://github.com/cocodataset/panopticapi.git
pip install git+https://github.com/mcordts/cityscapesScripts.git
cd ../Mask2Former
pip install -r requirements.txt
cd mask2former/modeling/pixel_decoder/ops
python setup.py build install
二、demo测试
可以参考ubuntu20.04 conda环境配置Mask2former记录_mask2former安装-CSDN博客这篇文章和官方给的教程
三、制作自己的数据集
我是要跑一个语义分割的任务,选择了ADE20K的格式制作数据集。只跑语义分割的模型,在ADE20K中只需要用到images和annotations的内容。
annotations中的类别需要设置一下方便后续整理,也就是背景是[0,0,0],类别一是[1,1,1],类别二是[2,2,2]...这样,不然容易出问题
制作好之后,用prepare_ade20k_sem_seg.py生成annotations_detectron2即可
因为我是二分类的任务,也就是标注中只有背景0和类别一1,上面提到的代码是将整个类别的标注往前移1,也就是背景变成了255,类别一变成了0。在yaml文件中,会有设置忽略背景进行训练,但显然二分类任务不能忽略背景,所以为了标注归一化,我没用上面的py文件对标签进行处理,直接将annotations文件重命名成annotations_detectron2。
四、训练自己的数据集
按照之前参考的那篇博客设置一下自己的数据集路径,实在不行用默认的也可以。
这里主要是要设置yaml文件,文件的位置如下图所示,可以作为自己的yaml文件的参考。这个是swintransformer作为backbone的文件。
需要设置类别,我有背景和类别一,也就是两个类别,设置了MODEL.SEM_SEG_HEAD.NUM_CLASSES: 2
训练的时候可以调整存模型的批次和batchsize
SOLVER:
MAX_ITER:
CHECKPOINT_PERIOD: 5000
IMS_PER_BATCH: 2
以及训练过程中验证的批次和输出的路径
TEST:
EVAL_PERIOD: 5000
OUTPUT_DIR: "/gemini/output/backbone/swinB_bs2"
完美结束!!!