Face Alignment at 3000FPS(C++版)工程配置
3000FPS是人臉對齊演算法,特點是速度快!我利用的是thinkface上一位大牛提供的程式碼http://www.thinkface.cn/thread-3136-1-1.html這裡面提供了C++版程式碼,人臉資料庫及大牛訓練好的模型的連線,大家可以自行下載。下面介紹具體的配置過程以及遇到的問題和其解決方法。
安裝分為4個步驟:
我使用的是lfpw庫,裡面已經提供了Path_iamges.txt檔案,如果你下載的庫沒有提供這個.txt檔案,可以用下面的方法生成。比如我現在將AFW與LFPW作為訓練樣本的集合,那麼先解壓然後儲存到D:\Projects_Face_Detection\Datasets資料夾中,這是因為工程中train_model.m檔案下第40行中定義的,也可以自己做修改.因為train_model.m檔案中40行表示讀入訓練樣本的資料的檔案是Path_Images.txt,所以
其中資料庫要根據你自己的資料庫以及資料庫的位置進行調整。
2、
下載liblinear庫,編譯獲取blas庫(liblinear/blas/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/171849394、模型的訓練:在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