当前位置: 代码迷 >> 综合 >> windows下跑通transformer 实现图像分割,3060基于cuda11.3+torch1.10+torchvision1.11
  详细解决方案

windows下跑通transformer 实现图像分割,3060基于cuda11.3+torch1.10+torchvision1.11

热度:91   发布时间:2023-12-15 00:31:17.0

首先环境部署cuda11.3 和torch1.10 vs2019(默认安装即可)这些不再赘述。

接下来比较重要的是:一些依赖的环境

本人的依赖环境如下:

很多博客上讲安装mmcv1.3.3 本人亲测 会报错

MMCV==1.3.13 is used but incompatible. Please install mmcv>=[1, 1, 4], <=[1,3, 0】

所以直接pip install mmcv-full==1.3.0即可 前提是安装好vs2019有c++环境 会自己编译好

直接pip mmcv-full==1.3.0 报错的小伙伴 先pip install pytest-runner

不要在意anaconda的环境名字。

安装pycocotools

附上百度,下载好后直接pip install xxxx.tar:

链接:https://pan.baidu.com/s/1H9PJR21y6o-nwMEv-xx5aw 
提取码:coco 
从github下载Swin Transformer的源码(https://github.com/SwinTransformer/Swin-Transformer-Semantic-Segmentation)

下载完成后 pip install -r requirements.txt 不管有没有新安装包,每下都去pip 一下以防万一

下载预训练模型 三个模型都在里面

链接:https://pan.baidu.com/s/14NHo8RjPALf7-iHqixIa_A 
提取码:swin 

修改下参数 已经备注好要修改的地方

from argparse import ArgumentParserfrom mmseg.apis import inference_segmentor, init_segmentor, show_result_pyplot
from mmseg.core.evaluation import get_palettedef main():parser = ArgumentParser()#修改1:图像路径parser.add_argument('--img', default='demo.png', help='Image file')#修改2 初始化模型py文件parser.add_argument('--config', default='../configs/swin/upernet_swin_base_patch4_window7_512x512_160k_ade20k.py', help='Config file')#修改3 模型pth文件parser.add_argument('--checkpoint', default='../upernet_swin_base_patch4_window7_512x512.pth', help='Checkpoint file')parser.add_argument('--device', default='cuda:0', help='Device used for inference')#修改4 default 改为ade20kparser.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 filemodel = init_segmentor(args.config, args.checkpoint, device=args.device)# test a single imageresult = inference_segmentor(model, args.img)# show the resultsshow_result_pyplot(model, args.img, result, get_palette(args.palette))if __name__ == '__main__':main()

直接run  demo下的image_demo.py

会报错 _specify_ddp_gpu_num

EncoderDecoder: UPerHead: 'super' object has no attribute '_specify_ddp_gpu_num'

是因为1.10版本的torch 没有_specify_ddp_gpu_num方法 被修改了

查阅[Fix] Fix SyncBN build in PyTorch 1.9 by xvjiarui · Pull Request #1138 · open-mmlab/mmcv · GitHub

因此找到parrots_wrapper.py文件:

anaconda3\envs\torch1.8\Lib\site-packages\mmcv\utils\parrots_wrapper.py第85-87行直接注释

anaconda3\envs\torch1.8\Lib\site-packages\mmcv\cnn\bricks\norm.py 第109-110 直接注释

再次运行

  相关解决方案