1、相關代碼及訓練好的模型html
eveningglow/age-and-gender-classification: Age and Gender Classification using Convolutional Neural Network https://github.com/eveningglow/age-and-gender-classificationpython
2、部署git
一、打開Caffe.sln工程,編譯方法見:http://www.javashuo.com/article/p-rtfvkrod-c.htmlgithub
二、將相關源文件及模型拷貝至以下目錄:shell
三、在examples中新建工程,且將對應源碼添加進來api
四、屬性設置:網絡
(1)進入「C/C++」,選中「常規」,「附加包含目錄」輸入以下:app
D:\Projects\caffe_gpu\caffe\build\include D:\Projects\caffe_gpu\caffe\build C:\Users\tingpan\.caffe\dependencies\libraries_v140_x64_py35_1.1.0\libraries\include\boost-1_61 C:\Users\tingpan\.caffe\dependencies\libraries_v140_x64_py35_1.1.0\libraries\include C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include C:\Users\tingpan\.caffe\dependencies\libraries_v140_x64_py35_1.1.0\libraries\include\opencv D:\Projects\caffe_gpu\caffe\include C:\Users\tingpan\.caffe\dependencies\libraries_v140_x64_py35_1.1.0\libraries\Include
其中tingpan改爲本身電腦的用戶名。測試
(2) 「C/C++」 –>「預處理器」—> 「預處理器定義」, 輸入以下:ui
WIN32 _WINDOWS NDEBUG CAFFE_VERSION=1.0.0 BOOST_ALL_NO_LIB USE_LMDB USE_LEVELDB USE_CUDNN USE_OPENCV CMAKE_WINDOWS_BUILD GLOG_NO_ABBREVIATED_SEVERITIES GOOGLE_GLOG_DLL_DECL=__declspec(dllimport) GOOGLE_GLOG_DLL_DECL_FOR_UNITTESTS=__declspec(dllimport) H5_BUILT_AS_DYNAMIC_LIB=1 CMAKE_INTDIR="Release"
(3)「連接器」 –>」輸入」 –>「附加依賴項」
kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib D:\Projects\caffe_gpu\caffe\build\install\lib\caffe.lib D:\Projects\caffe_gpu\caffe\build\install\lib\caffeproto.lib C:\Users\tingpan\.caffe\dependencies\libraries_v140_x64_py35_1.1.0\libraries\lib\boost_system-vc140-mt-1_61.lib C:\Users\tingpan\.caffe\dependencies\libraries_v140_x64_py35_1.1.0\libraries\lib\boost_thread-vc140-mt-1_61.lib C:\Users\tingpan\.caffe\dependencies\libraries_v140_x64_py35_1.1.0\libraries\lib\boost_filesystem-vc140-mt-1_61.lib C:\Users\tingpan\.caffe\dependencies\libraries_v140_x64_py35_1.1.0\libraries\lib\glog.lib C:\Users\tingpan\.caffe\dependencies\libraries_v140_x64_py35_1.1.0\libraries\Lib\gflags.lib shlwapi.lib C:\Users\tingpan\.caffe\dependencies\libraries_v140_x64_py35_1.1.0\libraries\lib\libprotobuf.lib C:\Users\tingpan\.caffe\dependencies\libraries_v140_x64_py35_1.1.0\libraries\lib\caffehdf5_hl.lib C:\Users\tingpan\.caffe\dependencies\libraries_v140_x64_py35_1.1.0\libraries\lib\caffehdf5.lib C:\Users\tingpan\.caffe\dependencies\libraries_v140_x64_py35_1.1.0\libraries\cmake\..\lib\caffezlib.lib C:\Users\tingpan\.caffe\dependencies\libraries_v140_x64_py35_1.1.0\libraries\lib\lmdb.lib ntdll.lib C:\Users\tingpan\.caffe\dependencies\libraries_v140_x64_py35_1.1.0\libraries\lib\leveldb.lib C:\Users\tingpan\.caffe\dependencies\libraries_v140_x64_py35_1.1.0\libraries\cmake\..\lib\boost_date_time-vc140-mt-1_61.lib C:\Users\tingpan\.caffe\dependencies\libraries_v140_x64_py35_1.1.0\libraries\cmake\..\lib\boost_filesystem-vc140-mt-1_61.lib C:\Users\tingpan\.caffe\dependencies\libraries_v140_x64_py35_1.1.0\libraries\cmake\..\lib\boost_system-vc140-mt-1_61.lib C:\Users\tingpan\.caffe\dependencies\libraries_v140_x64_py35_1.1.0\libraries\lib\snappy_static.lib C:\Users\tingpan\.caffe\dependencies\libraries_v140_x64_py35_1.1.0\libraries\lib\caffezlib.lib C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\lib\x64\cudart.lib C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\lib\x64\curand.lib C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\lib\x64\cublas.lib C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\lib\x64\cudnn.lib C:\Users\tingpan\.caffe\dependencies\libraries_v140_x64_py35_1.1.0\libraries\x64\vc14\lib\opencv_highgui310.lib C:\Users\tingpan\.caffe\dependencies\libraries_v140_x64_py35_1.1.0\libraries\x64\vc14\lib\opencv_imgcodecs310.lib C:\Users\tingpan\.caffe\dependencies\libraries_v140_x64_py35_1.1.0\libraries\x64\vc14\lib\opencv_imgproc310.lib C:\Users\tingpan\.caffe\dependencies\libraries_v140_x64_py35_1.1.0\libraries\x64\vc14\lib\opencv_core310.lib C:\Users\tingpan\.caffe\dependencies\libraries_v140_x64_py35_1.1.0\libraries\lib\libopenblas.dll.a C:\Users\tingpan\AppData\Local\Programs\Python\Python35\libs\python35.lib C:\Users\tingpan\.caffe\dependencies\libraries_v140_x64_py35_1.1.0\libraries\lib\boost_python-vc140-mt-1_61.lib
去掉勾選 「從父級或項目默認設置繼承」。其中tingpan改爲本身電腦的用戶名。
(4)將D:\Projects\caffe_gpu\caffe\build\install\bin添加到環境變量。
五、編譯
若是出現一些錯誤,提示缺乏dll庫文件,則從C:\Users\tingpan\.caffe\dependencies\libraries_v140_x64_py35_1.1.0\libraries\x64\vc14\bin\或C:\Users\tingpan\.caffe\dependencies\libraries_v140_x64_py35_1.1.0\libraries\bin\中拷貝對應的dll文件到D:\Projects\caffe_gpu\caffe\build\install\bin目錄下。
六、測試
參數輸入:
model/deploy_gender2.prototxt model/gender_net.caffemodel model/deploy_age2.prototxt model/age_net.caffemodel model/mean.binaryproto img/0008.jpg
輸出結果以下:
七、說明
deploy_age2網絡結構
deploy_gender2網絡結構
性別估計和年齡估計使用的是相同的網絡結構,不一樣之處在於年齡估計fc8層的輸出個數爲8,而年齡估計的輸出個數爲2。