見出し画像

Deep Learningによる表情認識の現状とその利用

表情認識とは?

人の感情を表情から判定するタスクを表情認識(Facial Expression Recognition)といいます。タスクとしては、入力の顔画像からその顔の表情ラベルを予測するクラス分類になります。よくあるデータセットでは、5つ~7つ程度のラベルを予測しています。タスクとしては単純なクラス分類になります。

感情の認識の利用シーンはいくつも考えられれます。例えば、飲食店の利用者の感情を認識できれば利用者がどこに不満を感じているかが分かるかもしれませんし、人気の店舗の人気の秘密が分かるかもしれません。また、職場に導入すれば、ストレスの溜まり具合を察知して事前に事故を防げるかもしれません。

利用の仕方としては、Microsoftの感情検出等のAPIの提供も行われていますので簡単に試してみたい場合はよいかと思います。

表情認識の種類

さて、表情認識には大きく2つの研究領域に分けられます。それはMacro ExpressionとMicro Expressionと呼ばれる2つです。Macro Expressionとは一般的にイメージするような大局的な顔の動き(広角があがっているのような感じ)を認識するものです。一方、Micro Expressionは、感情を隠そうとしたときに出てしまう不意の表情を認識します。人は感情を隠すために表情を抑えようとするときMicro Expressionとして表情を抑制しようとしていることが露呈してしまいます。このMicro Expressionを察知することができれば、セキュリティや尋問、賭け事のようなリスクが高いような環境に利用することも考えられます。ただし、Micro Expressionは小さな動きを察知する必要があるため情報を抽出することは容易ではありません。また、Micro Expressionは非常に短い時間に発生する性質があることも難しさのひとつです。約200ms~500ms以下の時間で発生すると考えられています。ちなみに、この時間の短さも、Macro Expressionとの大きな違いになっています。

Macro Expressionの現状

データセットはいくつか使われるものがあるようで、以下の表の1番左の列がデータセットにあたります。「FER2013」が見た中ではベンチマークとしてはよく使われるような気がしました。このデータセットはICML2013のコンペのデータセットとして用意されたもののようで、カテゴリーは次のようになっています。: (0=Angry, 1=Disgust, 2=Fear, 3=Happy, 4=Sad, 5=Surprise, 6=Neutral)。ちなみに、当時の上位5位の精度(Accuracy)は上から0.711、0.692、0.688、0.674、0.652、でした。以下のように、その後に提案されたモデルはよいもので75.2のスコアです。

図参照: Deep Facial Expression Recognition: A Survey

CK+というデータセットはデータ自体が時系列に取得されたデータセットで同じような画像(同じ顔とか)が多いため精度が高くなっていると思います。他のデータセットもそれぞれに特徴があるため、精度に違いが出ています。例えば、jahin07/Emotion-Recognitionでは同様のネットワークで両タスクをテストし、FER2013では66%、CK+では99.87%の精度が出ているようなので、FER2013の値はそこまで大きくは出ていません。

また、このグラフには載っていないですが、Covariance Pooling for Facial Expression Recognition (CVPR2018)はSFEW2.0のバリデーションデータセットに対して58.14%を出しており、上記の比較グラフのモデルよりも精度が高くて、よさそうなモデルだと思います。

Macro Expressionの利用

実際に手元で動かすとしておすすめなのが、oarriaga/face_classificationの実装であす。FER-2013のデータセットでtest accuracy 66%(ICML2013コンペ 4位相当)で、そこそこ精度があり使いやすくまとめられています。実装はReal-time Convolutional Neural Networks for Emotion and Gender Classification (ICRA 2018)の実装です。tensorflowバックエンドのkerasが使われていて、表情認識の他に性別分類も実装されています。表情認識は、FER2013ベースでカテゴリは(0=Angry, 1=Disgust, 2=Fear, 3=Happy, 4=Sad, 5=Surprise, 6=Neutral)に分類されます。使った感想としては、表情認識はよい感じだと思いました。ただし、付属する男女分類が日本人顔に対して精度が悪く、日本人(欧米人以外)には向いてなさそうだなと感じました。

Micro Expressionの現状

Micro Expressionの主要データセットは下記のようになります。特徴的なのはデータのサンプル数(Samples)が少ないことです。また、Facial Action Coding System (FACS)ベースのaction units (AUs)というラベル付の手法があって、下図の「FACS Coded」はそのラベル付があるかどうかを示しています。顔の細かい顔面動作に注目して認識ができます。

