論文まとめ：Facial expression recognition considering individual differences in facial structure and texture

# はじめに
IET Computer Vision というところから以下の論文
[1] J. Yi, et. al. "Facial expression recognition considering individual differences in facial structure and texture"
のまとめ

論文のリンク：
https://ietresearch.onlinelibrary.wiley.com/doi/pdf/10.1049/iet-cvi.2013.0171

# 概要
- 動画から表情を読み取るモデルである
- 個人による違いを考慮している。具体的には構造的特徴量と文脈情報の２つを用いる
- 分類器はRBF neural networkを用いる


# モデルの全体像
以下のような３つのパーツからなる。

1. 特徴点の検出 (feature Point Detection)
1. 特徴量の抽出 (Feature Extraction)
1. 分類 (Classification)


# 特徴点の検出 (feature Point Detection)
[2] で提示されているAAM アルゴリズムを用いている。ちゃんと読んでいないが、エッジを利用したshapeにテクスチャ情報を組み合わせてshapeを検出するようだ。求める shape を Sとし、これを境界の頂点群、v を頂点数として、

```math
S = \left( x_1, y_1, x_2, y_2, \cdots , x_v, y_v \right)^T \tag{1}
```

とする。


#  特徴量の抽出 (Feature Extraction)
## １）feature pointの選択
まず、AAMで得られた106個のポイントから、以下の図のような

![スクリーンショット 2022-03-16 17.26.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116706/dfdaf232-c0f7-4315-d3c7-a5b2a6daa677.png)

２６個のポイントを選択する。以下はその場所の一覧。

![スクリーンショット 2022-03-16 17.27.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116706/2c276765-8e6a-0a08-87f1-b0d262830af4.png)

また以下のFig5は26個のポイント例だが、上側が女性、下側が男性で、左列はneutralな表情、右側はsurpriseな表情。

![スクリーンショット 2022-03-16 17.38.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116706/290512f5-3748-8ba3-42fb-e555fa23d201.png)

ここで、neutralな表情と対象とする表情はdatasetの特性上以下のようになる。

![スクリーンショット 2022-03-15 16.02.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116706/f3332b7d-4994-a7d5-304d-07b3b2b57de0.png)

開始のフレームはneutralであり、終了時点のフレームはなんらかの表情を想定している。

## ２）ベクトルの生成
$p\_i$ : 特徴ポイントの i 番目
$d\_{ij}, \ (i,j=1,2,\cdots , 26 \ i \neq j)$ : i 番目の特徴ポイントから j 番目の特徴ポイントまでの距離
として、任意の特徴ポイントからそれ以外の特徴ポイントまでの距離を

```math
d_{ij} = \| p_i - p_j \| = \sqrt{\left( x_i - x_j \right)^2 + \left( y_i - y_j \right)^2} \tag{4}
```

<font color="red">論文中の(4)式はルートの中がマイナスになっているので間違いか？</font>

また任意の特徴ポイント３点 i,j,kを考え、i から j 、i から k へのベクトルをそれぞれ以下で定義する。

```math
\begin{eqnarray}
l_{ij} &=& p_j - p_i = (x_j - x_i, y_j - y_i) \\
l_{ik} &=& p_j - p_i = (x_k - x_i, y_k - y_i) 
\end{eqnarray}
```

としてベクトルを作り、

```math
\alpha_{l_{ij}, l_{ik}} = \arccos \left( \frac{l_{ij} \cdot l_{jk}}{|l_{ij}||l_{ik}|} \right)
```

としてベクトル間の角度を求める。

## FPDRC, CARC
まずはFPDRC(feature point distance ratio coefficient)から。

これは以下のように、ニュートラルな表情の特徴点間距離に対する、ある感情の特徴点間距離で算出する。

```math
k_d(i, j) = \frac{d^{expression}_{ij}}{d^{neutral}_{ij}} \tag{8}
```

<font color="red">i と j の関数である事を明示するため、この文字を加えている。</font>

以下のサンプル（Fig7の上側）であれば、

![スクリーンショット 2022-03-17 1.02.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116706/b256f9a1-4bfd-b8a5-c053-fdfcfe2cd1dc.png)

situation1は大きな値となり、situation3は小さな値となるだろう。

当然以下のように i, jの組み合わせによって値は異なる。

![スクリーンショット 2022-03-17 1.05.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116706/3bfa34f4-4cd8-349d-fddb-30500e2823a1.png)

組み合わせ総数はコンビネーションの26, 2個なので、$C^2\_{26} = 325$ 個。

ここから変動の小さいものを以下の条件で除外する。

```math
|k_{d - final} - 1| \leq K \tag{9}
```

CARC(connection angle ratio coefficient)に関しても同様で、ニュートラルな表情の特徴点間角度に対する、ある感情の特徴点間角度で算出する。

