項目需要使用MTCNN來檢測、對齊、剪切出人臉,它是使用MXNet作為框架的,但是我自己的Ubuntu里各種框架亂成一團,不想再添亂就鐵了心要在windows里配一個。無奈網上的資料不多,掙扎了幾天之后決定留下這么一份文檔。
首先我們使用的不是DMLC在github上發布的那一套MXNet,它那個的windows版2016年就不更新了,現在負責維護的地址是這個:
https://github.com/yajiedesign/mxnet/releases
這是一個日更的版本,非常新。巧的是MTCNN也是用新版的MXNet,所以16年版的就不好使了,得靠這個日更的,以下關於這一套產品統稱為【日更版】。
新版的MXNet里有一些參數在vc12編譯出的庫里沒有,所以推薦使用vc14版本,也就是VS2015。
在正式講安裝配置步驟之前,先推薦一個軟件叫Dependency Walker,它的作用是理清楚庫文件的依賴關系,有助於后面講依賴庫的版本情況:
這是軟件的使用截圖,注意紅框部分,這里需要我們對文件名有一點敏感:
1、LIBopenBLAS 沒什么特別的,日更版里面自帶了。
2、CUDART64_80、CURAND64_80、CUBLAS64_80、CUFFT64_80、NVRTC64_80 這四個留意后面的數字,這一組文件可以在3rdparty\cudart里找到,如果版本號不一樣,請自行更正,日更版應該自帶。
3、cuDNN64_5 這是需要自己去下載的文件,從文件名可以知道我們需要一個64位的cudnn,版本號大概是5開頭,根據上面的說法我們還需要一個和CUDA8.0配合的cudnn。
4、NVCUDA 這很明顯是NVIDIA的CUDA,不過沒帶版本號先不管它。
5、VCOMP140 這個可以翻3rdparty\vc 里找到,版本號不對請自行修改
6、KERNEL32、USER32 這種大眾臉應該不是什么特別的需求,不管它們
import過程中出現的 [WinError 126]基本都是因為這個原因。
————————————————————————接下來開始正式講步驟————————————————————————————
1、下載並解壓日更版地址里的vc14 base package
2、下載並解壓日更版地址里的2017xxxx_mxnet_x64_vc14_gpu.7z 到上面base package的目錄里,形成一個完成的結構
2、其中最重要的一個東西便是其他各種教程里說的需要make呀,compile呀的那個 build\libmxnet.dll,也就是上邊dependency walker關注的這個文件,所以預編譯版便是大佬幫我們事先編譯好了這個dll。
3、[WinError 126]出現的原因在於import一個模塊的時候,它的依賴庫需要的依賴庫也必須可以找到,不然就報錯。
4、照上面所說裝好cuda8.0,這個教程很多 也很好裝。
5、准備好cudnn5系列 for cuda8.0
6、關注一下日更版里的文件,先運行根目錄下的setupenv.cmd,這個文件是設置所有的相關環境變量的
建議點開之前先留意一下【用戶變量】里的path,我在使用過程中出現字符過長被截斷的問題,換句話說我之前的用戶變量被破壞掉了一部分,所以請提前做好准備
7、命令行到python目錄,執行
D:\MXNet\python> python setup.py install
8、最后進到 MXNet\3rdparty 里把cudnn的相關文件復制進去就好了,其他的依賴文件應該都在
9、可以進python嘗試import mxnet了。
祝你成功