1. 程式人生 > >caffe框架下新增自己的MFC程式(下)

caffe框架下新增自己的MFC程式(下)

5:新增人臉分類程式
無法識別using namespace cafffe:
解決方案:
發現c/c++—命令列中有很多opencv和一些其他專案的命令,在caffe-mfc也新增
/fp:precise /D “NDEBUG” /D “_SCL_SECURE_NO_WARNINGS” /D “USE_OPENCV” /D “USE_LEVELDB” /D “USE_LMDB” /D “MATLAB_MEX_FILE” /D “CPU_ONLY” /D “_MBCS” /D “_AFXDLL” /errorReport:prompt /WX- /Zc:forScope /Gd /MD /Fa
這裡寫圖片描述
編譯通過,發現可以識別caffe
新增classifier.h標頭檔案和classifier.cpp後
1>F:\桌面檔案\人臉識別MFC\7.1-caffe-face\NugetPackages\boost.1.59.0.0\lib\native\include\boost/lexical_cast/detail/lcast_unsigned_converters.hpp(255): error C3859: 超過了 PCH 的虛擬記憶體範圍;請使用“-Zm123”或更大的命令列選項重新編譯
1>F:\桌面檔案\人臉識別MFC\7.1-caffe-face\NugetPackages\boost.1.59.0.0\lib\native\include\boost/lexical_cast/detail/lcast_unsigned_converters.hpp(255): fatal error C1076: 編譯器限制 : 達到內部堆限制;使用 /Zm 指定更高的限制
解決方案:修改了/Zm200,後來發現可能是參考問題1導致的錯誤!
參考問題1
注意的問題:由於在除錯程式的時候,加入了classifier.cpp導致了很多函式重定義

1:重新梳理MFC介面
1:新增新的圖片控制元件用於顯示歸一化後的影象和相似性的影象
2:新增文字控制元件用於顯示ID等資訊。
問題1:無法在文字編輯框中顯示資訊
可以在其他函式中通過函式顯示出文字資訊,但是在識別的程式中就無法顯示?
解決方案:1:修改程式:使用不同的ontimer 目前可以實時的顯示相似性度量值,姓名不能及時重新整理。
2:新增控制檯程式方便觀察程式執行狀態
3:刪除命令列/wd”4661” /wd”4005” /wd”4812” /wd”4715” /Gy /Zc:wchar_t /I /EHsc /nologo /D “_MBCS”
4:重新整理ontimer函式,目前可以解決上週的程式的(無法響應其他的按鍵)
5:修改載入模型的程式

1:編譯caffe—GPU
1:下載cuda和cudnn for Windows 7.0版本
2:安裝cuda 並解壓cudnn得到bin include lib 分別拷貝到cuda的安裝目錄中
3:修改配置檔案(使用GPU,版本號,不支援Python和matlab等)
4:編譯 出現警告:warning C4819: 該檔案包含不能在當前內碼表(936)中表示的字元。請將該檔案儲存為 Unicode 格式以防止資料丟失
解決方案:在Project -> Properties -> Configuration Properties -> C/C++ -> Advance 的 Disable Specific Warnings 中新增相應的警告編號:4819
5:刪除不需要的工程檔案,編譯完成。
2:新增人臉識別控制檯程式
1:複製人臉識別的程式新增到工程中。
2:編譯
3:出現“把警告預設為錯誤”
解決方案:在屬性中修改為“否”
3:新增MFC工程
1:
錯誤 8545 error C1083: 無法開啟包括檔案: “cublas_v2.h”: No such file or directory f:\桌面檔案\人臉識別mfc\caffe-gpu-face\caffe-master\windows\caffe_mfc\caffe\util\device_alternate.hpp 34
解決方案1:新增cuda的include和lib
cublas.lib
cublas_device.lib
cuda.lib
cudadevrt.lib
cudart.lib
cudart_static.lib
cudnn.lib
cufft.lib
cuffw.lib
curand.lib
cusolver.lib
cusparse.lib
nppc.lib
nppi.lib
npps.lib
nvblas.lib
nvcuvid.lib
nvrtc.lib
OpenCL.lib
出現很多無法解析的函式!!!!!
改進方案:LINK錯誤大部分都是因為庫檔案和頭文案包含的路徑不對造成的,
仔細檢查每個檔案下是不是有多餘的檔案,(導致上面解析錯誤的問題是因為我在DLIB檔案中包含CPU版本的libcaffe.lib,所以導致了很多錯誤)仔細檢查就可以。

記憶體不足的問題:
解決方案:檢視資源管理器,發現程式執行時只需要1.2G記憶體,單步除錯,出現問題的地方是在讀取姓名後,由於重新整理資料庫導致裡面有個名字丟失,造成空指標,導致記憶體不足。
由於MFC還是有很多問題,很多程式寫起來不是很方便,如果有時間和機會還是用QT。
這裡寫圖片描述

先共享出已經編譯好的檔案:
移植到您的電腦可能會有一些其他依賴庫的link error 仔細修改一下即可
連結:http://pan.baidu.com/s/1o8cvNyq 密碼:fhmj