【目標檢測】關於如何在 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】

相關文章
相關標籤/搜索