論文まとめ：Who Left the Dogs Out? 3D Animal Reconstruction with Expectation Maximization in the Loop

# はじめに
ECCV2020より以下の論文のまとめ
[1] B. Biggs, et. al. Who Left the Dogs Out? 3D Animal Reconstruction with Expectation Maximization in the Loop. ECCV2020.

- arXiv
https://arxiv.org/pdf/2007.11110.pdf

- github
https://github.com/benjiebob/WLDO

# 概要
- ネット上にあるような犬の画像から犬の3D poseおよびshapeを end-to-end で推定するモデル（SMBLDモデル）
- 学習時は新たに作成したkeypointとsegmentationのアノテーションなどを用いるが、推論時は単眼monocular画像のみ。つまり推論時の最適化処理が無い
- 3Dモデルの関節角度、shapeも学習で用いるが、shapeに関しては混合ガウス分布を仮定してEMアルゴリズムで解く
- 推論時の最適化が無いにも関わらず、最適化がある既存手法の精度を上回った

## 学習時
- EMアルゴリズムで学習
- 2Dのposeやシルエットを用いる



## 推論時
- 入力は画像のみ
- モデルフィティングのフェーズが必要ないので推論が早い

以下ではそれぞれ左側の入力画像に対して右側のような3D shapeを推定している。バニラなSMALSTモデルなどと比べて同じ犬種内の手足の長さ、尻尾の長さなどの違いを捉えている。

![スクリーンショット 2023-11-08 20.06.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116706/e135c700-e8c2-6c89-9ac8-d0580e2b6da9.png)


# 既存モデルとの比較

![スクリーンショット 2023-11-08 20.29.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116706/e83bce66-1067-dde6-d23d-df952a3dc8f3.png)

## Lions and Tigers and Bears との比較
最上段の本モデルに対して、まず上から3つ目のLions and Tigers and Bears（いわゆるSMALRモデル）と比較する。

SMALRは対象動物を捉えた複数枚の画像とそのpose, シルエットからテンプレートモデルをフィッティングさせながらパラメータ調整をする。

一方で本モデルは学習時に多くの犬で学ぶため、推論時は１枚の画像からposeやshapeを推定できる。

## 3D-Safariとの比較
次に上から２つ目の3D-Safariモデル（いわゆるSMALSTモデル）との比較。

いずれもモデルを学習させ、それを用いて推論するが、SMALSTは推論時に複数の画像でモデルフィッティングさせる一方で、本モデルは推論時に一枚の画像を入力としてpose, shapeをforwardで推定するのみ。

# 推論時の流れとネットワークのアーキテクチャ

![スクリーンショット 2023-11-13 2.43.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116706/1256dcc4-2015-1cfd-9760-b96b88969155.png)


1. この図で左から Input image i を入力する。
2. 学習したencoder（ResNet-50など）からfeature mapを出力する
2. feature mapをそれぞれ独立したモジュール（fc）に入れ、それぞれ translation, focal length, pose, shapeを出力する。
2. これらのうち、pose $\theta$ と shape $\beta$ から3D model（各頂点 $F\_v$）を出力する


# 学習時の流れと Loss

## 1. 3Dモデルの関節を再投影したLoss

![スクリーンショット 2023-11-13 2.58.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116706/8f39d059-6c25-387e-8f4f-5741485d7588.png)

四肢の位置を正しく学習させるため、推定した3Dモデルの関節位置 $F\_J$ を画像上へ再投影し、その2D上の位置からlossを求める。

このとき、モジュールから出力された translation $t$ , focal lentgh $f$ を用いる。

```math
\pi (F_J (\theta, \beta), t, f) 
```

これと人がアノテーションした画像上の関節位置 $\hat{X}$ とでL2誤差を求める。

```math
L_{joints} (\theta, \beta), t, f; \hat{X}) = \| \hat{X} -  \pi (F_J (\theta, \beta), t, f) \|_2 \tag{1}
```

## 2. 3Dモデルのshapeを再投影したLoss

![スクリーンショット 2023-11-13 3.04.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116706/d088f4fa-b6e6-4196-e91f-72c84d694868.png)

正確なshapeを学習させるため、推定した3D shapeを画像上へ再投影し、その2D上のシルエットからlossを求める。

2D上の推定したシルエットはモジュールから出力された translation $t$ , focal lentgh $f$ を用いて

```math
 R (F_V (\theta, \beta), t, f) 
```

と書けるので、これと正解値 $\hat{S}$ とでL2 lossを求める。

```math
L_{sil} (\theta, \beta, t, f; \hat{S}) = \| \hat{S} - R (F_V (\theta, \beta), t, f) \|_2 \tag{2}
```

## 3. pose prior loss