```math
k_{\alpha} = \frac{\alpha^{expression}_{l_{ij}l_{ik}}}{\alpha^{neutral}_{l_{ij}l_{ik}}} \tag{10}
```

こちらはi,j,kの組み合わせになるので、 $C^3_{26} = 7800$ 存在する。

同様に変動が小さいものは削除する。

```math
|k_{\alpha - final} - 1| \leq K \tag{11}
```

## skin deformation energy parameter
ここまでは特徴量として特徴点同士の位置関係や角度を採用したが、それに加えてテクスチャ情報も加える。具体的には以下の図（Fig10）のように２つの領域を対象としている。

![スクリーンショット 2022-03-17 10.48.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116706/33ba3750-2dbd-2ab1-18f0-fe1407d6b4fc.png)

- 15, 16, 9, 2 からなる四角形領域
- 3, 10, 13, 6 からなる四角形領域

これに対し、以下の図（Fig11）のようなプロセスで特徴量を抽出する。

![スクリーンショット 2022-03-17 10.50.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116706/bf5a3c85-8087-fb4d-9c8c-d8a46d9ddd45.png)

1. 抽出した２領域をリサイズする
1. それをフーリエ変換する
1. neutralの周波数領域と対象とする表情の周波数領域で比をとる
1. PCAで次元削減する

フーリエ変換して得た周波数領域の情報のうち、neutralなものに対するものを

```math
B1 =
 \begin{pmatrix}
b^1_{11} & \cdots & b^1_{1N} \\
\vdots & \ddots & \vdots \\
b^1_{M1} & \cdots & b^1_{MN} \\
\end{pmatrix} \tag{12}
```

とする。これと対象とする表情の周波数領域の情報を $B2$ として、その要素ごとの比を求める。

```math
\begin{eqnarray}
{\bf B} = B1 / B2 &=&
\begin{pmatrix}
b^1_{11} / b^2_{11} & \cdots & b^1_{1N} / b^2_{1N} \\
\vdots & \ddots & \vdots \\
b^1_{M1} / b^2_{M1} & \cdots & b^1_{MN} / b^2_{MN} \\
\end{pmatrix} \\
&=& 
\begin{pmatrix}
b_{11} & \cdots & b_{1N} \\
\vdots & \ddots & \vdots \\
b_{M1} & \cdots & b_{MN} \\
\end{pmatrix} \\
 \tag{14}
\end{eqnarray}
```

## 特徴量の全て
これら３つの特徴量を組み合わせる。

```math
k_{final} = \left( k_{d-final}, k_{\alpha - finale} , k_{s-final} \right) \tag{15}
```


# 識別器
識別器は以下の図のような radial basis function(RBF) neural network を用いる。

![スクリーンショット 2022-03-15 16.03.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116706/70c62870-3897-0799-5899-982afbcfdc2c.png)

<font color="blue">論文中に詳細は書かれていないが、記述から推測すると以下のようなものか（？）</font>

まず上図（Fig3）中の左における入力は特徴量である $k\_{final}$ のはずなので n はこの次元に相当するだろう。

```math
X_n = k_{final, \ n}
```

次に、hidden layerではそれらにgaussian radial basis functionがかかる。

```math
H_m = e^{|X - c_m|^2}
```

最後にこれらに重みをかけた上で足し合わせる。ただし、６分類であることを考えると以下のような形か？ W を (６クラス) x M の重み行列として、

```math
output = softmax \left( {\bf W} \cdot {\bf H} \right)
```

となるだろうか。

# 実験と結果
以下の２つのdatasetで実験を行った。
- Cohn-Kanade database
- BHU (Beihang University) facial expression database

実験は以下の３段階で行った。
1. (9)式や(11)式の K 値を探索する
1. 求めた K 値で評価する
1. 他のモデルと比較する

以下は求めたK値で２つのデーセットに対して推論した結果。confusion matrixで評価している。

![スクリーンショット 2022-03-17 12.13.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116706/c734979f-15cd-6a7b-e1fb-b095fe246177.png)

以下は他のモデルと比較した結果。最右が３つの特徴量を組み合わせた手法。

![スクリーンショット 2022-03-17 12.15.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116706/14bddc9e-2a5f-7e6b-1ac2-bca4ddb9cd08.png)

# 本手法の問題点（Conclusion and future workより）
本手法は以下の問題点がある

1. neutralな表情のフレームと、それとは別にneutralでない未知の表情のフレームが存在する必要がある
1. 実験室で撮られたようなdatasetでしか精度を検証していないので、照明環境が変化したり、あるいは複数人が存在する場合には対応していない


# reference
[2] Cootes, T.F., Taylor, C.J., Cooper, D.H., Graham, J.: ‘Active shape models-their training and application’, Comput. Vis. Image Underst., 1995, 61, (1), pp. 38–59