微表情識別

表情識別

2019.12更新了倉庫依賴。

簡介

使用卷積神經網絡構建整個系統,在嘗試了Gabor、LBP等傳統人臉特徵提取方式基礎上,深度模型效果顯著。在FER2013、JAFFE和CK+三個表情識別數據集上進行模型評估。

環境部署

基於Python3和Keras2(TensorFlow後端),具體依賴安裝如下(推薦使用conda或者venv虛擬環境)

  • git clone https://github.com/luanshiyinyang/ExpressionRecognition.git
  • cd ExpressionRecognition
  • pip install -r requirements.txt

數據準備

數據集和預訓練模型均已經上傳到百度網盤,鏈接給出,提取密碼爲2pmd。

項目說明

  1. 傳統方法
    • 數據預處理
      • 圖片降噪
      • 人臉檢測
        • HAAR分類器檢測(opencv)
    • 特徵工程
      • 人臉特徵提取
        • LBP
        • Gabor
      • 分類器
        • SVM
  2. 深度方法
    • 數據預處理
      • 人臉檢測
        • HAAR分類器
        • MTCNN(效果更好)
    • 卷積神經網絡
      • 用於特徵提取+分類

網絡設計

使用經典的卷積神經網絡,模型的構建主要參考2018年CVPR幾篇論文以及谷歌的Going Deeper設計如下網絡結構,輸入層後加入(1,1)卷積層增加非線性表示且模型層次較淺,參數較少(大量參數集中在全連接層)。 

 

模型訓練

主要在FER2013、JAFFE、CK+上進行訓練,JAFFE給出的是半身圖因此做了人臉檢測。最後在FER2013上Pub Test和Pri Test均達到67%左右準確率(該數據集爬蟲採集存在標籤錯誤、水印、動畫圖片等問題),JAFFE和CK+5折交叉驗證均達到99%左右準確率(這兩個數據集爲實驗室採集,較爲準確標準)。

訓練過程見train.ipynb文件 

模型應用

與傳統方法相比,卷積神經網絡表現更好,使用該模型構建識別系統,提供GUI界面和攝像頭實時檢測(攝像必須保證補光足夠)。預測時對一張圖片進行水平翻轉、偏轉15度、平移等增廣得到多個概率分佈,將這些概率分佈加權求和得到最後的概率分佈,此時概率最大的作爲標籤。

注意,GUI預測只顯示最可能是人臉的那個表情,但是對所有檢測到的人臉都會框定預測結果並在圖片上標記,標記後的圖片在results目錄下

  • GUI界面
    • 運行scripts下的gui.py即可(圖片來自百度,侵刪。)
    • 效果圖
  • 實時檢測
    • 運行scripts下的recognition_camera.py即可
    • 效果圖(圖片來自百度,侵刪。)
      • 演示不便

補充說明

具體項目代碼、數據集、模型已經開源於我的Github,歡迎Star或者Fork。

發佈了139 篇原創文章 · 獲贊 32 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章