VisionMamba部署及seg魔改记录(linux)

发布于:2025-02-11 ⋅ 阅读:(65) ⋅ 点赞:(0)

一、部署

官方的部署指南:

conda create -n your_env_name python=3.10.13
pip install torch==2.1.1 torchvision==0.16.1 torchaudio==2.1.1 --index-url https://download.pytorch.org/whl/cu118
pip install -r vim/vim_requirements.txt

这三步问题不大,关键是后面两步,按照官方指南是肯定没法成功的

pip install -e causal_conv1d>=1.1.0
pip install -e mamba-1p1p1

这里的causal_conv1d不能直接安装,需要从Release v1.1.3.post1 · Dao-AILab/causal-conv1d

找到

causal_conv1d-1.1.3.post1+cu118torch2.1cxx11abiFALSE-cp310-cp310-linux_x86_64.whl

下载后直接pip install这个whl

然后进入官方包的mamba-1p1p1文件夹内,运行

pip install -e .

数据集ADEChallengeData2016_数据集-飞桨AI Studio星河社区

 然后运行的时候还会有以下错误:

1、No module named ‘mmcv._ext‘

这里vim官方给的mmcv是1.3没有和torch2.1适配的,修正方法是按照官方要求的pytorch和cuda环境,从openmmlab官网找到对应的mmcv

先pip uninstall mmcv

download.openmmlab.com/mmcv/dist/cu118/torch2.1/index.html

实际上能用的版本是../torch2.1.0/mmcv_full-1.7.2-cp310-cp310-manylinux1_x86_64.whl

也是下载后pip install即可

2、AttributeError: 'int' object has no attribute 'type'

本质上还是mmcv的版本问题,找到mmcv/parallel/_functions.py里参考这个修改代码bugfix get_stream · HarborYuan/mmcv_16@ad1a72f

3、

RuntimeError: Given groups=1, weight of size [192, 80, 16, 16], expected input[8, 3, 512, 512] to have 80 channels, but got 3 channels instead

官方seg里面的骨干网络写得有问题,缺少d_state参数

the issue about seg · Issue #115 · hustvl/Vim

4、加载预训练权重bugRuntimeError: EncoderDecoder: VisionMambaSeg: shape '[-1, 14, 14, 192]' is invalid for input of size 37824 · Issue #108 · hustvl/Vim

官方给的分类的预训练权重并不适配分割网络,解决方法只能是不用...

5、RuntimeError:which is output 0 of ReluBackward0

定位错误在mmcv_custom/apex_runner/optimizer.py的runner.outputs['loss'].backward()

可能是没安装apex的错误?

二、魔改 

核心结构是vim/models_mamba.py中的self.mixer,魔改目标是整体替换这个模块,搞明白这个模块的输入输出即可

输入hidden_states大小为(8,1024,192),我个人按transformer感觉是(bs,c,hw),但192也不是完全平方数,如果有大佬知道可以教我一下

输出也是(8,1024,192)

所以魔改模块也需要按这个输入输出保持一致,对于常见卷积模块的话需要调整一下通道数和长宽形式。


网站公告

今日签到

点亮在社区的每一天
去签到