1. 程式人生 > >Caffe2-Windows+Python介面配置

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

其中需要把C:\Anaconda2, C:\Anaconda2\libs, C:\Anaconda2\Scripts 加到系統環境變數裡。另外我的系統是windows 10 64bit. Cmake版本3.10.1。此外,我還裝了pybind11 (pip install pybind11即可),不知道這個有沒有用,沒裝之前,編譯build_windows.bat會提示找不到pybind。

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介面!