Win10 RTX30系列卡安装VS2019+Python3.7+Pytorch1.8.0+Detectron2.0.4.0+CUDA111+CUDNN8.0.5过程

前记

tf1.10或者pytorch1.5.0+cuda9+3070测试翻车,初始化时间长,inference结果异常;更新cuda11+tf2.3或者pytorch1.8.0+3070 测试OK,经查询是cuda版本10.0不能再RTX30系列上跑,更换版本吧。坑了我两天,总是会卡在那里,不动,过了很久好了,测过去了,但是这样是无法使用的
is_available()是TRUE,但是转cuda的时候会卡住很久,差不多会有十几分钟,之后也会好,然后再调取cuda()函数,就会比较快了,无法查找到原因,后来查找到了原因。
Win10 RTX30系列卡安装VS2019+Python3.7+Pytorch1.8.0+Detectron2.0.4.0+CUDA111+CUDNN8.0.5过程_第1张图片
原因:RTX30系列显卡是Nvidia在2020年10月份发布的最新型号,很多AI库都不支持,主要原因是RTX30只支持CUDA11.1版本,而大多数AI平台对CUDA11.1都还没有支持。

安装过程

阶段1:CUDA11.1安装

第一步:下载地址

https://developer.nvidia.com/cuda-11.1.0-download-archive?target_os=Windows&target_arch=x86_64&target_version=10&target_type=exelocal

第二步:安装

CUDA11.1安装时,不需要安装driver;因为一般都已经有了驱动了,我是之前安装过466的NVIDIA显卡驱动了,其实原厂也自带;

第三步:确认环境变量

安装完之后查看和配置环境变量(系统默认已经添加好了,无需手动配置):
Win10 RTX30系列卡安装VS2019+Python3.7+Pytorch1.8.0+Detectron2.0.4.0+CUDA111+CUDNN8.0.5过程_第2张图片
Win10 RTX30系列卡安装VS2019+Python3.7+Pytorch1.8.0+Detectron2.0.4.0+CUDA111+CUDNN8.0.5过程_第3张图片

第四步:安装成功验证

nvcc -V

Win10 RTX30系列卡安装VS2019+Python3.7+Pytorch1.8.0+Detectron2.0.4.0+CUDA111+CUDNN8.0.5过程_第4张图片

阶段2:CUDNN8.0.5

第一步:下载地址

https://developer.nvidia.com/rdp/cudnn-archive

(此处需要登录账号,才可以下载,建议注册一个。)

第二步:安装

安装CUDNN,就是复制文件
解压文件夹,将解压后的文件夹下的文件拷贝到cuda安装目录下,与之相对应的文件夹下。
Win10 RTX30系列卡安装VS2019+Python3.7+Pytorch1.8.0+Detectron2.0.4.0+CUDA111+CUDNN8.0.5过程_第5张图片
注意点:一台电脑可以有多个CUDA环境,也可以驱动版本和CUDA版本不对应,并不影响使用;但是配置全局环境变量路径前后关系会对真实使用的CUDA版本有影响,要把需要用的CUDA版本的环境变量路径往前提。

阶段3:Anaconda与虚拟环境构建

第一步:Anaconda的版本

Anaconda3-2019.10-Windows-x86_64.exe,该版本是python3.7的,这个不做限制。

第二步:conda虚拟环境创建前准备

之所以用conda虚拟环境,是因为后期会有不同版本的环境要在一起用;

这里总结了conda和PIP的几种常用技巧
pip install 指定版本

pip install scikit-learn==0.18.0

pip install 指定源

pip install numpy -i  http://pypi.douban.com/simple/ 

pip install 本地文件:略
conda install 指定版本

conda install scikit-learn=0.18.0

conda install 本地文件

conda install --use-local pytorch-1.2.0-py3.5_cuda100_cudnn7_1.tar.bz2

conda install 指定源

