【論文紹介】SignGAN【CVPR 2022】

# はじめに
本記事は、[ARISE analytics Advent Calendar 2022](https://qiita.com/advent-calendar/2022/arise-analytics)の3日目です。

今回は、コンピュータビジョン系のトップカンファレンス[CVPR2022](https://cvpr2022.thecvf.com/)で発表された論文 [Signing at Scale: Learning to Co-Articulate Signs for Large-Scale Photo-Realistic Sign Language Production](https://openaccess.thecvf.com/content/CVPR2022/papers/Saunders_Signing_at_Scale_Learning_to_Co-Articulate_Signs_for_Large-Scale_Photo-Realistic_CVPR_2022_paper.pdf) を紹介します。

本記事で用いている画像は、論文からの引用になります。


以下に資料を記載します。
<script async class="speakerdeck-embed" data-id="dd796a10d6e640a39a9029cf3cc593d4" data-ratio="1.77777777777778" src="//speakerdeck.com/assets/embed.js"></script>



# 本論文の概要と貢献
本論文は、GANを用いた自由文からの語彙制約のない写実的な連続手話動画の生成・翻訳に取り組んでいます。

本論文の貢献は以下の通りです。

1. 制約がなく、ネイティブが理解できる大規模手話動画生成（翻訳）モデルの提案
2. 連続手話動画生成時に手話単語動画から適切なフレームを選択するFS-Netの提案
3. 写実的な連続手話動画を生成するSignGANの提案
4. 手話ネイティブによる評価を実施し、既存手法に比べ自然な翻訳であることを確認



# SignGANのアーキテクチャ
SignGANは大きく3つの要素に分かれます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2962154/448f5490-780a-c3b7-9fb4-25bcab82d0df.png)


## Text to Gloss
テキストをGloss[^Gloss]（ここではトークン）に変換するための機能です。
テキストと手話は文法が異なるため、前後で異なる系列長への変換問題として扱う必要があります。そこで、今回は系列長U→系列長Zへの変換問題として扱います。
なお、Glossは開始と終わりがわかるようにBOSトークンとEOSトークンを付与します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2962154/b8701e75-68e6-444b-196f-c6c1ec6a3a95.png)

[^Gloss]: 手話言語を（無理やり）文字表現で表したもの。書記言語ではない。

## Gloss to Pose
前段の処理で得られたGlossをもとに、スケルトン情報であるPoseを生成するための機能です。
本機能は以下のステップに分かれます。

### 対応付けられた手話単語映像辞書の取り出し
Gloss（トークン）をもとに、対応付けられた手話単語映像辞書を取り出します。
Glossの系列長（トークン数）がWであれば、取り出される手話単語映像辞書の系列長（個数）もWとなります。ここで、手話単語映像辞書内における人物は複数人であってもよいことがポイントになります。

同一人物でなくてもよい、という制約の緩和により、容易に手話単語映像辞書を増やすことが可能になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2962154/afc24580-5ec6-5449-56d3-da440cbfeea3.png)


### 手話単語映像辞書の結合
取得したW個の手話単語映像辞書を結合し、長さQの系列Iを得ます。
ここで、辞書と辞書の間は線形補完により補います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2962154/5b14167f-9e2e-fa89-9324-6672d0cb722c.png)


### 手話辞書系列の埋め込み表現獲得
手話表現は人によってまちまちです。そのため、異なる人物による手話単語映像辞書を単純に結合すると、手話表現のスピードや癖に違いが生じ、違和感のもとになります。
そこで、冗長なフレームを間引くためFS-Net（Frame Selection Network）を適用します。その前段として、系列Iから成る手話表現を埋め込み表現に変換します。なお、この変換には筆者の先行研究[^ECCV]を用います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2962154/94998872-cd4b-b63f-4f00-68365ec6b070.png)


### 手話辞書系列の埋め込み表現獲得
得られた埋め込み表現をもとに、FS-Netを用いフレーム選択を行います。
これにより、なめらかなスケルトン系列が得られます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2962154/763488ba-d527-b327-711f-71f98927a7d4.png)

[^ECCV]: Progressive Transformers for End-to-End Sign Language Production（ECCV 2020）


## Pose to Video
前段までの処理により、なめらかなスケルトン系列が得られました。しかし、スケルトン系列では人間が見ても理解できないため、写実的な手話映像系列に変換（生成）する必要があります。
ただし、一般的なGANベースの手法では、スケルトンと手話単語映像辞書の対応付けを行ったとき、人物も強制的に対応付けされます。そのため、生成された手話映像は途中で人物が変わってしまい違和感のもとになります。そこで、本手法ではStyleGANをベースとしたスタイル画像による人物指定を行います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2962154/e3c0b764-f185-35c6-20d6-32c71f2a8811.png)

