基於深度學習的人臉識別系統(Caffe+OpenCV+Dlib)【一】如何配置caffe屬性表

前言

基於深度學習的人臉識別系統,一共用到了5個開源庫:OpenCV(計算機視覺庫)、Caffe(深度學習庫)、Dlib(機器學習庫)、libfacedetection(人臉檢測庫)、cudnn(gpu加速庫)。
用到了一個開源的深度學習模型:VGG model。
最終的效果是很讚的,識別一張人臉的速度是0.039秒,而且最重要的是:精度高啊!!!
CPU:intel i5-4590
GPU:GTX 980
系統:Win 10
OpenCV版本:3.1(這個無所謂)
Caffe版本:Microsoft caffe (微軟編譯的Caffe,安裝方便,在這裏安利一波)
Dlib版本:19.0(也無所謂
CUDA版本:7.5
cudnn版本:4
libfacedetection:6月份之後的(這個有所謂,6月後出了64位版本的)
這個系列純C++構成,有問題的各位朋同學可以直接在博客下留言,我們互相交流學習。
====================================================================

本篇是該系列的第一篇博客,介紹我如何在Visual Studio中像使用OpenCV一樣使用Caffe。

思路

我們都知道在Visual Studio中使用OpenCV是非常方便的,只要配置好相關的路徑,建立一個屬性表就可以了。接觸過Caffe的可能會知道,在Caffe的例程中並沒有怎麼說如何建立一個屬性表,就能夠使用Caffe提供的一些函數去構造程序。話說一個月前剛剛在Github上幫一個老外解決了這個問題,所以這裏也寫一下我的方法。
要用Caffe,就是 include 、lib 、dll,和OpenCV一樣,搞好這三個即可,推薦大家配置Release版本的,所以在編譯Caffe的時候,換成Release模式也編譯一次。

實現

觀察caffe-master的第三方程序包,毫無疑問,這個與caffe-master本文件夾都需要加上去的。
這裏寫圖片描述
所以在屬性表裏,先後需要include以下這些:(路徑請自行修改)
這裏寫圖片描述

D:\caffe-master\include
D:\NugetPackages\boost.1.59.0.0\lib\native\include
D:\NugetPackages\glog.0.3.3.0\build\native\include
D:\NugetPackages\gflags.2.1.2.1\build\native\include
D:\NugetPackages\protobuf-v120.2.6.1\build\native\include
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\include
D:\NugetPackages\OpenBLAS.0.2.14.1\lib\native\include
D:\caffe-master\include\caffe\layers
D:\NugetPackages\OpenCV.2.4.10\build\native\include
D:\NugetPackages\OpenCV.2.4.10\build\native\include\opencv
D:\NugetPackages\OpenCV.2.4.10\build\native\include\opencv2

我們可以看到,這個第三方程序包裏面已經有OpenCV了,所以我們沒必要把OpenCV的屬性表添加。
然後,我們需要添加lib:(路徑請自行修改)

D:\NugetPackages\boost_date_time-vc120.1.59.0.0\lib\native\address-model-64\lib
D:\NugetPackages\boost_filesystem-vc120.1.59.0.0\lib\native\address-model-64\lib
D:\NugetPackages\boost_system-vc120.1.59.0.0\lib\native\address-model-64\lib
D:\caffe-master\Build\x64\Release
D:\NugetPackages\boost_thread-vc120.1.59.0.0\lib\native\address-model-64\lib
D:\NugetPackages\boost_chrono-vc120.1.59.0.0\lib\native\address-model-64\lib
D:\NugetPackages\protobuf-v120.2.6.1\build\native\lib\x64\v120\Release
D:\NugetPackages\OpenCV.2.4.10\build\native\lib\x64\v120\Release
D:\NugetPackages\glog.0.3.3.0\build\native\lib\x64\v120\Debug\dynamic
D:\NugetPackages\gflags.2.1.2.1\build\native\x64\v120\dynamic\Lib
D:\NugetPackages\hdf5-v120-complete.1.8.15.2\lib\native\lib\x64
D:\NugetPackages\OpenBLAS.0.2.14.1\lib\native\lib\x64
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\lib\x64

最後一項是CUDA的配置路徑,找一下應該就可以找到。
那麼我們的附加依賴項需要添加:
這裏寫圖片描述

libcaffe.lib
libprotobuf.lib
opencv_highgui2410.lib
opencv_core2410.lib
opencv_imgproc2410.lib
libglog.lib
gflags.lib
libopenblas.dll.a
hdf5.lib
hdf5_hl.lib
cublas.lib
cublas_device.lib
cuda.lib
cudadevrt.lib
cudnn.lib
cudart.lib
cufft.lib
cudart_static.lib
cudnn_static.lib
cufftw.lib
cusparse.lib
cusolver.lib
curand.lib
nppc.lib
OpenCL.lib

對了,最後別忘了配置環境變量喲,配置完之後重啓一遍:

D:\NugetPackages\gflags.2.1.2.1\build\native\x64\v120\dynamic\Lib
D:\NugetPackages\hdf5-v120-complete.1.8.15.2\lib\native\bin\x64
D:\NugetPackages\glog.0.3.3.0\build\native\bin\x64\v120\Release\dynamic
D:\NugetPackages\OpenBLAS.0.2.14.1\lib\native\bin\x64
D:\NugetPackages\gflags.2.1.2.1\build\native\x64\v120\dynamic\Lib
D:\NugetPackages\OpenCV.2.4.10\build\native\bin\x64\v120\Release

這裏還是建議大家建立一個屬性表,方便後面的程序添加,就像這樣:
這裏寫圖片描述
那麼在做完這些之後,我們就可以在新建工程裏使用Caffe的接口了,比如:
這裏寫圖片描述
不會報錯滴。
基於深度學習的人臉識別系統系列:【一】如何在Visual Studio中像使用OpenCV一樣使用Caffe完結,如果在配置過程中出現了什麼問題,直接留言即可。

=============================================
補充:
好吧..有人問怎麼在沒有GPU的情況下進行呢?(CPU_ONLY模式)
就是這樣:
1、前面都和上面一樣配置,在這個地方把cu開頭的lib全部刪掉,改成如下:

libcaffe.lib
libprotobuf.lib
opencv_highgui2410.lib
opencv_core2410.lib
opencv_imgproc2410.lib
libglog.lib
gflags.lib
libopenblas.dll.a
hdf5.lib
hdf5_hl.lib

2、運行一下,發現出現錯誤:
這裏寫圖片描述
我們打開這個文件:
這裏寫圖片描述
3、在上面這個地方我們得選擇CPU模式。
加一句#define CPU_ONLY
這裏寫圖片描述
搞定。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章