C++版 Face Alignment at 3000FPS(一)TrainModel執行
Face Alignment at 3000 FPS via Regressing Local Binary Features 這篇論文實現了對人臉關鍵點的高速檢測,預測精度高。
實現步驟:
一、下載原始碼、檢視工程相關檔案。
圖一Face Alignment at 3000FPS工程
當然,現在直接執行會有錯誤。需要進行相關配置。
二、配置OpenCV路徑。
此時執行,會報錯無法開啟包括的OpenCV的檔案。配置方式可以看我之前的博文
裡面有關於OpenCV的配置方式。此工程自帶的是2410版的OpenCV庫,路徑也跟我的不一樣。所以需要重新配置一下。並且在工程資料夾下加入opencv_imgproc249.dll
三、配置執行引數
配置好OpenCV,執行之後出來結果提示
圖二執行成功但缺少引數
查詢這個提示,是在LBF.cpp中的PrintHelp函式中的提示。檢視此函式呼叫,是在LBF.cpp的main函式中。粗讀程式碼,是因為缺少相關的配置,所以直接呼叫了PrintHelp()。
圖三缺少引數的原始碼
根據提示可以知道,在專案屬性/配置屬性/除錯/命令引數中輸入必要的引數。
圖四缺少引數的配置方法
此處輸入可以是TrainModel:訓練模式,此篇分析當為TrainModel
或TestModel:測試模式
或Demo
或Demo XX.jpg(如 Demo1.jpg)
或Demo Img_Path.txt
四、下載必要的人臉資料庫,生成Path_Images.txt。
參照一篇博文獲取了4個人臉資料庫,下載的時候挺麻煩的,連結到一個網站,還需要有賬號,然後再跳轉到百度雲盤…
下載好之後,發現裡面都是人臉圖片以及相應的pts檔案。現在需要做的是將這些照片的路徑集合起來生成一個檔案。如圖
圖五Path_Images.txt的路徑示意
有的說下載的人臉資料庫中自帶這個路徑檔案,不過我沒有。生成也很簡單。如下圖命令:可對訓練集的圖片進行路徑彙總。生成的
圖六Path_Images.txt的路徑生成命令
五、修改工程中一些檔案的位置
LBP.cpp中的路徑需要修改為自己的路徑。由於此次是TrainModel,所以根據人臉資料庫會生成新的模型檔案。
modelPath就是指這個模型檔案的路徑。自己指定一個資料夾就行。
dataPath是人臉資料庫中圖片路徑的集合,也就是Path_Images.txt的路徑。這裡寫的Q4資料夾是因為在TrainModel讀取的時候的方式是path = dataPath +trainDataName[i] + "/trainset/Path_Images.txt"。
其實這個路徑問題可以自行靈活解決,科協相對路徑,也可完全寫死。It’s up toyou!
圖七LBP.cpp中路徑設定
圖八TrainModel.cpp中路徑設定
六、執行成功
執行過程中會有提示說明生成的隨機森林到了多少層,每一層的landmark引數等等資訊。這次不關心這些資料,幾分鐘之後程式執行完成,在我們指定的模型檔案目錄下,可以看到生成的模型檔案。TrainModel的程式試執行就完美結束啦!有問題可以留言!
圖九訓練生成的模型檔案