最近在复现CenterNet时,碰到很多问题,花费了两天多的时间,但最后都一一解决了
1.环境
Window10+VS2019+CUDA11.1+Python3.8+Pytorch1.8.0+Anaconda3+Pycharm
显卡:GTX2060;
2.论文
论文原文:https://arxiv.org/pdf/1904.07850.pdf(Objects as Points)
代码:https://github.com/xingyizhou/CenterNet
下面所有的命令行都是在Pcharm中的Terminal中进行,主要执行的文件的环境就好
anaconda安装
conda create -n CenterNet python=3.6 #
activate CenterNet # 切换环境至CenterNet
这里安装好anaconda3+python3.8后,主要查看是否配置好环境变量。
在选择CUDA时一定要考虑好Pytorch、CUDA、驱动和显卡之间的版本关系,
CUDA安装及配置
在CenterNet环境中
conda install pytorch==1.8.0 torchvision==0.9.0
安装好后,运行下列代码,查看安装是否完成
import torch
print(torch.version.cuda)
print(torch.__version__)
print(torch.cuda.is_available()) #查看cuda是否可用
print(torch.cuda.device_count()) #查看可行的cuda数目
在CenterNet环境中
pip install -r requirements.txt
VS2019安装及配置
这个教程只看安装部分就好,安装好要查看是否配置好环境变量
cd CenterNet\src\lib\external
python setup.py build_ext --inplace
这里有问题出现:在编译NMS时,**cl: 命令行error D8021 :无效的数值参数“/Wno-cpp”请看踩坑2
先在文件夹中删除自带的DCNv2,在下面这个文件夹下,直接删除就好,然后在github上下载,不能克隆,否则会出现版本错误。不能使用一下命令行,切记,要下载替换!!!
在这个网址中找到pytoch匹配的版本:
https://github.com/lbin/DCNv2.git
下载在下面文件中,替换DCNv2
CenterNet\src\lib\models\network
cd CenterNet\src\lib\models\networks
git clone https://github.com/lbin/DCNv2.git
cd DCNv2
然后编译:
python setup.py build develop
ctdet_coco_dla_2x.pth下载
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行代码:
到这里就运行成功了。
python setup.py build develop
出现:RuntimeError: Error compiling objects for extension
把DCNv2文件换为:
https://github.com/lbin/DCNv2/tree/pytorch_1.9
里面的pytorch可以在master中更改版本,我用的是pytorch1.8,这里pytorch1.9也可以用。
这一行代码注释掉
这里请查看VS2019的环境变量是否配置好,重启一下。
pytorch和DCNv2的版本不对应,下载和pytorch对应的版本,查看第四步是否是下载替换的,如果是clone的网址,版本会不对