【目标检测】关于如何在 PyTorch1.x + Cuda10 + Ubuntu18.0 运行 CenterNet 源码

这几天一直在尝试运行CenterNet的源码,可是出现各类问题,本已经打算放弃,中午吃完饭又不甘心,打算从新安装环境再来一遍,没想到居然成功了。因此,坚持下去,黑夜事后即是黎明。python

注意:gcc/g++ 版本尽可能为 5.xgit

CornerNet 源码仓库:CenterNetgithub

CornerNet 安装:vim

1. 建立 Anaconda 环境,并激活环境api

conda create --name CenterNet python=3.6
conda activate CenterNet

2. 安装 PyTorch:进入PyTorch官网,根据本身的系统状况生成安装PyTorch的命令测试

3. 手动修改 torch/nn/functional.py 文件内容(文件地址:~/anaconda3/envs/CenterNet/lib/python3.6/site-packages/torch/nn/functional.py)ui

# 找到下面一行
torch.batch_norm
# 并将其中的 torch.backends.cudnn.enabled 替换为 False

4. 安装 COCOAPIurl

git clone https://github.com/cocodataset/cocoapi.git

5. 以后进入该文件夹(cocoapi),再进入PythonAPI,分别执行如下两条命令spa

make python setup.py install --user

6. 克隆 CornerNet 源代码.net

git clone https://github.com/xingyizhou/CenterNet

7. 安装 requirements.txt 文件中的module

pip install -r requirements.txt

8. 这里是重点:因为咱们使用的版本是 PyTorch1.x ,因此在编译DCNv2时会发生错误(关于 torch.utils.ffi)。可经过如下方式解决:

cd CenterNet/src/lib/models/networks rm -rf DCNv2 git clone https://github.com/CharlesShang/DCNv2
cd DCNv2/src/cuda
vim dcn_v2_cuda.cu

将该文件中(第11行)的 extern THCState *state; 改成 THCState *state = at::globalContext().lazyInitCUDA();

而后再执行如下命令(在DCNv2文件夹下):

python setup.py build develop

9. 测试

cd CenterNet/src python demo.py ctdet --demo ../images/17790319373_bd19b24cfc_k.jpg --load_model ../models/ctdet_coco_dla_2x.pth --debug 2

 

 

References:

  【github】

相关文章
相关标签/搜索