Face Alignment at 3000FPS(C++版)工程配置


源地址:http://blog.csdn.net/sunshine_in_moon/article/details/49838245/

3000FPS是人臉對齊算法,特點是速度快!我利用的是thinkface上一位大牛提供的代碼http://www.thinkface.cn/thread-3136-1-1.html這里面提供了C++版代碼,人臉數據庫及大牛訓練好的模型的連接,大家可以自行下載。下面介紹具體的配置過程以及遇到的問題和其解決方法。

安裝分為4個步驟:

1.下載人臉數據庫,獲取Path_Images.txt。
AFW人臉數據庫:http://www.thinkface.cn/thread-1029-1-1.html
LFPW人臉數據庫:http://www.thinkface.cn/thread-1032-1-1.html
Helen人臉數據庫:http://www.thinkface.cn/thread-1030-1-1.html
IBUG人臉數據庫:http://www.thinkface.cn/thread-1031-1-1.html

我使用的是lfpw庫,里面已經提供了Path_iamges.txt文件,如果你下載的庫沒有提供這個.txt文件,可以用下面的方法生成。比如我現在將AFW與LFPW作為訓練樣本的集合,那么先解壓然后保存到D:\Projects_Face_Detection\Datasets文件夾中,這是因為工程中train_model.m文件下第40行中定義的,也可以自己做修改.因為train_model.m文件中40行表示讀入訓練樣本的數據的文件是Path_Images.txt,所以進入控制台先轉到目錄D:\Projects_Face_Detection\Datasets\afw,然后輸入命令dir /b/s/p/w *.jpg>Path_Images.txt,這是將所有jpg的文件的文件名都輸入到Path_Images.txt文件中,同樣轉到目錄D:\Projects_Face_Detection\Datasets\lfpw文件夾中輸入命令dir /b/s/p/w *.png>Path_Images.txt,因為lfpw的數據都是png文件。

其中數據庫要根據你自己的數據庫以及數據庫的位置進行調整。

2、

下載liblinear庫,編譯獲取blas庫(liblinear/blas/blas.a)。你需要將你的blas.a替代build目錄下的blas.a。

注意:新版本的程序這個步驟可以省略,作者已經把其整合到了工程里。

新版本鏈接:https://github.com/yulequan/face-alignment-in-3000fps

不過你用的是老版本,那首先是下載liblinear,我的百度鏈接:http://pan.baidu.com/s/1gdruGuf

liblinear庫的安裝與使用可參考http://blog.csdn.net/zouxy09/article/details/10947323/

本人在此聲明,我沒有編譯成功,如果有編譯成功的朋友,麻煩留言,簡單講述下方法,在此感謝!

3、進入build文件夾,編譯該程序。
cmake  make

說明:我用的是CMake界面版,在編譯時出現里個問題,提示要不到opencv庫,錯誤提示為:

 

CMake Error at CMakeLists.txt:6 (find_package):

By not providing "FindOpenCV.cmake" in CMAKE_MODULE_PATH this project has

asked CMake to find a package configuration file provided by "OpenCV", but

CMake did not find one

出現這個問題是因為CMake配置OpenCV時出錯,解決方法很簡單添加一個環境變量就好具體步驟:我的電腦右擊->屬性->高級系統設置->環境變量->新建,變量名:OpenCV_DIR(注意大小寫,不能出錯)變量值:D:\Program Files\opencv\build重新啟動電腦(很重要!!)再用CMake進行configure和generate,然后打開解決方案***.sln,進入VS,編譯,運行。這個問題的具體原因及解決方案請參考:http://m.blog.csdn.net/blog/ZHUQIBING/17184939

4、模型的訓練:在LBF.cpp文件中設置全局參數,在TrainDemo.cpp中設置數據庫。采用“LBF.out TrainModel”進行編譯。

具體設置:1)LBF.cpp文件修改、

modelPath:訓練模型保存的路徑,也是test階段模型加載的路徑

dataPath:數據庫圖片加載數據路徑,這里要注意,還記得第一步中的Path_images.txt文件嗎,這個文件里保存的就是圖片路徑,這個文件里的路徑就是D:/Projects_Face_Detection/Datasets/,如果你沒有自己生成Path_images.txt文件,而是使用官方提供的文件,那你的數據庫文件夾就要放在這個路徑下,也就是說你要在D盤下新建這個文件,否則你就好修改dataPath(不推薦,太麻煩,而且容易出錯)

cascadeName:這個參數不用修改,但是要把這個文件放到工程下如:

下面是選擇使用訓練數據庫:

選擇要訓練模型使用的庫,把不用的庫,直接注釋掉就可以了

 

下面是選擇測試數據庫:

與上面一樣,選擇你的數據庫即可,我這里是個錯誤,測試時的數據庫不應該與訓練數據庫相同。

 

2)TrainModel.cpp文件修改:

首先,把第一步生成的Path_Images.txt文件放到trainset文件下(很重要,我在廢了很長時間,才找到是這的問題)

 

3)TestModel.cpp文件修改

由於照片不能正常上傳,需要注意的地方與TrainModel,cpp一樣把Path_Image.txt放到testset文件下,否則找不到照片,就無法進行人臉檢測函數LoadOpencvBbxData(path, test_images, test_ground_truth_shapes, test_bounding_boxs);報錯!!!

 

5、編譯工程,編譯時提示錯誤:無法啟動程序 無法找到文件e:\projects_pcl\pcl_filters\bilateral_filter\build\x64\Debug\ALL_BUILD  

這是因為用CMake生成工程文件是包含了ALL_BUILD、ZERO_CHECK兩個工程文件,直接把它們移除就OK!

具體請參考:http://blog.csdn.net/david_xtd/article/details/38381787

6、編譯成功后,就可以執行程序了。在數據庫上進行測試:在TestDemo.cpp文件中設置測試數據庫,使用“LBF.out TestModel”進行編譯。這是在命令行下執行的。如果你不想使用這種方式,我們可以使用下面的方法:

工程文件右擊->屬性->通用屬性->調試->命令參數(TrainModel:訓練模型,TestModel:測試)

 

如果想用我編譯好的工程可以給我留言!

 

參考鏈接:

http://blog.csdn.net/wangjian8006/article/details/42004717

http://www.thinkface.cn/thread-3136-1-1.html

http://blog.csdn.net/zouxy09/article/details/10947323/

http://m.blog.csdn.net/blog/ZHUQIBING/17184939

http://blog.csdn.net/david_xtd/article/details/38381787


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM