Windows中部署centernet环境会有很多踩坑点。最保险的办法是按照GitHub上的环境进行部署。但是由于torch版本太低,我想提高torch版本,那么将会有很多问题的出现,下面将介绍如何部署环境。
CenterNet项目代码: https://github.com/xingyizhou/CenterNet.git
Windows10+torch1.1+cuda10.0+torchvision0.3.0+VS2017
1.先创建虚拟环境
conda create --name pytorch1.1 python=3.6
2.进入创建的虚拟环境
activate pytorch1.1
3.进入pytorch的官网查找torch对应的cudn的版本的命令
https://pytorch.org/get-started/previous-versions/ (这是pytorch官网地址)
下面这个代码一定不要复制后面的 -c 部分,因为有-c默认是从官方网址下载的
conda install pytorch==1.1.0 torchvision==0.3.0 cudatoolkit=10.0
注:(踩的坑,大坑)由于centernet的DCNv2需要torch0.4的版本,若高于这个版本则需要自己进行编译,所以自己电脑上一定要下载VS2017。torch的版本高于1.4则编译不成功,但是1.4版本虽然编译成功,运行时会报找不到模块的错误。最终决定使用torch1.1版本。
4.安装相匹配的cudnn
conda install cudnn=7.6
5.安装centernet需要的相关包
pip install -r requirements.txt
6.下载DCNv2替换文件夹中原本的DCNv2
https://github.com/CharlesShang/DCNv2
替换完成后要做以下修改:
修改src/cuda/下的dcn_v2_cuda.cu文件:
//extern THCState *state;
THCState *state = at::globalContext().lazyInitCUDA();
- 编译DCNv2
cd C:\CenterNet\src\lib\models\networks\DCNv2
python setup.py build develop
然后会显示编译成功。
7. 编译NMS
- 进入到
cd C:\CenterNet\src\lib\external
- 执行以下代码,编译NMS
python setup.py build_ext --inplace
- 注意:
若出现错误:cl: 命令行 error D8021 :无效的数值参数“/Wno-cpp”
注释掉C:\CenterNet\src\lib\external
中setup.py
line10
# extra_compile_args=["-Wno-cpp", "-Wno-unused-function"]
- 再次编译,成功!
8. 运行demo.py
- 进入到
cd C:\CenterNet\src\
- 运行
python demo.py ctdet --demo ../images/ --load_model ../models/ctdet_coco_dla_2x.pth
补充:查看conda支持的cuda和cudnn版本
打开Anaconda Prompt,输入下列命令查看conda目前支持的cudatoolkit版本。(cudatoolkit即cuda)。
conda search cudatoolkit --info
输入下列命令查看conda目前支持的cudnn版本。
conda search cudnn --info