ICLR 2023 ViT-Adapter模型复现教程(跑通)

       本篇文章主要总结一下博主在复现Vit-Adapter模型时遇到的问题,并提供一个能够正确复现模型的教程。为了方便大家获取数据集、权重,在本文中博主会提供一些数据集和预训练权重。本文内容仅供参考,如果有问题欢迎大家提出宝贵意见!

一、Vision Transformer Adapter for Dense Predictions

       最近,注意力机制在计算机视觉领域取得了显著的成功。得益于注意力机制的动态建模能力和长程依赖性,各种视觉Transformer很快在目标检测和语义分割等许多计算机视觉任务中崭露头角,超越了CNN模型并达到了最先进的性能。这些模型主要分为两个家族,即普通的ViT及其分层变体。一般来说,后者可以产生更好的结果,并被认为通过使用局部空间操作将视觉特定的归纳偏差引入到它们的架构中。有兴趣的小伙伴们可以访问如下链接阅读论文。
论文原文链接https://arxiv.org/abs/2205.08534
GitHub链接https://github.com/czczup/ViT-Adapter

二、Vit-Adapter复现教程

2.1 服务器配置

硬件名称配置信息
GPURTX 3090(24GB) * 1
CPU12 vCPU Intel® Xeon® Platinum 8255C CPU @ 2.50GHz
内存43GB
硬盘80GB

2.2 准备工作

主要环境版本号
PyTorch1.9.0
torchvision0.10.0
Cuda11.1
Python3.8.10

2.3 模型复现

2.3.1 在线服务器

该部分参考了其他博主提供的环境配置和库安装代码,安装操作如下:

// 创建并激活虚拟环境
conda create -n Vit_Adapter python=3.8
conda activate Vit_Adapter

// 安装运行所需要的库
pip install torch==1.9.0+cu111 torchvision==0.10.0+cu111 torchaudio==0.9.0 -f https://download.pytorch.org/whl/torch_stable.html

// 安装库mmcv-full
pip install mmcv-full==1.4.2 -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.9.0/index.html

// 安装其他库mmdet等
pip install timm==0.4.12
pip install mmdet==2.22.0 # for Mask2Former
pip install mmsegmentation==0.20.2
pip install spicy

// 进入ViT-Adapter-main/segmentation中并把ViT-Adapter-main/detection/中的ops复制过来
cd ViT-Adapter/segmentation
ln -s ../detection/ops ./
cd ops
bash ./make.sh

版权声明:本文为CSDN博主「angel dust」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_63944210/article/details/132564567

2.3.2 离线服务器

       由于部分实验室的要求,实验室服务器可能不能够连接网络。因此上一节提供的方法不能够解决这类小伙伴们的问题,因此本节简单介绍一下如何配置离线服务器。离线服务器的配置需要用到conda-pack操作。更多的clone操作可以参考官网:https://www.anaconda.com/blog/moving-conda-environments

// 首先需要安装库conda-pack,可以下载whl再pip install
pip install conda-pack

// 将在线服务器配置好的环境打包
conda pack -n Vit_Adapter

// 上传到Vit_Adapter文件夹中并解压(先创建Vit_Adapter文件夹)
tar -xzf Vit_Adapter.tar.gz

// 激活虚拟环境
conda activate Vit_Adapter

2.4 数据集+预训练权重

2.4.1 ADEChallengeData2016数据集下载

下载好后的数据集需要上传到ViT-Adapter/segmentation/data/ade文件夹中并解压缩

链接:https://pan.baidu.com/s/1AceWkUsGo9r-2niRDZoIDA
提取码:vitd

2.4.2 预训练权重下载

下载好后的预训练模型上传到ViT-Adapter/segmentation/pretrained文件夹中

链接:https://pan.baidu.com/s/1IERrEakaA1LK_34A2IsJpQ
提取码:vitp

2.5 模型参数配置及训练

本文使用的配置文件路径为:segmentation/configs/ade20k/mask2former_beit_adapter_large_640_160k_ade20k_ms.py
在这里插入图片描
在这里可以根据自己服务器的配置设置samples_per_gpu的大小,我的服务器最高支持2

在调整好配置文件后,还需要对train.py的一些参数进行调整:
在这里插入图片描述
需要设置配置文件路径(config)、训练结果输出路径(work-dir)、预训练权重加载路径(load-from),这个路径根据自己项目的文件结构来就可以,基本上不会差太多。

在完成两个文件的调整后,就可以进行训练了:

// 开始训练命令(最后的数字1代表使用的GPU数量)
bash ./dist_train.sh configs/ade20k/mask2former_beit_adapter_large_640_160k_ade20k_ms.py 1

三、复现心得与问题总结