FACSに関する詳しい説明がFACS を用いた表情の時系列分析とその展望 -怒りと嫌悪の表情分析を例として- にあります。例えば、以下のように、顔の筋肉の動きにフォーカスしたラベル付けです。FACSは感情に必要な特徴量を帰納的に設計したわけではなく、顔面動作を包括的に表すことができるものを設計したものとなっています。

Micro Expressionの領域では、データが少ない(データを作ることが難しい)こともあってDeep Learningの手法がようやく出てき始めた段階になります。それまでは主に、
・ 3D Histograms of Oriented Gradients (3DHOG)
・ Local Binary Pattern-Three Orthogonal Planes(LBP-TOP) and Variations
・ Histogram of Oriented Optical Flow (HOOF)
のような特徴量設計を行う手法が中心でした。

一方で、Deep Learningを用いた主な手法は以下のようなものがあります。M.Pengさん著のものが目立ちます。

Micro-expression recognition with expression-state constrained spatio-temporal feature representations [Kim et al, 2016] (LSTM + CNN/ Deep Learning+Micro Expressionの元祖感)

Dual Temporal Scale Convolutional Neural Network for Micro-Expression Recognition [Peng et al, 2017] (DTSCNN 当時のSOTAを10%近く更新/M.Pengさん著者 )

Enriched Long-term Recurrent Convolutional Network for Facial Micro-Expression Recognition [Khor et al, 2018] (LSTM+CNN。特徴量としてoptical flowを使用/下表 ELRCN)
コード: IcedDoggie/Micro-Expression-with-Deep-Learning

From Macro to Micro Expression Recognition: Deep Learning on Small Datasets Using Transfer Learning [Peng et al, 2018] (訓練データがどうしても少なくなるので事前学習を提案。MEGC 2018のコンペで全てのタスクにおいて1位。(apex frameを入力)/下表 Residual Network)

Objective classes for micro-facial expression recognition [Davison et al, 2017] (下表 Merghani et al)

Attention Based Residual Network for Micro-Gesture Recognition [Peng et al, 2018] (普通のAttention入れたもの/下表 Residual Network with complex attention)

Micro-Attention for Micro-Expression Recognition [Wang et al, 2018 (second author M.Peng)] (Attentionの入れ方を工夫したバージョン/下表 Residual Network with Micro-Attention)

以下が精度をまとめた表(Wang et al, 2018 より)です。上3つがDeep Learningを使用しない手法で、その後が使用する手法になります。

Micro Expressionの利用

現状では最後の[Wang et al, 2018]の手法が観測範囲で最も精度が出ています。ELRCNはコードが公開されていますが、少し精度が低いので使うなら、[Wang et al, 2018]を実装するのがよいと感じました。
この手法は
・Micro Expressionのデータが少ないことを考慮して、Macro Expressionのデータで事前学習を行なうこと。
・Micro Attentionという一般的なAttentionよりも簡易的な機構を導入したこと。
の2点がキモになっている手法です。

Micro Attentionは以下の図のようにResBlockの中にAttentionの機構を導入します。

公開されている実装はありませんでしたが、実装自体は複雑なものではないので自分で実装もやりやすいと思います。が、複数のデータセットを使うため、データを集めるのが非常に大変で実装よりもデータをロードするまでが面倒くさいことが注意点です。

まとめ

表情認識とその種類(Macro Expression、Micro Expression)について説明した後、Macro Expression、Micro Attentionそれぞれの現状とおすすめの利用手法について説明しました。表情認識では、Facial Micro-Expressions Grand Challengeというワークショップ的なのが毎年実施されている模様なので興味があればそちらも覗いてみることをおすすめします。
Facial Micro-Expressions Grand Challenge 2018 Summary (MEGC 2018 サマリー)
Spotting Micro-Expressions on Long Videos Sequences (MEGC 2019について)

最後に

私が所属している株式会社ACESでは、Deep Learningを用いた画像認識技術を中心に、APIによるアルゴリズムパッケージの提供や、共同研究開発を行なっています。特に、ヒトの認識・解析に強みを持って研究開発を行っておりますので、ご興味のある方は、ぜひお問い合わせください!
【詳細・お問い合わせはこちら】 acesinc.co.jp  sharon.jp

◆画像認識アルゴリズム「SHARON」について
ヒトの行動や感情の認識、モノの検知などを実現する画像認識アルゴリズムを開発しています。スポーツにおけるパフォーマンス分析やマーケティングにおけるヒトの心の動きの可視化、ストレスなどの可視化による健康状態の管理を始めとするAIアルゴリズムを提供しています。

この記事が気に入ったらサポートをしてみませんか?