希望从默认通道以外通道安装,指定通道的方法是 conda install -c channel_name package_name;

conda 增加源

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/win-64/ 

第三步:conda虚拟环境

conda create -n detectron2_040 python=3.7
conda init
conda activate detectron2_011

虚拟环境会形成一个文件夹
Win10 RTX30系列卡安装VS2019+Python3.7+Pytorch1.8.0+Detectron2.0.4.0+CUDA111+CUDNN8.0.5过程_第6张图片

阶段4:VS2019下载地址

下载并安装 VS2019

https://docs.microsoft.com/en-us/answers/questions/136595/error-microsoft-visual-c-140-or-greater-is-require.html

下载并安装 visual-cpp-build-tools

https://visualstudio.microsoft.com/zh-hant/visual-cpp-build-tools/

阶段5:Pytorch环境安装

第一步 安装语句

根据自己的需求来选择,查找安装语句:
当前版本:

https://pytorch.org/get-started/locally/

历史版本:

https://pytorch.org/get-started/previous-versions/

得到安装语句,以下两句均可以,但是以下两句存在的问题是下载速度慢。

conda install pytorch=1.8.0 torchvision==0.9.0 cudatoolkit=11.1 -c pytorch
conda install pytorch==1.8.0 torchvision==0.9.0 torchaudio==0.8.0 cudatoolkit=11.1 -c pytorch -c conda-forge

-c pytorch -c conda-forge这些都是附加库、指定源的名字;

如果设置了清华源,以下这句会快很多

conda install pytorch==1.8.0 torchvision==0.9.0 torchaudio==0.8.0 cudatoolkit=11.1

但是,pytorch和cudatoolkit安装包很大,国内网络速度不行,建议到网络条件好的情况下安装。

第三步 如果网络条件确实不行,离线下载后再安装(开始觉得这个方法好,后来觉得这种方法不如回家下载,回家网速好)。

离线查询地址,所有Pytorch包的地址:https://download.pytorch.org/whl/torch_stable.html,国内下载慢,可以手工下载;
可以通过关键词查找,1.5.0%2Bcu111
安装后得到的结果:
在这里插入图片描述
综上,这个过程中,会安装很多的依赖包,这也是用conda的优势。

问题1:关于已经安装了CUDA,为何还要在安装CUDAToolkit.whl?

