Mask DINO官方是建议在Linux系统中配置他家网络的,但win10也不是不可以。以下为我的实践结果:
1.确认版本
首先通过命令行输入
nvidia-smi
确定自己显卡当前cuda的版本,我的显卡为3090,当前cuda版本为12.2,可以适配低于该版本的cuda工具,由于Mask DINO是基于Detectron2的,需要先安装detectron2,由于detectron2已经被放弃不再更新,所以新版本pytorch可能存在问题。根据这两者的要求,最终我选择安装版本如下:
pytorch:1.10.1
torchvision:0.11.2
torchaudio:0.10.1
这一步确实坑,有些版本只适配Linux,win10无法pip,折腾了我一天的时间反复试验。‘
2.配置激活虚拟环境
安装好anaconda后输入:
conda create -n maskdino python=3.9
conda activate maskdino
这里推荐使用python 3.9
3.pytorch的安装
激活进入虚拟环境后输入(可能需要更新pip和conda):
conda install pytorch==1.10.1 torchvision==0.11.2 torchaudio==0.10.1 cudatoolkit=11.3 -c pytorch -c conda-forge
安装对应版本的pytorch三件套。如果安装失败,可以试试换清华源/上科技,实在不行可以下载到本地进行安装。
4.detectron2的下载和安装
detectron2下载完成后的安装参考链接,期间会安装几十个库,可能会出现连接超时的情况,多重复运行setup.py即可,如果实在无法拉取到资源,本地安装对应版本亦可。
如果报错“nvcc fatal : nvcc cannot find a supported version of Microsoft Visual Studio.”说明缺失。cuda工具11.3需要的VS2017-2019支持,我下载vs2019社区版解压缩后安装,选择自定义安装完成后重启电脑即可解决报错。
detectron2完成安装后,于根目录创建img和model文件夹,分别存放测试图片和模型权重(模型权重在model zoo下载),在项目根目录命令行可以用以下代码做测试:
python .\demo\demo.py --config-file .\configs\COCO-InstanceSegmentation\mask_rcnn_X_101_32x8d_FPN_3x.yaml --input .\img\1.jpg --output .\img\test.jpg --opts MODEL.WEIGHTS .\model\model_final_2d9806.pkl
具体其他功能可通过
python .\demo\demo.py -h
自行查看。
5.Mask DINO的下载和安装
Mask DINO下载完成后根据官方安装文档参考,需要把requirements.txt中的库全部安装完成,注意有些可能有版本冲突需要协调。我使用的版本如下:
cython==0.29.36
scipy==1.11.1
shapely==2.0.1
timm==0.9.2
h5py==3.9.0
submitit==1.4.5
scikit-image==0.21.0
opencv-python==4.8.0.74
随后在命令行输入:
cd maskdino/modeling/pixel_decoder/ops
python setup.py build install
完成Mask DINO的安装。 安装完成后于根目录创建img和weights文件夹,分别存放测试图片和模型权重(模型权重下载),在项目根目录命令行可以用以下代码做测试:
python .\demo\demo.py --config-file .\configs\coco\instance-segmentation\maskdino_R50_bs16_50ep_3s.yaml --input .\img\1.jpg --output .\img\2.jpg --opts MODEL.WEIGHTS .\weights\maskdino_r50_50ep_300q_hid1024_3sd1_instance_maskenhanced_mask46.1ap_box51.5ap.pth
其他功能说明类似detectron2,不赘述。