基于Opencv的面部識別功能

之前跟老師一起做基于openCV相關的項目所做的一些筆記和學習用工具
如果你喜歡這篇文章不妨點個贊+關注,你的支持是我更新的動力

材料:win10的電腦、普通電腦攝像頭 、python2.6

庫文件:os、keras(以theano作為backend)、opencv、numpy、sklearn

Opencv采用了Haar分類器,其中Haar分類器是Boosting的一個應用,其中boosting算法的核心思想是將弱學習提升成為強學習算法。

弱學習:對一組概念的識別率只比隨機識別高一點。

強學習:對一組概念的識別率很高(只要足夠的數據,弱學習可變成強學習)。

原理:

本學習內容采用了以OpenCV、以theano為后臺的keras深度學習框架為核心采用了python2.7編寫,利用了圖片是以像素構成,且將每個圖片轉化成為灰度圖片,圖片的每個位置表示的是一個像素值,0表示白色,1表示黑色,(0,1)的數值表示不同程度的灰色組成,以兩層卷積和兩層池化將每張圖片進行分類,通過OpenCV的Haar分類器檢測出攝像頭所捕獲到的圖片并利用提訓練好的haarcascade_frontalface_alt.xml模型直接使用來實現對人臉的檢測。

第一步:

利用OpenCV和frontalface分類器剪切圖片同時將文件轉化為灰度圖片保存在指定文件夾中,其中利用OpenCV2中的detectMultiScale函數檢測出圖片中所有的人臉,其中該部分通過外部函數引入讀取圖片,其具體功能理解已加注釋

圖1

第二步:

這部分涉及到神經卷積網絡,建立一個基于CNN的人臉識別模型,同時模型進行存儲和讀取的地方應通過hdf5創建一個后綴為h5的model文件。詳細創建如下

圖2

在dataSet.py文件夾中儲存的DataSet這個用于存儲和格式化讀取訓練數據的類其指向的地址為獲取到的灰度圖片,在def train_model(self)中修改了loss的值等于squared_hinge,由于在執行此文件的時候會報錯

圖3

第三步:

創建攝像頭識別模型,并再次利用OpenCV的haarcascade_frontalface_alt.xml文件對攝像頭所捕獲到的圖形進行識別,同時讀取dataset下的子文件。利用opencv的VideoCapture類來調用攝像頭,其中prob功能是用于設置對攝像頭識別出來的人臉進行對比,并設置顯示為模型已有的label概率

圖4

第四步:

得到圖像如下,只添加了一個個人的模型進文件中

結果圖

如果你喜歡這篇文章不妨點個贊+關注,你的支持是我更新的動力
需要源碼不妨私聊我哦~我們一起交流一下

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容