表情分析入門: FACS（Facial Action Coding System）とは

# さいしょに
この記事は顔学2020アドベントカレンダーの三日目の記事です．今日は表情分析の分野で用いられているFACSについてまとめます．

# FACS（Facial Action Coding System）
FACSは日本語に訳すと顔面動作符号化システムです．人間の顔に現れる表情を，Action Unit（AU）と呼ばれる様々な顔面筋の動作の有無の組み合わせで機械判別可能な形に符号化するための仕組みです．
動作単位を明確にして，その組み合わせにより表情を記述することでベクトル空間モデルなどで表情を扱うことが可能になります．ポール・エクマンという有名な表情研究者が体系立てたものです．

[ポール・エクマングループのページ](https://www.paulekman.com/)にアクセスすると詳しい情報が得られます．

![facs.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/593087/df1b8571-5309-8db7-5ae2-0c8b458c7791.jpeg)
（引用: http://facialcoding.com/）

AUの定義については以下の46種類です．
![図1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/593087/73126a3d-950c-f47a-0926-f5bf6d2b9f17.png)

## 表情分析研究の歴史: デュシェンヌ・スマイル
表情分析研究の歴史は古く，19世紀のフランスの研究者デュシェンヌによる研究が有名です．顔に感覚のない実験協力者（表情を自ら作ることができない）の顔に電極を当て，表情がどのように作られるのかを調べていたのです．彼は研究の中で，「本当の笑顔」と「偽装された笑顔」の違いを発見しました．デュシェンヌによると，本当の笑顔と偽装された笑顔には以下の違いがあるそうです．

- 本当の笑顔: 大頬骨筋と眼輪筋が同時に収縮する
- 偽装された笑顔: 大頬骨筋のみが収縮する

左側が偽装された笑顔で，右側が本当の笑顔だそうです．眼輪筋は自発的に動かすことができないのではないかとデェシェンヌは仮説を立てています．
![スクリーンショット 2020-12-01 20.28.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/593087/fec200e5-6077-2108-4df0-22a3f3a2c361.png)

この結果は近年のエクマンの研究でも部分的に裏付けられています．眼輪筋は二つの部位から構成されており，瞼とその下の皮膚を収縮させる内側の部分と，眼窩の周りを取り巻き眉毛と眉毛のしたの皮膚を引き下げ，頬をもち上げる外側の部分です．エクマンによると，外側の筋肉に関しては，調査の結果10%ほどの人しか自発的にその筋肉を収縮させられなかったそうです．

優秀な俳優など，極めて自然に見える笑顔を出せる人はこの一握りの人たちである可能性が高いということですね．もしくは幸せな思い出を思い出すことで，自然な笑顔を表出させているのでしょう．

さて，このデュシェンヌスマイルですがFACSではAU6とAU12で記述が可能です．AU6は眼輪筋の外側の筋肉による頬の持ち上がりであり，AU12は大頬骨筋の収縮による口角の上昇を表します．

## 基本の6表情と表情認識（FER）
表情分析においては，簡単のために表情の裏に隠れている感情を以下の6つに分類しています．それぞれ特徴が異なっており，これらの感情を顔画像から判別するタスクがFER（Facial Emotion Recognition）です．

- Anger: 怒り
- Disgust: 嫌悪
- Sadness: 悲しみ
- Contempt: 軽蔑・侮辱
- Surprise: 驚き
- Fear: 恐怖

![LieToMe.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/593087/63a7e6e4-e1da-df7d-d66d-fbcfedca45da.jpeg)
（引用: https://sites.tufts.edu/emotiononthebrain/2014/12/08/am-i-in-trouble-interpreting-facial-expressions/）

FERにおけるSoTAについては[Papers With Code](https://paperswithcode.com/task/facial-expression-recognition)から確認ができます．
近年はCNNベースのEnd-To-Endのモデルが用いられることが多いですが，FACSを用いて画像を一度符号化した後に特徴量ベクトルを統計的モデルやベクトル空間モデルで分類することも可能です．

## FACSによる特徴量抽出
画像からFACSを認識するモデルとして有名なのが[OpenFace](https://github.com/TadasBaltrusaitis/OpenFace)です．WebカメラさえあればAUの認識結果を取得することができます．
AUに限らず，顔のHOG特徴量や視線推定もWebカメラの動画のみで実行してくれます．ここから得られたAU特徴量を判別器（SVMなど）にかけることでもある程度表情認識が実現できると思います．

![au_sample.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/593087/b96e3e48-09a6-bc6c-a654-391471f614ff.png)
![gaze_ex.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/593087/0b82e443-4463-ea62-c174-1c38b3616fe2.png)
![appearance.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/593087/3336662d-fabd-746c-a5d1-e550d2a57b5d.png)
（引用: https://github.com/TadasBaltrusaitis/OpenFace)

ちなみに僕は学部時代の卒業研究で隠れマルコフモデル（HMM）に時系列AU特徴を入力することで，動画像からの表情認識を行っていました．
![スクリーンショット 2020-12-01 21.17.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/593087/221bcbb1-0f3c-c104-ed63-40c7bd16f9ad.png)
![スクリーンショット 2020-12-01 21.17.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/593087/dd0fb5bc-a663-49af-b404-2b515a5af7e8.png)
![スクリーンショット 2020-12-01 21.17.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/593087/b834bc34-cb3b-442d-9a5c-176ddff0cbb9.png)

## FACSを極めると?
FACSは表情認識のためのデータセットのアノテーションに利用されています．このアノテーションに関しては，FACSのプロが目視で行っているそうです．
FACSコーダー認定試験なるものが存在し，難易度は相当高いみたいですね．留学してみっちり勉強と訓練をしないと習得できない能力のようで，取得の様子を[ブログ](https://www.lietome.me/entry/2020/03/20/FACS%E8%AA%8D%E5%AE%9A%E3%82%B3%E3%83%BC%E3%83%80%E3%83%BC%E3%81%B8%E3%81%AE%E9%81%93%E3%81%AE%E3%82%8A%E2%91%A2)にまとめている方がいました．認定を受けると尋問・聴取のプロとしての活躍や，ビジネスシーンで円滑に相手とのコミュニケーションを行うためのSST（Social Skill Training）などに貢献ができるようです．

テレビなどで活躍しているメンタリストなども，おそらくこのAUの表出を注意深く観察することで嘘の表情を見破ったりして心を読んでいるのだと思います．

## さいごに
今日は表情分析の分野で使われている顔の符号化手法を紹介しました．
表情認識において手軽に試せるデータセットとしては[CK+データセット](https://ieeexplore.ieee.org/document/5543262)がサイズも小さくておすすめで，多くの研究で用いられているため比較も簡単です．

メンタリストとかに憧れたことがある方は是非もっと勉強してみてください．嘘を見抜く技術に関しては．[顔は口ほどに嘘をつく](https://www.amazon.co.jp/%E9%A1%94%E3%81%AF%E5%8F%A3%E3%81%BB%E3%81%A9%E3%81%AB%E5%98%98%E3%82%92%E3%81%A4%E3%81%8F-%E3%83%9D%E3%83%BC%E3%83%AB%E3%83%BB%E3%82%A8%E3%82%AF%E3%83%9E%E3%83%B3/dp/4309243835)がおすすめです．

追記: 空気を読むを科学する研究所様による微表情分析学習コースがオンラインにて公開されているようです．オフラインでの講演などへの参加が厳しい方でも学習できる数少ないコンテンツです．
http://www.microexpressions.jp/online_course.html

# 参考
- https://www.paulekman.com/
- https://sites.tufts.edu/emotiononthebrain/2014/12/08/am-i-in-trouble-interpreting-facial-expressions/
- https://github.com/TadasBaltrusaitis/OpenFace
- https://www.lietome.me/entry/2020/03/20/
- https://ieeexplore.ieee.org/document/5543262
- [顔は口ほどに嘘をつく](https://www.amazon.co.jp/dp/4309243835/ref=cm_sw_em_r_mt_dp_quJXFbG9E9V7T)
- [表情分析入門](https://www.amazon.co.jp/dp/4414302595/ref=cm_sw_em_r_mt_dp_swJXFb2YZVY01?_encoding=UTF8&psc=1)
- [The Mechanism of Human Facial Expression (Studies in Emotion and Social Interaction)](https://www.amazon.co.jp/dp/0521363926/ref=cm_sw_em_r_mt_dp_QyJXFbE2NB0T1)