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

        

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
青葱年少的头像青葱年少普通用户
上一篇 2023年8月17日
下一篇 2023年8月17日

相关推荐