Swin Transformer环境配置的一些问题

本文详细描述了作者在配置SwinTransformer环境过程中遇到的ModuleNotFoundError,涉及到了CUDA版本、VS2019安装、环境变量配置以及mmcv库的安装和版本选择。最后提供了解决`mmcv._ext`模块未找到问题的方法和建议。
摘要由CSDN通过智能技术生成

Swin Transformer环境配置的一些问题,主要是ModuleNotFoundError: No module named ‘mmcv._ext’

Swin Transformer环境配置的一些问题

前段时间进行了swin Transformer环境的搭建,我是基于分割的,但是大差不差

Windows10配置流程

参考AI浩博主的文章:
链接: AI浩.
文章基于ADE2016做处理,我只配环境,要实战去看这个博主,
链接: 代码地址.

下载完代码直接在pycharm中打开(最好是管理员模式,这样能避免很多奇奇怪怪的bug)
创建新环境:
在这里插入图片描述
这里网上比较多,就不多赘述了,记得装cuda这个环境配置可以参考b站up小土堆,自己搜就可以了

检查cuda版本

python -c 'import torch;print(torch.__version__)'

我的结果如下:
在这里插入图片描述

配置编译器(需要vs2019版本,更高版本的不可以)

总结一下,要下vs2019,gcc,git,cmake(我只说第一个vs2019,其他一样的操作,后边三个我不知道是不是刚需,但是很好处理教程很多直接搜就行,环境变量配置完记得重启一下电脑,这玩意不重启不更新)

下载过程参考(建议按默认路径下c盘,因为下d盘我找不到对应路径了):
链接: VS2019下载.

下载完需要配置环境变量:
右键我的电脑,点属性出现这个界面点高级系统设置:

在这里插入图片描述

然后环境变量:

在这里插入图片描述

在系统变量找到PATH点编辑,新建系统变量就好了,变量地址填下边的:

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64

14.29.30133这个文件夹可能有点不一样,但是都是一串数字,最好自己找,不要复制
这些搞完准备工作基本ok,剩下的在pytorch的cmd中直接跑就行

安装必要的环境(这是我尝试的对我有效的)

pip install cython matplotlib opencv-python
pip install -U openmim
mim install mmcv-full==1.7.2
pip install mmsegmentation

虽然swin Transformer要求上是mmcv<=1.4.0版本,我卡了好几天一直是寄的,下了1.7.2的就好了
缺其他的package直接自己手动 pip 就 ok 了。

我最后的环境(我的torch是2.1.2版本(如果是gpu的记得下对应的cuda版本,我的是cuda118的最好能配置在环境变量,前边提到的up主 pytorch小土堆 里边会讲),torchvision的对应版本是0.16.2):
在这里插入图片描述
在这里插入图片描述

下载 Swin-T 预训练模型

链接如下:https://github.com/SwinTransformer/storage/releases/download/v1.0.1/upernet_swin_tiny_patch4_window7_512x512.pth
也可以直接到官网去下其他版本的看自己需求,直接搜就完事,下载完后复制到项目的根目录。

修改./demo/image_demo.py

from argparse import ArgumentParser

from mmseg.apis import inference_segmentor, init_segmentor, show_result_pyplot
from mmseg.core.evaluation import get_palette


def main():
    parser = ArgumentParser()
    parser.add_argument('--img', default='demo.png', help='Image file')
    parser.add_argument('--config', default='../configs/swin/upernet_swin_tiny_patch4_window7_512x512_160k_ade20k.py', help='Config file')
    parser.add_argument('--checkpoint', default='../upernet_swin_tiny_patch4_window7_512x512.pth', help='Checkpoint file')
    parser.add_argument(
        '--device', default='cuda:0', help='Device used for inference')
    parser.add_argument(
        '--palette',
        default='ade20k',
        help='Color palette used for segmentation map')
    args = parser.parse_args()

    # build the model from a config file and a checkpoint file
    model = init_segmentor(args.config, args.checkpoint, device=args.device)
    # test a single image
    result = inference_segmentor(model, args.img)
    # show the results
    show_result_pyplot(model, args.img, result, get_palette(args.palette))


if __name__ == '__main__':
    main()

最后结果:
在这里插入图片描述
到这里环境基本没问题,我运行有警告:
在这里插入图片描述
查了相关资料是因为MMCV v2.0.0 版本的一些变更和即将过时的功能,以及 Torch 的一些内部更改。不过,程序没有报错并且成功加载了本地路径的模型文件,应该问题不大。

ModuleNotFoundError: No module named 'mmcv._ext’问题解决

大家可以先试试,不行去论坛看看有没有:
https://github.com/open-mmlab/mmdetection/issues/3271

网上的处理方法有2种:
1、按照torch和cuda版本选择安装(这个最多,但是我没用)

pip uninstall mmcv
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.8.0/index.html

{mmcv_version}改成你需要下的版本,cu111/torch1.8.0对应你的cuda和torch版本,pip list自己看一下,也可以去官网看:
链接:https://github.com/open-mmlab/mmcv

2、按照源码编译

详细可以参考 霜frosty的文章Win10环境下(cuda11.2)安装mmcv和mmdetection

不过我的是精简版了

git clone https://github.com/open-mmlab/mmcv.git
cd mmcv
pip install -r requirements/optional.txt
python setup.py build_ext
python setup.py develop

最后两个运行setup.py文件的都运行时间挺长,要构建代码,如果你运行时间太短,多半是寄了,但是这玩意很玄学,运气好一次就好,运气不好跟我一样卡个一两天

可以运行这段代码验证是否成功:

python .dev_scripts/check_installation.py

我成功的办法和上边流程中一样,来找办法的可以直接试试:
在这里插入图片描述

pip install -U openmim
mim install mmcv-full==1.7.2
pip install mmsegmentation

大功告成,卡了一两天的问题就这样解决了,源码编译也试了,但是寄了

2024/3/19日晚7点补充

发现忘记写apex的安装流程了,补充一下。

简单介绍一下,Apex模块是一个用于在PyTorch中实现混合精度训练和分布式训练的工具包。它提供了一些优化器和调度器,以及一些用于减少精度损失的函数。Apex模块在使用NVIDIA的混合精度训练技术时非常有用,该技术可以加速训练过程并减少显存消耗。(咱们一般也是单显卡先跑着玩,我只是多下了不过应该不影响)

apex下载其实和那个从源码编译mmcv和mmdet很像,跑下边代码就行(懒得话直接pip install apex但是经验告诉我用的时候可能会报错):

git clone https://github.com/NVIDIA/apex.git
cd apex
python setup.py install

看了几篇博客总结了一下,要是安不上第三局话可以换成下边的:
1、pip install -v --no-cache-dir ./
2、python setup.py install --cpp_ext --cuda_ext
3、python3 setup.py install

2024/3/20日上午9点补充

昨晚试着跑train函数结果寄了,主要是版本问题,报错问题是:

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

然后我在github上找到了对应的issue:
AttributeError: ‘int’ object has no attribute ‘type’
对应找到的办法就是:
在这里插入图片描述
不过要注意这个版本对应的python版本不能太高,我用的3.8,重新用conda创建的环境,顺便算是学习了一下,要看有没有对于版本你的torch可以去下边链接看torch_stable
最后放上结果(正在跑还没跑完,跑完看看效果):
在这里插入图片描述

  • 21
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值