赞
踩
看了网上许多windows10下的搭建教程,关于pytorch环境搭建和nms , DCNv2的编译较为粗略,对无基础的小伙伴非常不友好,花费了三天,终于成功运行demo.py。在此根据回忆记录搭建过程。
CenterNet项目源码下载
win10 + cuda10 + anaconda3 + pytorch1.2.0 + vs2017 + python3.6
安装教程可参考:Anaconda介绍、安装及使用教程
安装完成后,打开anaconda prompt,更换默认源为清华源,以便加快安装包的下载速度。
更换命令如下:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
conda config --set show_channel_urls yes
conda config --show-sources # 查看当前所有源
conda config --remove-key channels # 恢复默认源
为本次CenterNet项目创建项目同名虚拟环境Centernet,指定python版本3.6
conda create -n CenterNet python=3.6 #
activate CenterNet # 切换环境至CenterNet
conda env list # 查看环境列表
activate <env_name> # 切换环境
deactivate <env_name> # 退出环境
conda remove -n <env_name> -all # 删除虚拟环境
:后期编译nms 和 DCNv2时,配置了vs2017环境变量后,还是有关于vs2017的报错。
后来猜测是不是与本机的 python环境冲突,系统自动使用了本机安装的python去编译。
尝试成功的解决措施:删除系统环境变量path中有关本机python的环境配置,将anaconda conda.exe和虚拟环境python.exe目录加到系统环境变量path中去,使用CenterNet虚拟环境中的python去编译nms 和 DCNv2。环境变量配置如下图所示:
安装CUDA,为下一步安装pytorch做准备。
在安装之前,有必要了解一下pytorch,cuda,显卡,驱动四者之间的关系,判断自己的机器是否支持CUDA10.0,若支持,下载CUDA10.0。
安装验证:
注意:nvidia-smi的CUDA版本是指系统可以安装的最高版本,并不是真正的安装版本。
CUDA安装验证成功后,接下来可以去pytorch官网下载pytorch1.2.0啦,官网给出的运行命令如下(-c python意思是使用默认源安装,速度非常慢,在此使用清华源安装,所以安装时去掉-c python):
安装(使用anaconda promt切换至虚拟环境CenterNet):
conda install pytorch==1.2.0 torchvision==0.4.0 cudatoolkit=10.0
编写test.py测试安装结果:
import torch # 如正常则静默
a = torch.Tensor([1.]) # 如正常则静默
a.cuda() # 如正常则返回"tensor([ 1.], device='cuda:0')"
pytorch安装成功,接下来使用pip安装requirements.txt,有关pip的换源方法不在这里赘述。
安装(使用anaconda promt切换至虚拟环境CenterNet):
pip install -r requirements.txt
当我以为整个虚拟环境的搭建成功一大半的时候,这里我又又踩坑了,pip安装老是报错,并且还使用了本地的python环境和pip。
使用以下命令更新conda环境中的pip版本,成功解决问题:
python -m pip install --upgrade pip
第二次在笔记本搭建时,按照踩坑2,我先更新了pip,结果又导致pip cannot import name scheme key。
解决办法:强制重新安装pip。
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py --force-reinstall
python3.6可能会提示网址不对,根据提示修改网址重新curl即可
至此,经过有又又又踩坑,项目的虚拟环境可算是搭建好了,尤其要注意conda环境与本地python环境的隔离。以上安装操作都要在conda虚拟环境CenterNet下进行。使用conda list查看下当前环境的安装情况:
这一步至关重要,决定后两个文件是否编译成功。可以先去看第六步:编译 nms 了解为什么要这样配置。
下载Visual Studio 2017
要勾引C++与python开发安装
去安装目录下找到cl.exe文件的位置,加入系统环境变量path中
按照网上的教程,编译nms
cd CenterNet\src\lib\external
python setup.py build_ext --inplace
如果编译有问题的话,需要注释setup.py里面的这句代码
#extra_compile_args=["-Wno-cpp", "-Wno-unused-function"]
会一遍编译成功吗?当然不会!!!执行结果惨哭宝宝,收获如下踩坑4,5,6,7,8。
提示:看完所有踩坑再去一次性安装配置VS2017,这一步简直太重要了!!!
这一步和下一步编译DCNv2无需在anaconda prompt CenterNet环境里运行,参照踩坑1,设置好python环境变量,cd CenterNet\src\lib\external,用cmd直接运行编译命令。至于为什么,我也不知道,反正我是这样做成功的。
问题:没有编译器,不能编译
解决办法:安装VS2017
问题:安装完VS2017,找不到编译器位置或者出现有关cl.exe的错误
解决办法:配置环境变量
问题:报错Unable to find vcvarsall.bat
解决办法:在安装时勾引安装python开发环境
问题:报错LINK : fatal error LNK1158: 无法运行“rc.exe”
解决办法:解决无法运行“rc.exe”
以上踩坑5,6,7解决过程参照五:安装Visual Studio 2017。
先删除自带的DCNv2,重新clone一份新的
cd CenterNet\src\lib\models\networks
rm -rf DCNv2
git clone https://github.com/CharlesShang/DCNv2
cd DCNv2
网上教程还需修改一行代码,现在DCNv2作者好像修复了这个问题,已经把代码改过了,不需要再修改了,直接编译。
强调:同踩坑4,注意使用cmd运行
python setup.py build develop
cd CenterNet/src
python demo.py ctdet --demo ../images/17790319373_bd19b24cfc_k.jpg --load_model ../models/ctdet_coco_dla_2x.pth --debug 2
python demo.py multi_pose --demo ../images/17790319373_bd19b24cfc_k.jpg --load_model ../models/multi_pose_dla_3x.pth --debug 2
运行过程中会在线下载ctdet_coco_dla_2x.pth,multi_pose_dla_3x.pth文件,可能会出现HTTP request请求超时报错。
解决办法:事先下载好以上两个文件,放入项目models文件夹下
若已经将文件下载至本地后,运行demo.py还是会在线下载模型,注释pose_dla_dcn文件中的第313,314行代码:
demo.py运行成功:
路漫漫其修远,搞了三天,总算是把demo.py跑通了,接下来开始下一步训练数据啦~~~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。