Openface 簡單入門
背景
Openface是一個開源的人臉識別框架,同類軟件產品還有 seetaface ,DeepID等,當然,如果算上商業的產品,那就更多了。
Openface人臉比對結果的准確度可能不是很好,它是有待提升的。如果有能力的話, 可能通過源碼進行優化。 一般來說,置信度小於1 的基本可以接受的,但是這個要看具體的使用場景,我們可以根據具體的業務設置這個置信度閾值。 如果Openface 准確度達不到我們的要求, 我們可以多試幾次,或者提供更加高質量的訓練庫圖片和比對圖片,或者業務上進行控制和優化,比如前端提示圖片無法識別,圖片不清晰等等。
安裝
官方推薦用docker來安裝openface,這個參照官方文檔,直接用docker安裝即可。如果自己一步步去安裝的話,估計很花時間,而且不一定能完成。
除了安裝,我們至少需要做一些准備工作,這就是人臉訓練; 然后, 我們才可以使用它進行人臉識別/比對等操作。
1 人臉訓練
上傳基礎圖片,比如客戶經理的圖片:
將同一個人的照片,以其名字命名,然后放入同一個目錄,目錄名字以人名進行命名。然后上傳或掛載到bamos/openface 鏡像容器的圖像訓練目錄:/root/openface/data/mydata/train_img,
如
胡歌的圖片目錄是:/root/openface/data/mydata/train_img/huge/
楊洋的圖片目錄是:/root/openface/data/mydata/train_img/yangyang/
我的圖片目錄是:/root/openface/data/mydata/train_img/lk/
照片要求:
盡量清晰,正面照,單人照,有且只有一張完整的人臉,可以有表情,但是盡量簡單,不要太誇張的表情。照片至少8張,20 張以上為佳。 照片數量越多,效果越好。照片背景不限,衣着不限,越豐富越好,但一定要是同一個人的照片。圖像大小以20~500K 為佳。
圖片預處理:
./util/align-dlib.py data/mydata/train_img/ align outerEyesAndNose data/mydata/aligned_images/ --size 64
特征提取:
./batch-represent/main.lua -outDir data/mydata/generated_charaters/ -data data/mydata/aligned_images/
訓練圖片:
./demos/classifier.py train data/mydata/generated_charaters/
2 使用它做人臉比對
上傳照片:
先將單張照片放入到容器的/root/openface/data/mydata/others/ 目錄,圖片格式盡量統一,比如都使用jpg格式。
調用接口,結果驗證:
./demos/classifier.py infer data/mydata/generated_charaters/classifier.pkl /root/openface/data/mydata/others/{hu,lk }*
這里的/root/openface/data/mydata/others/{hu,lk }* 是需要進行和現有圖片庫做分類比對的圖片, 這里 {hu,lk }* 是一個正則表達式, 表示那個目錄下, hu或lk 開頭的所有文件。 我們可以指定一個具體的路徑,比如:
/root/openface/data/mydata/others/zhangsan.jpg
輸出:
=== /root/openface/data/mydata/others/hg4.jpg ===
Predict huge with 0.91 confidence.
=== /root/openface/data/mydata/others/lk (1).jpg ===
Predict lk with 0.93 confidence.
=== /root/openface/data/mydata/others/lk (2).jpg ===
Predict lk with 0.91 confidence.
如上所見,輸出結果格式是這樣的:
=== 正在進行比對的圖片的全路徑 ===
Predict 人名 with 置信度 confidence。
表示的意思是, 如
=== /root/openface/data/mydata/others/hg4.jpg ===
Predict huge with 0.91 confidence.
意為: /root/openface/data/mydata/others/hg4.jpg 這張圖片是 huge(胡歌)的可能性是0.91。 一般來說, 置信度越小,說明判斷正確的可能性越大, 結果小於1 表示基本可以相信。 大於1 表示基本不可信。
3 常見問題
Q: 人臉圖片無法訓練或無法比對, 出現cant find a face … 報錯
A: 這個很可能是圖片質量問題,圖片要盡量清晰和完整,不能有太大變形,光照不能太暗, 光線要均勻等等。如果圖片沒拍攝好,我們需要刪除重新拍攝,然后上傳。
Q: 同一個人的照片,結果顯示置信度大於1, 是怎么回事?
A: 這種情況是可能發生的,至少有兩個方面原因,1是他的訓練圖片庫的照片質量不高,2是他新上傳的需要進行比對的圖片質量不高。對此我們可以多試幾次,或者提供更加高質量的訓練庫圖片和比對圖片,或者業務上進行控制和優化。
Q: 需要比對的圖片是huge, 怎么被分到了yangyang 這個類別,而且置信度還挺好的,怎么解釋?
A: 這個還是圖片質量問題,有兩個方面原因,同上。
參考:
http://www.cnblogs.com/minsons/p/7922080.html
http://cmusatyalab.github.io/openface/
http://www.cnblogs.com/pandaroll/p/6590339.html
http://blog.csdn.net/u011531010/article/details/52270023