yolact模型DCNv2模塊編譯錯誤解決方法

配置環境

1. Ubuntu 18.04

2. Anaconda

3.Cuda10.2+cudnn7.6.5

問題描述

按照yolact(https://github.com/dbolya/yolact)給的DNCv2鏈接https://github.com/CharlesShang/DCNv2/tree/pytorch_1.0對DNCv2進行編譯時出現以下錯誤:

error: identifier "THCState_getCurrentStream" is undefined

解決方法

1. 首先檢查了anaconda環境中的cuda和cudnn是否與系統安裝的版本是否一致(OK);

2. 然後檢查了.bashrc文件中的環境變量路徑是否正確(OK);

3. 接着用某度度了若干教程,沒有成功解決問題;

4. 使用Bing搜索了相關問題,查看到以下鏈接(https://github.com/CharlesShang/DCNv2/issues/57):討論文的問題爲:

DCNv2/src/cuda/dcn_v2_cuda.cu(107): error: identifier "THCState_getCurrentStream" is undefined #57

oh, my god. 又回到了Github/(ㄒoㄒ)/~~  這裏面羅列了45個issue. 根據大佬們的討論,看到了點贊比較多的解決方案:https://github.com/jinfagang/DCNv2_latest

5. 將DCNv2_latest包git下來,替換yolact中對應的文件夾,然後進行編譯. 在編譯的時候需要注意make.sh腳本文件,其內容爲:

#!/usr/bin/env bash
sudo rm *.so
sudo rm -r build/
sudo python3 setup.py build develop

如果是非Anaconda環境,上述編譯過程應該不會出問題,其實可以把sudo給del掉,不然運行時可能會要求權限; 主要說一下我的情況吧,上述提到我的配置環境爲Anaconda,因此在虛擬環境中運行上述腳本會報錯: 找不到torch模塊. 因爲給了sudo權限,因此是在全局環境下尋找相關模塊,就可能引起錯誤. 針對此類問題,只需要將sudo全部del掉,這樣在編譯的時候就只在虛擬環境下尋找相關的模塊或包. 然後就可以愉快的測試了☺

參考鏈接

1.yolact: https://github.com/dbolya/yolact
2.DCNv2: https://github.com/CharlesShang/DCNv2/tree/pytorch_1.0
3.DCNv2討論: https://github.com/CharlesShang/DCNv2/issues/57
4.DCNv2_lastest: https://github.com/jinfagang/DCNv2_latest

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章