0


InternImage segmentation部分代码复现及训练自己的数据集(一)

所谓“复现”,不过是跑通了官方的代码,以下仅为个人的一些经验和理解,欢迎指正。

(其实仅作为个人学习使用,也欢迎交流)

首先贴出官方文献和代码:

官方文献:InternImage: Exploring Large-Scale Vision Foundation Models with Deformable Convolutions,链接:InternImage: Exploring Large-Scale Vision Foundation Models with Deformable Convolutions | Papers With Code官方Github代码:GitHub - OpenGVLab/InternImage: [CVPR 2023 Highlight] InternImage: Exploring Large-Scale Vision Foundation Models with Deformable Convolutions

一、代码复现

1、配置信息

    Linux系统Ubuntu 9.4.0(在Windows上跑会出现各种各样的问题,主要是包不兼容的问题),4卡,Cuda 11.1。

2、环境配置

    下载了官方代码解压,得到以下文件:

    进入  * ./segmentation*文件夹下,用*Notepad++*软件打开*README.md*文件,跟据上面的内容配置环境。

3、数据集准备

    ADE20K数据集下载:

    官网下载:ADE20K dataset (mit.edu),这里的训练测试只用到 **ADEChallengeData2016 **数据集(MIT Scene Parsing Challenge 2016)就可以了。这里再附上百度网盘下载链接:链接:https://pan.baidu.com/s/1VWVzoeIgzDbFgo_RXcQ_Mw?pwd=mv4j 提取码:mv4j

    关于数据集的介绍请看官网,下面的训练和测试都是基于ADEChallengeData2016进行。

4、测试(test.py部分)

    将数据集上传到Linux系统,官方代码默认读取路径是 ./segmentation/data/ADEChallenge Data2016/... ,如果不想改代码的话,就在 ./segmentation 文件夹下新建一个 data 文件夹,然后把ADEChallengeData2016数据集加载到data文件夹下。数据集组织格式如下(官方代码默认):
---------------
    |
    |--ADEChallengeData2016
         |
         |--annotations
         |    |
         |    |--training
         |    |    |
         |    |    |--ADE_train_00000001.png
         |    |    |--ADE_train_00000002.png
         |    |    |--……
         |    |    
         |    |--validation
         |    |    |
         |    |    |--ADE_val_00000001.png
         |    |    |--ADE_val_00000002.png
         |    |    |--……
         |    
         |--images
         |    |
         |    |--training
         |    |    |
         |    |    |--ADE_train_00000001.png
         |    |    |--ADE_train_00000002.png
         |    |    |--……
         |    |    
         |    |--validation
         |    |    |
         |    |    |--ADE_val_00000001.png
         |    |    |--ADE_val_00000002.png
         |    |    |--……
         |    |
    若数据集放于其它路径下,则需要通过修改代码来进行数据集的读取,这里有两种解决办法:

    方法一:修改test.py文件代码。

    找到读取数据集的代码行:
dataset = build_dataset(cfg.data.test)   #建立数据集
    在该代码行前一行添加代码:
cfg.data.test['data_root'] = 'E:/data/ADE20K/ADEChallengeData2016'   #通过这个命令行改变测试集的位置,添加你的测试集路径
dataset = build_dataset(cfg.data.test)   #建立数据集
    这样修改之后,代码就会跟据你指明的路径读取数据,数据集的组织形式依旧如上面代码块所示。若更改组织形式,则需要指明图片所在路径和标注文件所在路径,如下面代码所示:
cfg.data.test['data_root'] = 'E:/data/ADE20K/ADEChallengeData2016'   #通过这个命令行改变测试集的位置,添加你的测试集路径
cfg.data.test['img_dir'] = 'val/Images'  #指向图片文件的路径,图片文件的完整路径为:cfg.data.test['data_root'] + cfg.data.test['img_dir']
cfg.data.test['ann_dir'] = 'val/Masks'  #指向标注文件的路径,标注文件的完整路径为:cfg.data.test['data_root'] + cfg.data.test['ann_dir']

dataset = build_dataset(cfg.data.test)   #建立数据集
    方法二:通过修改数据读取的底层文件实现,参考:(64条消息) mmsegmentation教程1:自定义数据集、config文件修改、训练教程_AESA相控阵的博客-CSDN博客

    模型参数(.pth文件)下载:GitHub - OpenGVLab/InternImage: [CVPR 2023 Highlight] InternImage: Exploring Large-Scale Vision Foundation Models with Deformable Convolutions

    跟据你的模型需要,下载ckpt的链接文件并保存到你的文件中(即下文代码的[your_wei ght_path])。

    做到以上准备之后,运行以下代码就可以查看模型在ADE20K数据集上的测试结果:
python test.py configs/ade20k/upernet_internimage_t_512_160k_ade20k.py [your_weight_path]/upernet_internimage_t_512_160k_ade20k.pth --eval mIoU

5、训练(train.py部分)

    与第4部分类似,需要准备数据集和修改数据读取代码,模型训练不需要下载模型参数文件。准备好数据集和修改数据读取代码之后,运行以下代码(README.md)。
sh dist_train.sh configs/ade20k/upernet_internimage_t_512_160k_ade20k.py 8
    可能会出现报错,原因是 sh 命令被版本舍弃了(具体原因自己网上搜索)?将 sh 命令换为 bash 命令就可以了,即:
bash dist_train.sh configs/ade20k/upernet_internimage_t_512_160k_ade20k.py 8

本文转载自: https://blog.csdn.net/yeeeeeeeeeeees/article/details/129932034
版权归原作者 yeeeeeeeeeeees 所有, 如有侵权,请联系我们删除。

“InternImage segmentation部分代码复现及训练自己的数据集(一)”的评论:

还没有评论