當前位置:
首頁 > 知識 > python3+dlib人臉識別及情緒分析

python3+dlib人臉識別及情緒分析

識別規則

1、嘴巴張開距離占面部識別框寬度的比例越大,說明情緒越激動,可能是非常開心,也可能是極度憤怒。

2、眉毛上揚,17-21 或者 22-26 號特徵點距離面部識別框頂部與識別框高度的比值越小,說明眉毛上揚越厲害,可表示驚訝、開心。眉毛的傾斜角度,開心時眉毛一般是上揚,憤怒時皺眉,同時眉毛下壓的比較厲害。

3、眯眼睛,人在開懷大笑的時候會不自覺的眯起眼睛,憤怒或者驚訝的時候會瞪大眼睛。

系統缺點:不能捕捉細微表情的變化,只能大致的判斷出人的情緒,開心、憤怒、驚訝、自然。

系統優點:結構簡單,易於上手。

應用領域:微笑抓拍,捕捉瞬間的美好、緩解兒童自閉症、互動式遊戲開發。

由於人感情的複雜性,這些表情確實不能完完全全的代表一個人內心深處的情緒波動,如要提高判斷的準確性,則需要心率檢測、語音處理等綜合評價。

開發環境搭建

1、安裝VS2015,因為最新版的dlib-19.10需要這個版本的vscode

2、安裝opencv(whl方式安裝):

從pythonlibs下載需要的版本whl文件,比如(opencv_python?3.3.0+contrib?cp36?cp36m?win_amd64.whl)

然後在本地使用pip install 安裝。 注意文件位置下安裝(如:C:downloadxxx.whl)

3、安裝dlib(whl方式安裝):

在這裡下載dlib的各種版本的whl文件,然後在根目錄下打開cmd直接安裝即可。

但是為了學習使用dlib中的各種python實常式序,還是需要下載一個dlib的壓縮包。

直接訪問dlib官網即可下載:http://dlib.net/ml.html

dlib各種版本的whl文件:https://pypi.python.org/simple/dlib/

4、如果想要使用人臉模型特徵標定的話,還需要一個人臉面部形狀預測器,這個可以通過自己的照片進行訓練,也可以使用dlib作者給出的一個訓練好的預測器:

實施思路

具體步驟

首先是利用dlib進行人臉識別:

然後實例化一個 shape_predictor 對象,使用dlib作者訓練好人臉特徵檢測器,進行人臉的特徵點標定。

標定的時候使用opencv的circle方法,在特徵點的坐標上面添加水印,內容就是特徵點的序號和位置。

到此,68個特徵點的信息就獲取到了,下面就需要跟根據這個68個特徵點的坐標信息,進行綜合 計算,作為每個表情的判斷指標。

根據上面說到的我的判斷指標,先計算嘴巴的張開比例,由於人離攝像頭距離的遠近,導致人臉識別框的大小不一,故選擇比例來作為判斷指標。

在選擇指標的標準數值之前,先對多個開心的人臉照片進行分析。計算開心時的嘴巴張卡比例的平均。

下面是截取對人眉毛的數據處理方法,對左邊眉毛上面的5個特徵點進行線性擬合,擬合出一個一次函數直線,用擬合直線的斜率近似代表眉毛的傾斜程度。

我計算了25個人臉的開心表情的嘴巴張開比例、嘴巴寬度、眼睛張開程度、眉毛傾斜程度,導入excel表格生成折線圖:

通過折線圖能很明顯的看出什麼參數可以使用,什麼參數的可信度不高,什麼參數在那個範圍內可以作為一個指標。

同樣的方法,計算人憤怒、驚訝、自然時的數據折線圖。

通過對多個不同表情數據的分析,得出每個指標的參考值,可以寫出簡單的表情分類標準:

識別之後:

源代碼:

獲取源碼

作者:Andrew_qian

源自:www.cnblogs.com/qsyll0916/p/8893790.html

聲明:文章著作權歸作者所有,如有侵權,請聯繫小編刪除


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 python 的精彩文章:

Python基礎數據類型考試題你能及格嘛?
大數據測試學習筆記之Python工具集

TAG:python |