1 軟體版本
Win7、CUDA8、CUDNN5.1 for CUDA8、opencv2.4、VS2013
2 硬體型號
I7700K、記憶體16G、固態硬碟500G、華碩猛禽1080ti
3, win7系統安裝過程
選擇光碟安裝或U盤安裝都可,注:win7系統和win10系統的faster-rcnn安裝過程應該是一樣的
在涉密機上安裝時,需要安裝USB3.0驅動,使用華碩主機板的光碟驅動安裝。
1,查詢NVIDIA驅動:首先去官網(http://www.nvidia.com/Download/index.aspx?lang=en-us)檢視適合自己顯示卡的驅動:
下載的驅動版本如下:
1080Ti版本的最好不要用1070的驅動,去官網下載最新的驅動,下載的是387.92版本
2, 安裝NVIDIA驅動:雙擊.exe檔案即可安裝,安裝完畢後,在桌面空白處單擊滑鼠右鍵->個性化->選擇Aero主題,若工作列變爲透明,則說明驅動安裝成功。
1 ,下載CUDA
CUDA是NVIDIA的程式語言平臺,想使用GPU就必須要使用cuda
首先在官網上(https://developer.nvidia.com/cuda-downloads)下載CUDA:
2 ,安裝CUDA:雙擊安裝,選擇預設路徑及元件安裝
環境變數設定:
在計算機上點右鍵,開啓屬性->高階系統設定->環境變數,可以看到系統中多了CUDA_PATH和CUDA_PATH_V8_0兩個環境變數,接下來,還要在系統中新增以下幾個環境變數:
CUDA_SDK_PATH=C:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0
CUDA_LIB_PATH=%CUDA_PATH%\lib\x64
CUDA_BIN_PATH=%CUDA_PATH%\bin
CUDA_SDK_BIN_PATH=%CUDA_SDK_PATH%\bin\win64
CUDA_SDK_LIB_PATH=%CUDA_SDK_PATH%\common\lib\x64
然後,在系統變數 Path 的末尾新增:
;%CUDA_LIB_PATH%;%CUDA_BIN_PATH%;%CUDA_SDK_LIB_PATH%;%CUDA_SDK_BIN_PATH%;
3,重新啓動計算機。
4,驗證CUDA8.0已正確安裝: 開啓cmd,輸入nvcc -V(若有信心安裝正確,此步可忽略)
結果如下圖:
若出現nvcc fatal : Cannot find compiler 'cl.exe' in PATH"
解決方案:在Path末尾新增cl.exe的路徑:
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64
四,編譯CUDA8.0自帶的samples
1. 在C:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0目錄下,用vs2017,開啓Samples_vs20,7.sln如果這時候出現:
此時,是未找到CUDA 8.0.props
解決方案:將C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\extras\visual_studio_integration\MSBuildExtensions下的4個檔案複製到C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\BuildCustomizations目錄下,重新啓動VS2017
2. 先選擇release模式(debug會很慢),選中解決方案Samples_vs2013,重新生成解決方案
3. 需要說明的是個別例子編譯失敗,比如自己編譯的時候成功135個,失敗10個。失敗的原因是缺乏相應的標頭檔案;失敗也沒有什麼影響
4. 編譯成功後可在C:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0\bin\win64\Release目錄下面 下麪找到全部例子的可執行檔案
五,安裝cuDNN(上傳版需要去掉賬號)
1 下載cuDNN
cuDNN是GPU加速計算深層神經網路的庫
首先去官網(https://developer.nvidia.com/rdp/cudnn-download)下載cuDNN,需要註冊一個賬號才能 纔能下載:下載for windows7
2, 安裝cuDNN
(1)下載完成後解壓,cuda目錄下有bin,include,lib三個資料夾
(2)拷貝目錄至CUDA8.0的資料夾:分別將cuda\bin、cuda\include、cuda\lib\x64三個目錄中的內容拷貝到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0對應的bin、include、lib\x64目錄下即可
六, 安裝SSD
下載鏈接:https://github.com/conner99/caffe,選擇ssd-microsoft 分支
2, 修改CommonSettings.props檔案
(1)開啓caffe-ssd-microsoft資料夾,然後看到一個windows資料夾,然後繼續開啓windows資料夾,看到裏面一個CommonSettings.props.example檔案,複製出來一份,並改名字爲CommonSettings.props
(2) 修改CommonSettings.props檔案
CudaVersion改爲8.0
<UseCuDNN>true</UseCuDNN>
根據自己顯示卡的計算能力更改CudaArchitecture
<CudaArchitecture>compute_61,sm_61</CudaArchitecture>
(1) 將libcaffe設定爲啓動項
(2) 一定要將解決方案改爲「release」,因爲下載的NugetPackages包和這個release是對應的;如果選擇debug,則下載的NugetPackages包也是debug版的,會導致用release編譯時報錯
(3) C/C++ -> 常規 裡的將警告提示爲錯誤修改 爲否
(4)右鍵選擇「生成」,開始下載NugetPackages,由於網速的原因開始的時候不動,不要以爲有問題,檢視C:\Users\jc\AppData\Local\NuGet下的Cache檔案中的內容,會發現檔案在不斷變大;在C:\Users\jc\AppData\Roaming\NuGet中也會產生檔案
(5) 若工程編譯時出現無法載入NugetPackages\opencv2.4.10等錯誤,是因爲NugetPackages包沒有載入成功
解決方法:
1) 如果原來C:\Users\jc\AppData\Local和C:\Users\jc\AppData\Roaming中的NuGet\Cache和NuGet資料夾存在,試着刪除他們重新編譯
2) 如果這兩個資料夾不存在,試着新增他們重新編譯
3) 這兩個資料夾中的內容可能起着引導載入的作用,變化可能會導致編譯的成功
(1)編譯caffe時,報錯:錯誤 4622 error C1189: #error : ERROR macro is defined. Define GLOG_NO_ABBRE
解決方法:
是一個宏定義的地方出現了衝突
在工程加上預編譯宏GLOG_NO_ABBREVIATED_SEVERITIES:
C/C++ --> 前處理器 --> 前處理器定義 --> 加上GLOG_NO_ABBREVIATED_SEVERITIES,儲存
參考網址:http://blog.csdn.net/pi9nc/article/details/20995817
(2)編譯caffe時,報錯:與boost相關的regex正則表達式庫出現問題,在專案中我們不需要正則表達式,所以將相關語句註釋掉即可
解決方法:
1) 開啓libcaffe/include/layers/detection_output_layer.hpp,將與regex相關的標頭檔案註釋掉:
2) 開啓libcaffe/src/layers/detection_output_layer.cpp,將所有出現regex和rv的語句註釋掉
3) 開啓libcaffe/cu/layers/detection_output_layer.cu,將所有出現regex和rv的語句註釋掉
(3). 編譯,報錯:expected an identifier in caffe.pb.h
解決方法:修改libcaffe/cu/util/bbox_util.cu,註釋掉所有帶thrust的語句
(4). 編譯,報錯:找不到」.\caffe\3rdparty\hungarian.h」檔案;找不到」.\src\caffe\3rdparty\hungarian.cpp」檔案
解決方法:下載檔案:http://pan.baidu.com/s/1mhYuf7y,密碼:3jp2
將裏面的hungarian.h和hungarian.cpp檔案拷貝出來
1) 在D:\caffe-ssd-microsoft\include\caffe中新建資料夾3rdparty,將hungarian.h檔案拷貝進來
2) 在D:\caffe-ssd-microsoft\src\caffe中新建資料夾3rdparty,將hungarian.cpp檔案拷貝景來
3) 不需要在libcaffe工程中新增,重新編譯,編譯器會自動在libcaffe中新增兩個檔案及對應的3rdparty資料夾
4). 編譯成功後接着編譯caffe工程,因爲ssd_detect.exe的執行依賴caffe.exe
5). 編譯ssd_detect工程,最後得到ssd_detect.exe檔案
5, 執行ssd_detect.exe報錯解決方法
(1). 在caffe-ssd-microsoft下新建sse_dect.bat檔案,新增內容
D:/caffe-ssd-microsoft/Build/x64/Release/ssd_detect.exe D:/caffe-ssd-microsoft/models/VGGNet/VOC0712/SSD_512x512/deploy.prototxt D:/caffe-ssd-microsoft/models/VGGNet/VOC0712/SSD_512x512/VGG_VOC0712_SSD_512x512_iter_16000.caffemodel D:/caffe-ssd-microsoft/examples/images/pictures.txt
對照上面的指令新增檔案 ,雙擊執行.bat檔案
(2). 出現錯誤
[libprotobuf ERROR google/protobuf/text_format.cc:274] Error parsing text-format caffe.NetParameter: 938:9: Message type "caffe.PriorBoxParameter" has no field named "step".
F0306 10:40:29.101408 39034 upgrade_proto.cpp:79] Check failed: ReadProtoFromTextFile(param_file, param) Failed to parse NetParameter file: models/VGGNet/VOC0712/SSD_300x300/deploy.prototxt
*** Check failure stack trace: ***
解決方法:
對照linux下的caffe.proto檔案進行更改,在1302行PriorBoxParameter中的末尾新增step、offset等成員:
(3)出現錯誤
caffe.NetParameter:1617:29:Invalid escape sequence in string literal
錯誤原因:
在windows中路徑分隔符是’\’,直接把windows中的路徑複製到protobuf檔案中在解析的時候會出現這個錯誤
解決方法:將‘\’改爲‘/’或者‘\\’
將models\VGGNet\VOC0712\SSD_512x512\deploy.prototxt中最後幾行的輸出路徑改爲‘/’格式的
(4) 出現錯誤
D:\caffe-ssd-microsoft\data\VOC0712缺少test_name_size.txt
解決方法:在D:\caffe-ssd-microsoft\data\VOC0712中新增test_name_size.txt(從linux版本中拷貝)
(5) 解決以上錯誤後重新編譯,即可執行ssd_detect.exe