因为这CUDA和CUDAToolkit.whl2个文件都很大,下载起来非常费劲,所以引发了这个问题的思考。别人的解释(https://www.cnblogs.com/yhjoker/p/10972795.html)。

CUDAToolkit.whl与通过 Nvidia 官方 CUDA Toolkit 是不一样的。Nvidia 官方提供的 CUDA Toolkit 是一个完整的工具安装包, Nvidia 驱动程序、开发 CUDA 程序。使用 Nvidia 官网提供的 CUDA Toolkit 可以安装开发 CUDA 程序所需的工具,包括 CUDA 程序的编译器、IDE、调试器等。但对于 Pytorch 深度学习框架而言,其在大多数需要使用 GPU 的情况中只需要使用 CUDA 的动态链接库支持程序的运行( Pytorch 本身与 CUDA 相关的部分是提前编译好的 ),就像常见的可执行程序一样,不需要重新进行编译过程,只需要其所依赖的动态链接库存在即可正常运行。Anaconda 在安装 Pytorch 等会使用到 CUDA 的框架时,会自动为用户安装 cudatoolkit,其主要包含应用程序在使用 CUDA 相关的功能时所依赖的动态链接库。在安装了CUDAToolkit.whl后,系统上存在与当前的 CUDAToolkit.whl所兼容的 Nvidia 驱动,则程序可直接运行,而不需要安装完整的 Nvidia 官方提供的 CUDA Toolkit
那么是否真的是这样呢?
我做了一个实验,我将path路径中的CUDA11.1的路径下移了,然后系统中可以检测到的CUDA版本为10.1的了,这是之前安装的。
Win10 RTX30系列卡安装VS2019+Python3.7+Pytorch1.8.0+Detectron2.0.4.0+CUDA111+CUDNN8.0.5过程_第7张图片
然后,再执行detectron2的检测代码,仍可以正常检测。
Win10 RTX30系列卡安装VS2019+Python3.7+Pytorch1.8.0+Detectron2.0.4.0+CUDA111+CUDNN8.0.5过程_第8张图片
结论,其实转Pytorch,很简单,在网络条件好的情况下只需要几行代码,CUDA和CUDNN都是不需要的。

阶段6:其他依赖包安装

第一步 通用依赖包

pip install cython opencv-python pillow  matplotlib termcolor cloudpickle tabulate tensorboard termcolor tqdm yacs mock fvcore pydot wheel futrue
pip install opencv-python -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
pip3 install python-dateutil
pip install pywin32==223 (注释:pip install pywin32只会安装一个很小的文件1.7KB的,不对;如果用228会出现 import win32file  ImportError: DLL load failed: 找不到指定的程序。  问题原因224、225新版本发布的有问题,回退到223版本即可)

在这里插入图片描述pywin32终于好了在这里插入图片描述

第二步 cocotools

因为pycocotools不支持windows,但是有大神已经修改出了windows版本,https://github.com/philferriere/cocoapi。
执行

pip install git+https://github.com/philferriere/cocoapi.git#subdirectory=PythonAPI

如果以上方法不能通过

可以直接去git包安装包下载下来
git clone https://github.com/philferriere/cocoapi.git
然后进入到文件夹之下:
 python setup.py build_ext install

第三步 安装 fvcore

pip install -U 'git+https://github.com/facebookresearch/fvcore.git' 

如果以上方法不能通过

下载文件
git clone https://github.com/facebookresearch/fvcore.git
然后本地编译
python setup.py build --force develop

阶段7:Detectron2 0.4.0代码获取

git clone -b v0.4.0 https://github.com/facebookresearch/detectron2.git

需要注意tagWin10 RTX30系列卡安装VS2019+Python3.7+Pytorch1.8.0+Detectron2.0.4.0+CUDA111+CUDNN8.0.5过程_第9张图片

阶段8:各类文件的修改

这是之前detectron2 0.1.3 中别人给出的修改建议,至于0.4.0中是否仍完全需要,还没逐个确认,我的方法是报错了就查询。

这里做了修改
5、D:\ProgramData\Anaconda3\envs\detectron2\Lib\site-packages\torch\utils\cpp_extension.py
match = re.search(r'(\d+)\.(\d+)\.(\d+)', compiler_info.decode("utf8","ignore").strip())

阶段9:Detectron2 0.4.0代码编译

python setup.py build develop

报错处理,其实会出现多处报错的

找不到cl.exe文件
这是用于C++编译的工具;
如果找不到,就需要重新安装一下VS2019,补充部分插件

Win10 RTX30系列卡安装VS2019+Python3.7+Pytorch1.8.0+Detectron2.0.4.0+CUDA111+CUDNN8.0.5过程_第10张图片
Win10 RTX30系列卡安装VS2019+Python3.7+Pytorch1.8.0+Detectron2.0.4.0+CUDA111+CUDNN8.0.5过程_第11张图片
补充安装后,就有了build文件
Win10 RTX30系列卡安装VS2019+Python3.7+Pytorch1.8.0+Detectron2.0.4.0+CUDA111+CUDNN8.0.5过程_第12张图片

python setup.py clean --all 
python setup.py build --force develop

希望卸载掉之前安装的detectron2的package,需要用pip uninstall
Win10 RTX30系列卡安装VS2019+Python3.7+Pytorch1.8.0+Detectron2.0.4.0+CUDA111+CUDNN8.0.5过程_第13张图片

这些报错让人心烦意乱,也是为何大家都不推荐使用windows来做DL的关键原因。

阶段8:最终结果

运行成功的页面

可以运行目标检测、实例分割、关键点检测、全景分割
Win10 RTX30系列卡安装VS2019+Python3.7+Pytorch1.8.0+Detectron2.0.4.0+CUDA111+CUDNN8.0.5过程_第14张图片
需要提前下载好pkl的model文件。

目标检测

python demo/demo.py   --config-file configs/COCO-Detection/faster_rcnn_R_50_FPN_3x.yaml --input image/test.jpg --output image/test_result.jpg  --opts MODEL.WEIGHTS 'model/model_final_280758.pkl'

实例分割

python demo/demo.py  --config-file configs/COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml --input image/test1.jpg --output image/test1_result.jpg --opts MODEL.WEIGHTS 'model/model_final_f10217.pkl'

关键点检测

python demo/demo.py  --config-file configs/COCO-Keypoints/keypoint_rcnn_R_50_FPN_3x.yaml --input image/test2.jpg --output image/test2_result.jpg --opts MODEL.WEIGHTS 'model/model_final_a6e10b.pkl'

全景分割

python demo/demo.py  --config-file configs/COCO-PanopticSegmentation/panoptic_fpn_R_101_3x.yaml --input image/test3.jpg --output image/test3_result.jpg --opts MODEL.WEIGHTS 'model/model_final_cafdb1.pkl'

Win10 RTX30系列卡安装VS2019+Python3.7+Pytorch1.8.0+Detectron2.0.4.0+CUDA111+CUDNN8.0.5过程_第15张图片

后记

Win10上实现了Detectron2环境,对于接下来的测试实验是非常有意义的。
总结整个流程,以上有些步骤是不需要做的,比如CUDA的安装。可以按照下步骤来做。
Win10 RTX30系列卡安装VS2019+Python3.7+Pytorch1.8.0+Detectron2.0.4.0+CUDA111+CUDNN8.0.5过程_第16张图片
也给出基本思路的完整代码(这是重点,通篇其实只用这里就可以了,但是如果第一次安装,建议把全部的看一遍,因为第一次安装时无法完全理解这些句子报错时该怎么办的)

基本思路:
(1)安装好vs2019、anaconda2019;
(2)pytorch:conda install pytorch==1.8.0 torchvision==0.9.0 torchaudio==0.8.0 cudatoolkit=11.1 -c pytorch -c conda-forge
(3)pip install cython opencv-python pillow  matplotlib termcolor cloudpickle tabulate tensorboard termcolor tqdm yacs mock fvcore pydot wheel futruepip install opencv-python -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.compip3 install python-dateutilpip install pywin32==223 
(4)部分git的包需要离线编译(国内网络条件会有影响);git clone https://github.com/philferriere/cocoapi.gitpython setup.py build_ext installgit clone https://github.com/facebookresearch/fvcore.gitpython setup.py build --force develop
(5)detectron2git clone -b v0.4.0 https://github.com/facebookresearch/detectron2.gitpython setup.py build develop
(6)detectron2预测python demo/demo.py   --config-file configs/COCO-Detection/faster_rcnn_R_50_FPN_3x.yaml --input image/test.jpg --output image/test_result.jpg  --opts MODEL.WEIGHTS 'model/model_final_280758.pkl'

其他不相关的安装语句

pip install pymongo -i https://pipy.douban.com/simple
快速安装
pip install 插件名 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
pip install opencv-python -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
pip install --upgrade numpy

power shell 记录日志 Start-Transcript Stop-Transcript;

参考地址

学习blog:https://blog.csdn.net/haiyangyunbao813/article/details/115106759
学习视频:https://www.bilibili.com/video/BV1jZ4y1W7Nb?from=search&seid=10032041260057596327

你可能感兴趣的:(Python,Data,Science,pytorch,detectron2,windows10,rtx3070,rtx3080)