赞
踩
所谓“复现”,不过是跑通了官方的代码,以下仅为个人的一些经验和理解,欢迎指正。
(其实仅作为个人学习使用,也欢迎交流)
首先贴出官方文献和代码:
官方文献: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
Linux系统Ubuntu 9.4.0(在Windows上跑会出现各种各样的问题,主要是包不兼容的问题),4卡,Cuda 11.1。
下载了官方代码解压,得到以下文件:
进入 ./segmentation 文件夹下,用Notepad++软件打开README.md文件,跟据上面的内容配置环境。
ADE20K数据集下载:
官网下载:ADE20K dataset (mit.edu),这里的训练测试只用到 ADEChallengeData2016 数据集(MIT Scene Parsing Challenge 2016)就可以了。这里再附上百度网盘下载链接:链接:https://pan.baidu.com/s/1VWVzoeIgzDbFgo_RXcQ_Mw?pwd=mv4j 提取码:mv4j
关于数据集的介绍请看官网,下面的训练和测试都是基于ADEChallengeData2016进行。
将数据集上传到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博客
跟据你的模型需要,下载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
与第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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。