![スクリーンショット 2023-11-13 3.24.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116706/9bc80aad-3a25-cbea-940c-315dd4a4eab8.png)

より形状をリアルにするため、アーティストが作成した3Dモデルもlossとして用いる。各関節はGauss分布を仮定し、以下のマハラノビス距離でlossを求める。

```math
L_{pose} = (\theta, ; \mu_\theta, \Sigma_\theta) = (\theta - \mu_\theta)^T \Sigma_\theta^{-1} (\theta - \mu_\theta) \tag{3}
```

平均 $\mu\_\theta$ は3Dモデルのそれだろうが、分散・共分散行列 $\Sigma\_\theta$ をどうやって求めるかは不明。



## 4. shape prior loss
![スクリーンショット 2023-11-25 15.41.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116706/f370cf71-99cd-5b6b-9cb7-3a6000c687ad.png)

shapeに関してもアーティストが作成した3Dモデルを利用するが、shapeは犬種（ダックスフンド、なんとかレトリバー、etc）によって大きさが大きく違うため、通常のgaussianの過程は適合しない。よって混合Gauss分布を仮定し、EMアルゴリズムで最適化する。

```math
L_{mixture} = (\beta, ; \mu_\beta, \Sigma_\beta, \Pi_{\beta}) = \sum^{M}_{m=1} \Pi^m_{\beta} (\beta - \mu_\beta)^T \Sigma_\beta^{-1} (\beta - \mu_\beta) \tag{5}
```


# 実験方法
## データセット
新たにStanfordExtraというdatasetを作成した。これは以下のような内容
- 20,580画像に120種類の犬がin the wildの状態で写っている（下図を確認する限り、一枚に１匹である）
- 物体によるocclusionは一部にあるそうだ。下図を見る限り、他の犬と重なっているようなシーンは無い。
- annotationは下図のように骨格20点と体の周囲のsegmentionからなる。これをAmazon Mechanical Turkで実施した。

![スクリーンショット 2023-11-24 2.34.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116706/d6b4ef8c-e8df-0e86-8ad7-814e0f1568e0.png)

## train testのsplit
- StanfordExtra datasetを80%のtrainと20%のtestに分離した

## 学習方法
以下の２stepで学習した
1. シルエットlossを省いた学習。学習初期にこれがあると局所解に陥るらしい。またデザイナーが作成した3D keypointを用い、EMアルゴリズムは用いない。これで250epoch学習
1. 諸々用いてEMアルゴリズムで学習。これを50epoch。

# 結果
## メトリクス
メトリクスは以下の２つ
1. annotationされたsegmentationと推論したシルエットでIoUを計算
1. annotationされたkeypointと推論されたkeypointでPCKを計算

## 比較対象
1. SMALモデルを提案した論文の手法（下図では 3D-Mと表記）
1. 論文[2]の手法（下図では CGASと表記）

## 定量的評価

![スクリーンショット 2023-11-24 3.11.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116706/46fc80a8-073a-667d-04b3-831a17a9daa2.png)

既存手法より精度がよい。この２つの比較対象が推論時にannotationを用いたり、最適化したりすることを考えると、本手法はかなりの優位性がありそう。

一方でSMAL系の最新手法を比較対象としないなど、疑問点は残る。

## 定性的評価

![スクリーンショット 2023-11-24 3.17.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116706/e5883e10-196a-c12a-51d4-8a9b362af831.png)

## ablation study
以下の３つをablateしたものと比較した
1. EMアルゴリズムによるshapeのupdateをablate（下図中の -EM）
1. EMアルゴリズムを使用する、しないに関わらず、3D shapeを用いたupdateをablate（下図中の -MoG）
1. 本論文で導入したscale parameter（下図中の -Scale）

![スクリーンショット 2023-11-24 3.34.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116706/aa4a25b5-760e-1e4a-b596-f290fd6c715e.png)

これを見るとsale parameterが特に効いているみたい

# 今後の課題と将来の展望
- 他の犬によるocclusionや素早く動くことによるボケが発生した場合は精度が落ちるので、これの対応が今後の課題
- 将来的にはvideoを用いて精度を上げたい
- 今回は犬のみだが、将来的には他の動物に拡張したい


# 個人的な感想

- <font color="red">１）入力画像が in the wildである、２）推論時に画像のみ入力とする、３）推論時に最適化を行わない、という点を考慮すると、かなり実用化に近づいた成果ではないか。</font>
- <font color="red">一方で先にも書いたが、精度的にはSMAL系の最新手法を比較対象としない点は気になる。</font>


# reference
[2] Biggs, B., Roddick, T., Fitzgibbon, A., Cipolla, R.: Creatures great and SMAL: Recovering the shape and motion of animals from video. In: ACCV (2018)