caffe C++接口使用配置
含caffe源碼的配置方式(CPU only)
-
首先使用源碼按照官方的方式編譯Debug版Caffe【官方參考】,我們需要編譯后所生成的如下文件:
- caffeproto-d.lib
- caffe.pb.h
> 注:因為編譯caffe時的依賴文件很難下載,所以這里給出了百度網盤的分享鏈接,下載完成之后放在C盤下當前用戶的文件夾中(以我的機器為例:C:\Users\HJiahu\.caffe\dependencies\download\libraries_v140_x64_py35_1.1.0.tar.bz2)
-
編譯完caffe后將install文件夾下的include文件夾復制出來與caffe源碼(位於根目錄中src目錄下)一起放在同一個文件夾caffe_src下(這樣做是為了方便。只有編譯后的include文件夾下才有caffe.pb.h文件)。
caffe_src的結構如下:- caffe_src - include - caffe - layers - proto - caffe.pb.h - util ... - src - caffe - layers - solvers - util ... -
創建vs控制台空項目(注意將解決方案平台設置為x64,而不是x86),將上面caffe_src中所有的代碼都添加當前項目中(注意:所有代碼包含子目錄中的代碼,為了方便可以在項目中添加新的篩選器,便於文件的管理)。
-
將對應的依賴文件添加到項目中
-
依賴的頭文件
I:\learn_caffe\learn_caffe\caffe_src\include,這個就是上面提到的從install文件夾中復制出來的include目錄C:\***\.caffe\dependencies\libraries_v140_x64_py35_1.1.0\libraries\include,這個和下面的內容源於編譯caffe時自動下載的依賴包。C:\***\.caffe\dependencies\libraries_v140_x64_py35_1.1.0\libraries\include\boost-1_61
-
在預處理定義中添加如下內容
CPU_ONLY _SCL_SECURE_NO_WARNINGS _CRT_SECURE_NO_DEPRECATE _CRT_NONSTDC_NO_DEPRECATE USE_LMDB USE_OPENCV -
庫目錄(將上面提到的caffeproto-d.lib也復制到下面的文件夾中)
-
C:\***\.caffe\dependencies\libraries_v140_x64_py35_1.1.0\libraries\lib -
為了方便,我使用我自己編譯的opencv庫,因為只要添加一個庫就好:opencv_world320d.lib,同樣要把對應的庫文件夾添加到項目中。
-
所有依賴庫文件如下所示(其實我並不知道哪些是必須的所以就把能加的都加上去了):
caffeproto-d.lib opencv_world320d.lib boost_chrono-vc140-mt-gd-1_61.lib boost_date_time-vc140-mt-gd-1_61.lib boost_filesystem-vc140-mt-gd-1_61.lib boost_system-vc140-mt-gd-1_61.lib boost_thread-vc140-mt-gd-1_61.lib boost_timer-vc140-mt-gd-1_61.lib libopenblas.dll.a caffehdf5_D.lib caffehdf5_cpp_D.lib caffehdf5_hl_D.lib caffehdf5_hl_cpp_D.lib caffezlibd.lib caffezlibstaticd.lib gflagsd.lib glogd.lib leveldbd.lib libboost_chrono-vc140-mt-gd-1_61.lib libboost_system-vc140-mt-gd-1_61.lib libboost_timer-vc140-mt-gd-1_61.lib libcaffehdf5_D.lib libcaffehdf5_cpp_D.lib libcaffehdf5_hl_D.lib libcaffehdf5_hl_cpp_D.lib libprotobufd.lib libprotocd.lib lmdbd.lib snappy_staticd.lib snappyd.lib ntdll.lib
-
-
-
在編譯的時候系統會提示無法打開lib*.lib文件,我的系統中主要是boost中的一些lib。其實這些lib在文件夾中是存在的只是命名的方式不對。將庫文件夾中對應的lib文件前面加上lib三個字母就可以了。例如我的系統中提示找不到
boost_thread-vc140-mt-gd-1_61.lib,在同一個文件夾中創建一個副本並重新命名為libboost_thread-vc140-mt-gd-1_61.lib就行了。 -
添加一個main函數后就可以一步一步調試caffe代碼了(我直接從源代碼tools文件夾中把caffe.cpp復制出來作為調試入口文件)。
不含caffe源碼的配置方式(僅使用caffe的頭文件 CPU only)
編譯caffe (這里編譯release版)
- 編譯caffe,可參考官方文檔
配置vs2013
-
配置當前項目為Release x64
-
包含目錄為
G:\caffe_rel\build\libraries\include\boost-1_61 G:\caffe_rel\build\libraries\include G:\caffe_rel\build\install\include -
庫目錄為
G:\caffe_rel\build\lib G:\caffe_rel\build\libraries\lib C:\CNNs\opencv_with_world\x64\vc12\lib -
添加兩個預處理宏
USE_OPENCV CPU_ONLY -
附加庫為
opencv_world310.lib gflags.lib glog.lib libprotobuf.lib libprotoc.lib caffe.lib proto.lib -
與上同,修改boost_thread-vc120-mt-1_61.lib等文件的名稱
不含caffe源碼的配置方式(僅使用caffe的頭文件 GPU cuda&cudnn)
先使用官網提供的方法編譯caffe
下面的庫需要加入到vs2013中
opencv_world320d.lib
caffe-d.lib
caffeproto-d.lib
libprotobufd.lib
libopenblas.dll.a
gflagsd.lib
glogd.lib
cublas.lib
cuda.lib
cudnn.lib
cudart.lib
curand.lib
caffehdf5_D.lib
caffehdf5_hl_D.lib
caffezlibd.lib
libboost_thread-vc140-mt-gd-1_61.lib (如果是vs2013的話這里是120,具體boost庫的名稱要按照編譯器的提示添加)
