Caffe2-Windows+Python介面配置
折騰了整整三天,終於把Caffe2的安卓版本,和windows版本build成功了。由於還是個深度學習小白,踩了無數的坑。把我在windows下配置的過程中遇到的問題大概說一下。
1. 準備:首先主要參考的這裡 https://caffe2.ai/docs/getting-started.html?platform=windows&configuration=compile ,我用的是Anaconda python 2, 裝在了C:\Anaconda2, Visual Studio Community Edition 2017, Cmake,Github Extension for Visual Studio
2. build protoc
這裡用的按照官網裡的說明,安裝了Github Extension for Visual Studio之後,開啟Visual Studio 2017, 用首頁裡的github連結下載caffe2到本地:
C:\Users\username\Source\Repos\caffe2
.
然後開啟Developer Command Prompt, cd 到C:\Users\username\Source\Repos\caffe2, .\scripts\build_windows.bat就可以編譯protoc了。記得這裡當時是一遍成功的,沒有什麼錯。這裡build成功的話,會出現C:\Users\username\source\repos\caffe2\build_host_protoc這個資料夾。
3. build caffe2 windows
按照官網講的,需要執行.\scripts\build_windows.bat,這裡為了後面編譯python介面,我們需要開啟build_windows.bat,這裡我將第63行的build_python=off改成on了。如果這個不改的話,並不會生成後面visual studio的python相關的project.
然後仍在Developer Command Prompt裡執行.\scripts\build_windows.bat 。這時,會報一個找不到python27.lib的錯:如下圖。
這個錯我找解決辦法找了很久很久,最後在github caffe2 issues上有個人提到他用vs編譯python caffe2,並把python.lib路徑加到專案裡就好了。所以最終我也是用的這個方法。
4. build python bindings
剛才的build_windows.bat雖然失敗了,但是它幫我們生成了一個caffe2.sln。在caffe2\build資料夾下。然後用visual studio 2017開啟這個caffe2.sln。會得到28個project如下:
最終要build (Release,X64)的是All_BUILD這個project. 在這之前,我把每個project的屬性都看了一遍,在C/C++ ->Additional include Directories里加上C:\Anaconda2\libs; (這個路徑裡有python27.lib)。然後編譯All_build, 發現caffe2_pybind11_state這個project總是還是會報找不到python27.lib的link的錯誤。
於是,我加了最關鍵的一個,在caffe2_pybind11_state的屬性的Linker -> Additional Library Directories里加上C:\Anaconda2\libs; , 然後再次點選ALL_BUILD的build, 這次完全通過了!
5. 如何使用
本來我以為到這裡已經結束了,按照官網講的,我應該要生成caffe2_pybind11_state.dll在\caffe2\build\caffe2\binaries\Release裡,但是並沒有,找了很久,最後發現在C:\Users\username\source\repos\caffe2\build\caffe2\python\Release裡有一個 caffe2_pybind11_state.pyd。我把它放在C:\Anaconda2\DLLs裡,然後import caffe2。但是還是會報no module的錯。
最後還是在github上找了一個解決方案:
到這裡,終於build好了caffe2 的python介面!