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

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

下一个重要的事情是:一些依赖环境

我的依赖项如下:

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

很多博客上讲安装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++环境 会自己编译好

不要在意anaconda的环境名字。

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

安装pycocotools

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

链接:https://pan.baidu.com/s/1H9PJR21y6o-nwMEv-xx5aw
提取码:coco
从github下载SwinTransformer的源码(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 ArgumentParser

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


def 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 改为ade20k
    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()

直接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 直接注释

再次运行

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

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
扎眼的阳光的头像扎眼的阳光普通用户
上一篇 2022年3月27日 下午3:27
下一篇 2022年3月28日

相关推荐