目錄
1. 背景
因項目需要,在Windows下安裝python, caffe等工具。安裝caffe需要在VS下編譯源碼得到。PC上安裝了NVIDIA GeForce 1080,於是打算裝下CUDA,久聞大名。
2. CUDA
2.1 CUDA & cuDNN
cuda官網下載:https://developer.nvidia.com/cuda-downloads
cudnn官網下載: https://developer.nvidia.com/cudnn
CUDA是什麼?我的理解是在NVIDIA GPU開發並行程序的一套SDK,包含一堆頭文件,庫文件等,然後我們將其路徑添加進VS配置中,包含其頭文件,即可調用API。(就好比OpenCV的模式)
cuDNN是什麼?CUDA中專注於DNN運算的加速組件,也是一堆頭文件、庫文件,下載後拷貝至CUDA安裝目錄下即可。
2.2 安裝問題
- 運行setup文件第一次,提示“Visual Studio Intergration”安裝失敗
解決:Visual Studio Intergration無法安裝導致失敗,安裝時不勾選跳過即可。其他組件未安裝皆因此導致。
參考:https://blog.csdn.net/hsqaihkl/article/details/80674912
- 安裝中顯示器黑屏
解決:主機已經安裝了顯卡驅動。重啓後運行cuda安裝文件,僅勾選第一項“CUDA”(去掉勾選VS Intergration),不要勾選後面三項,再安裝即可。後面三項中可以看到,也是安裝驅動這些。
- 如何檢測安裝成功?
解決:cmd中進入目錄“C:\ProgramData\NVIDIA_Corporation\CUDA Samples\v8.0\bin\win64\Debug”,不同主機路徑大致相同。然後cmd運行bandwidthTest.exe和deviceQuery.exe,若運行結果顯示pass即安裝成功。
- 如何將CUDA集成至VS?
解決:因爲在windows下使用VS的開發者太多了,CUDA對於VS集成做的工作很多,具體表現在簡單操作下就可以完成。在筆者PC上,因爲問題1和問題2跳過了CUDA中VS集成安裝,於是需要手動安裝。可以參看 https://blog.csdn.net/hsqaihkl/article/details/80674912 博文中所講,將CUDA的VS集成包下的文件,拷貝至對應路徑下即可。VS集成包中還包括2個msi安裝程序,均執行下。重啓VS後就可以出現:新建CUDA工程,筆者親測發現工程下自動生成kernel.cu源碼文件,相當於CUDA的HelloWorld,2個5維向量相加。VS的路徑配置中都弄好了,筆者指的是頭文件,依賴庫等這些。這樣CUDA就好像是VS下的另一個模板,和C++那種一樣的使用,很方便(而opencv則需要自己在工程配置裏添加頭文件、庫文件路徑,稍微麻煩點)
3. Caffe
3.1 caffe-windows源碼
caffe源碼下載:https://github.com/BVLC/caffe/tree/windows
雖然這個caffe源碼是BVLC下的,但卻並不是官方版本,由個人維護,因此頁面上一些鏈接都失效了。下載源碼到本地後解壓。
3.2 VS下編譯caffe
-
github頁面上有官方配置教程,但據說有錯。可以參考:https://www.cnblogs.com/jerrybaby/p/8385227.html
-
需要安裝好cmake,VS 2015兩個工具。Cmake 並不直接建構出最終的軟件,而是產生標準的建構檔(如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然後再依一般的建構方式使用。VS 2015作爲最終可執行文件和庫的編譯工具。
-
在/scripts/build_win.cmd中對VS版本,python版本,CPU/GPU設置,然後運行該腳本。提示下載一個libraries_v140_x64_py35_1.1.0.tar.bz2文件放到對應位置,其中v140表示VS 2015。
-
然後再次運行build_win.cmd腳本,這次開始做編譯,時間大概10分鐘。編譯完後,/scripts/build/下生成了Caffe.sln文件,這就是我們熟悉的VS工程解決方案文件。
-
/scripts/build/lib/Release/下存放着生成的.lib文件,如caffe.lib。
-
\scripts\build\tools\Release\下存放着生成的.exe文件,如caffe.exe,可以在cmd中運行該命令做train或者test任務。如 # caffe.exe train --solver=.\examples\mnist\lenet_solver.prototxt
-
\caffe-windows\python\下有一個caffe文件夾,這是caffe的python接口文件,將該文件夾全部拷貝至python安裝目錄下的site-packages目錄下,即可在python環境中導入caffe庫進行調用。
至此可得到原始的caffe 1.0.0版本。
3.3 測試caffe
以caffe自帶的example/mnist爲例測試。
可參看:https://blog.csdn.net/liuweiyuxiang/article/details/79532073
note:所有prototxt文件內部涉及的路徑要使用linux下的斜槓,在cmd運行時使用Windows下的反斜槓形式。開始全部改爲反斜槓結果錯誤,將solver.prototxt和train_test.prototxt中的路徑改爲斜槓好了。
3.4 擴展caffe
如果需要讓caffe支持自定義層,需要對caffe做出擴展。主要流程包括:
- 修改caffe.proto文件,註冊層信息;
- 將自定義層的實現代碼,頭文件拷貝至caffe目錄下,並添加至VS工程中;
- 重新編譯caffe的VS工程;
- 生成新的caffe.lib和_caffe.pyd。