在Vit-Adapter模型的复现中博主遇到了很多问题,也是得到了很多大佬的指点,所以博主希望在这里记录一下以供日后学习参考。

3.1 MMCV

MMCV有两个版本:

  1. mmcv-full: 完整版,包含所有的特性以及丰富的开箱即用的 CUDA 算子。注意完整版本可能需要更长时间来编译。
  2. mmcv: 精简版,不包含 CUDA 算子但包含其余所有特性和功能,类似 MMCV 1.0 之前的版本。如果你不需要使用 CUDA 算子的话,精简版可以作为一个考虑选项。

由于MMCV需要和PyTorch版本和CUDA版本对应,所以直接使用pip的方式下载MMCV可能导致版本之间不匹配的问题。同时MMCV在更新2.0版本后,之前的某些方法可能被舍弃,导致如果模型中使用了这些方法会报错。我们可以通过访问MMCV官方文档来下载正确版本的MMCV,官方文档左下角可以切换不同MMCV版本的说明文档,这里以1.4.2版本举例。
MMCV官方文档链接:https://mmcv.readthedocs.io/zh-cn/v1.4.2/get_started/installation.html

文档中提供了更多的PyTorch和CUDA版本组合表:
在这里插入图片描述

比如在博主的服务器中使用的torch1.9和CUDA11.1,那么就需要安装对应的MMCV版本。

pip install mmcv-full==1.4.2 -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.9.0/index.html

3.2 MMDetection

MMDetection的安装需要一些依赖,具体的依赖如下:

依赖名称版本号
OSLinux/macOS/Windows
Python3.6以上
PyTorch1.3以上
CUDA9.2以上
GCC5以上
MMCV对应版本

由于MMDetection和MMCV的版本需要对应,所以不建议直接使用pip安装最新的版本。我们可以通过访问MMDetection官方文档来查看已经安装MMCV对应版本的MMDetection版本。同理,文档的左下角可以切换不同的版本,这里以2.22.0版本举例。
MMDet官方文档链接: https://mmdetection.readthedocs.io/zh-cn/v2.22.0/get_started.html

MMDetection 和 MMCV 版本兼容性如下,需要安装正确的 MMCV 版本以避免安装出现问题。
在这里插入图片描述
比如本文安装的MMCV版本是1.4.2,在表格中2.19.0版本以上都可以安装。

pip install mmdet==2.22.0

3.3 MMSegmentation

MMSegmentation 可以在 Linux, Windows 和 macOS 系统上运行,并且需要安装 Python 3.7+, CUDA 10.2+ 和 PyTorch 1.8+。同样,MMSegmentation 的安装需要与MMCV版本匹配。本节不再赘述,小伙伴们可以参考MMSegmentation 的官方文档寻找正确的版本。
MMSeg官方文档链接: https://mmsegmentation.readthedocs.io/zh-cn/0.x/faq.html

兼容的MMSegmentation和MMCV版本如下。请安装正确版本的MMCV以避免安装问题。
在这里插入图片描述

比如本文安装的是MMCV1.4.2版本,所以可以安装0.20.2以下的版本。

pip install mmsegmentation==0.20.2

3.4 MultiScaleDeformableAttention

       在2.3.1节中运行bash ./make.sh 脚本时可能会有部分小伙伴遇到如下问题:

ModuleNotFoundError: No module named 'MultiScaleDeformableAttention'

那么这个问题博主是这么解决的,解决方法仅供大家参考!

       博主出现这个问题的原因是因为没有安装CUDA的驱动,导致没有办法编译。有很多办法来查看自己的服务器是否安装了CUDA驱动,并且查看自己安装的CUDA驱动版本号。

// 查看CUDA驱动信息
nvcc -v

// 显示的CUDA驱动信息
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2021 NVIDIA Corporation
Built on Sun_Mar_21_19:15:46_PDT_2021
Cuda compilation tools, release 11.3, V11.3.58
Build cuda_11.3.r11.3/compiler.29745058_0

       这就表示服务器上安装了CUDA 11.3版本的驱动。如果想要下载对应的驱动版本的话,可以访问Nvidia官网下载自己GPU对应的驱动,最后安装到服务器上就可以了。需要注意的是,虚拟环境中所使用的CUDA版本需要低于已经安装的驱动版本,即本文使用的CUDA 11.1<安装的CUDA 11.3。
驱动的下载方法可以参考这篇博客https://blog.csdn.net/qq_44703886/article/details/112859392

版权声明:本文为CSDN博主「摇曳的树」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_44703886/article/details/112859392

最后希望这篇文章能够对各位小伙伴们有所帮助,预祝大家能够早日复现!

  • 26
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值