-
- 人臉識別介紹
- 平臺環境需求
- 技術點
- 系統流程
- 細節設計
- 人臉檢測
- 人臉關鍵點定位
- 人臉特征提取
- 模型的訓練
- 模型的部署
- MySQL數據庫的使用
- MFC工程的搭建
- 軟件使用
人臉識別介紹
人臉識別技術是一項非接觸式、用戶友好、非配合型的計算機視覺識別技術。隨著機器學習、深度學習等技術的發展,人臉識別的應用正日趨完善和成熟。本文將介紹人臉識別技術如何用于考勤/簽到系統。
本文將主要從以下幾個方面闡述:
- 平臺環境需求
- 涉及的技術點
- 人臉識別系統流程
- 細節設計
平臺環境需求
- 操作系統:Windows 64位
- 第三方庫:OpenCV,Caffe,boost
- 開發語言:C++
- 數據庫:MySQL
技術點
adaboost算法和CNN用于人臉檢測與定位;?
隨機森林算法/CNN用于人臉關鍵點標定;?
卷積神經網絡用于人臉特征提取;?
MFC用于設計系統操作界面;?
MySQL數據庫用于管理人物-人臉特征數據庫;?
Caffe框架用于上述環節中CNN模型的訓練;?
使用Caffe的C++接口進模型行部署和使用;?
使用connector C++進行MySQL數據庫的連接。
系統流程
考勤系統主要包含兩個操作:注冊和實時識別記錄。
注冊是指管理員通過軟件界面將需考勤人員登記入庫。 這里要輸入待考勤人員的信息。?
實時識別記錄是系統自動對來往人群進行人臉識別,并記錄通行者的身份。
進行注冊的流程如下:
實時識別的流程如下:
細節設計
人臉檢測
使用OpenCV的人臉檢測器進行人臉的初步檢測,使用Caffe訓練CNN網絡進行人臉的二分類判定,將兩部分合在一起完成人臉檢測。此環節需注意根據應用場景調整參數,做到性能與召回率的平衡。
也可使用Python+OpenCV進行視頻中的人臉檢測,參考這篇文章。
人臉關鍵點定位
關鍵點定位的目標是在確知人臉位置的基礎上,精確定位面部的關鍵點,如下圖示意:
獲得面部關鍵點的目的是進行人臉的對齊和標準化。標準化的人臉輸入可以獲得更高的人臉識別精度。
人臉特征提取
人臉特征提取是根據上述標準化的人臉區域圖塊,提取出數字化的特征。即完成從RGB信息到數值特征的變換。此環節需要盡量使得同一個人物的不同人臉所提取到的特征盡可能相似,而不同人物的人臉所提取的特征盡可能相異。
模型的訓練
人臉識別的CNN網絡模型的訓練采用CASIA-Webface數據庫,具體訓練方式參見我的這篇文章。訓練模型的流程參考我的github項目。
本模型在LFW評測集上達到了接近97%的準確率。具備一定的實用性。
模型的部署
部署主要考慮Caffe在Windows平臺的移植,官方的Caffe對Windows系統并不支持,為了使用Caffe的C++接口,我們需要使用Windows版本的Caffe,微軟出了一個版本的Caffe,參考這里。
MySQL數據庫的使用
MySQL的安裝和配置詳見這里。?
我們使用默認的3306端口,配置好賬戶密碼后,即可創建數據表。
MFC工程的搭建
使用Visual Studio 2013創建MFC工程,設計本軟件的界面。詳細的配置流程參考這里。
本軟件設計界面如下?
主要包括注冊和搜索兩個功能。點擊注冊時,按鈕下方出現輸入框,用于輸入待考察人物的信息。
軟件使用
注冊,點擊注冊按鈕,并選定需要注冊的人臉。?
?
輸入人物信息,并提交到數據庫。?
?
搜索,點擊搜索,界面中實時識別人物,并將識別到的信息展示在人臉上。?