微表情识别
表情識別
2019.12更新了倉庫依賴。
簡介
使用卷積神經(jīng)網(wǎng)絡(luò)構(gòu)建整個系統(tǒng),在嘗試了Gabor、LBP等傳統(tǒng)人臉特征提取方式基礎(chǔ)上,深度模型效果顯著。在FER2013、JAFFE和CK+三個表情識別數(shù)據(jù)集上進行模型評估。
環(huán)境部署
基于Python3和Keras2(TensorFlow后端),具體依賴安裝如下(推薦使用conda或者venv虛擬環(huán)境)
- git clone https://github.com/luanshiyinyang/ExpressionRecognition.git
- cd ExpressionRecognition
- pip install -r requirements.txt
數(shù)據(jù)準備
數(shù)據(jù)集和預(yù)訓練模型均已經(jīng)上傳到百度網(wǎng)盤,鏈接給出,提取密碼為2pmd。
項目說明
- 數(shù)據(jù)預(yù)處理
- 圖片降噪
- 人臉檢測
- HAAR分類器檢測(opencv)
- 特征工程
- 人臉特征提取
- LBP
- Gabor
- 分類器
- SVM
- 人臉特征提取
- 數(shù)據(jù)預(yù)處理
- 人臉檢測
- HAAR分類器
- MTCNN(效果更好)
- 人臉檢測
- 卷積神經(jīng)網(wǎng)絡(luò)
- 用于特征提取+分類
網(wǎng)絡(luò)設(shè)計
使用經(jīng)典的卷積神經(jīng)網(wǎng)絡(luò),模型的構(gòu)建主要參考2018年CVPR幾篇論文以及谷歌的Going Deeper設(shè)計如下網(wǎng)絡(luò)結(jié)構(gòu),輸入層后加入(1,1)卷積層增加非線性表示且模型層次較淺,參數(shù)較少(大量參數(shù)集中在全連接層)。?
?
模型訓練
主要在FER2013、JAFFE、CK+上進行訓練,JAFFE給出的是半身圖因此做了人臉檢測。最后在FER2013上Pub Test和Pri Test均達到67%左右準確率(該數(shù)據(jù)集爬蟲采集存在標簽錯誤、水印、動畫圖片等問題),JAFFE和CK+5折交叉驗證均達到99%左右準確率(這兩個數(shù)據(jù)集為實驗室采集,較為準確標準)。
訓練過程見train.ipynb文件?
模型應(yīng)用
與傳統(tǒng)方法相比,卷積神經(jīng)網(wǎng)絡(luò)表現(xiàn)更好,使用該模型構(gòu)建識別系統(tǒng),提供GUI界面和攝像頭實時檢測(攝像必須保證補光足夠)。預(yù)測時對一張圖片進行水平翻轉(zhuǎn)、偏轉(zhuǎn)15度、平移等增廣得到多個概率分布,將這些概率分布加權(quán)求和得到最后的概率分布,此時概率最大的作為標簽。
注意,GUI預(yù)測只顯示最可能是人臉的那個表情,但是對所有檢測到的人臉都會框定預(yù)測結(jié)果并在圖片上標記,標記后的圖片在results目錄下。
- GUI界面
- 運行scripts下的gui.py即可(圖片來自百度,侵刪。)
- 效果圖
- 實時檢測
- 運行scripts下的recognition_camera.py即可
- 效果圖(圖片來自百度,侵刪。)
- 演示不便
補充說明
具體項目代碼、數(shù)據(jù)集、模型已經(jīng)開源于我的Github,歡迎Star或者Fork。
總結(jié)
- 上一篇: 使用win7超级终端连接华为交换机并
- 下一篇: WorkTool(一)企业微信群管理机器