加えて、手話において重要な要素である手形状を正しく生成するため、Hand-Keypoint-Lossを導入します。これは生成画像から手形状のKeypoint（特徴点）を取得し、Keypointの確かさらしさを判定するための損失関数です。

なお、手画像をそのまま用いて確かさらしさを判定しないのは、
手話は手指の動きが多くぶれが発生しやすいためです。
ぶれが発生すると、鮮明な手画像が得られないため確かさらしさの判定に影響が生じます。Keypointを導入することで、これを解消しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2962154/bcbfcbfc-871b-03fc-d3a3-1e4ad1756586.png)

なお、Hand-Keypoint-Lossを導入しない場合、以下のように手指がない例が生成されてしまいます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2962154/d7a842ae-0c10-9656-1761-c982815cad83.png)


# 実験

実験においては、各機能の独立した評価に加え、ネイティブによる定性評価を行っています。評価においても以下に示す多様なデータセットが用いられており、多方面から評価されています。

* RWTH-PHOENIX-Weather 2014 T：ドイツの手話通訳付きニュース・天気予報 
* CSL-Daily：スタジオで収録された中国手話の日常会話 
* C4A dataset : 多様な手話通訳者が含まれる高画質データセット。写実画像生成に使う

## 実験① Text to Gloss
ドメインが限定的なPHOENIX14T（天気予報）データセットでは、Data Augmentationを使わない既存手法[^baseline]に対し優位性が確認できました。ただし、ドメインの制約がないmDGS-VおよびmDGSデータセットではスコアが低く、大規模語彙への対応の必要性が示唆される結果となりました。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2962154/2991bc09-cc74-a443-08f9-0cc69cab43d5.png)

[^baseline]: ベースラインは、 BLEU-4  : 20.23（PHOENIX14T）、 BLEU-4  : 23.17（PHOENIX14T + Data Augmentation）

## 実験② Gloss to Pose
手話翻訳モデルに対し、生成したスケルトン情報を用い、スケルトン→文章の翻訳タスクを学習しモデルの性能を評価しました。
既存の生成モデルに対し、BLEU-4とROUGEを用いて評価した結果、既存手法に対する有効性とFS-Netによる冗長フレーム除去の有効性が確認できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2962154/2d8d3f40-0278-e846-bb0c-8ac06729b0c5.png)

また、手話ユーザによる定性評価では、スケルトン生成方法だけが異なる同一シーケンスから生成した写実映像を視聴し、どちらが理解しやすいかを確認しました。この結果、今回の提案手法であるFS-Netを用いた手法のほうが理解度が高いという結果が得られました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2962154/f8076095-620d-12f9-0aeb-220ab1d1a196.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2962154/58588a52-e62e-5590-700f-0f7dcd53f7f6.png)


## 実験③ Pose to Video
複数の指標を用いてSignGANを評価しました。この結果、C4Aデータセットを用いた評価において有効性が確認できました。特にHand SSIMとHand Poseにおいては、Hand Keypoint Loss の有効性が確認できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2962154/760412de-8209-17d1-393d-60694cc1927a.png)


なお、各指標の意味は以下の通りです。

* SSIM: 画像の品質評価に用いる指標。生成画像と正解画像の輝度・コントラスト・構造を比較することで算出。 
* Hand SSIM: SSIMを手に対して算出したもの。
* Hand Pose: 生成画像と正解画像の Hand Keypoint の距離差。手位置のずれを評価する。 
* FID:画像の品質評価に用いる指標。生成画像の分布と実画像の分布の差を示す。

また、定性評価においても、生成動画を48人の被験者（うち28％が手話話者）に視聴してもらい、写実性を評価SignGANのほうが良いと答えた被験者の割合を測定しました。この結果、すべてのベースラインに対し、8割以上の被験者がSignGANのほうが写実性が高いと評価しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2962154/bc124a5b-820f-d877-9dcd-7135544fc3d9.png)


# まとめ

本論文では、GANを用いた自由文からの語彙制約のない写実的な連続手話動画の生成・翻訳に取り組みました。

手話生成では、ネイティブから見た違和感をなくすことが重要です。そのため、① FS-Netを用いたフレームの選択、②Hand-Keypoint-Lossの導入による手指形状の違和感の削減、を提案しました。
これにより、ネイティブが見ても非常に自然な手話表現が実現できました。
特に大きなポイントはHand-Keypoint-Lossであり、この考え方は他ドメインにも流用可能な考え方です。

画像生成技術は近年著しい発展を遂げていますが、人物が登場する動画への応用にはまだクリアすべきハードルがいくつかあります。
本論文は、非常に細かい部分での整合性が求められる手話映像を対象に、大きなハードルをクリアした研究です。本論文をきっかけに、様々な応用が広がることが期待されます。