Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Impersonator++] Liquid Warping GAN with Attention: A Unified Framework for Human Image Synthesis #113

Open
Yagami360 opened this issue Dec 23, 2020 · 0 comments

Comments

@Yagami360
Copy link
Owner

0. 論文情報・リンク

1. どんなもの?

  • 姿勢変換や仮想試着などの人物画像変換タスク全般において、{複数の参照画像の活用・AttLWB の構造・姿勢情報と人物形状の分離・推論データでの追加学習}などの工夫により、{人物同一性・自然な変形・ぼやけの小ささ}など面で品質の高い画像を生成することを実現した人物画像 image-to-image モデル

2. 先行研究と比べてどこがすごいの?

  • 目標画像に対して参照画像を反映した人物画像を生成するモデルには、pix2pix のような image-to-image モデルと Soft-Gated Warping-GAN のような変形ベースモデルが存在するが、前者のモデルでは生成画像にぼやけが生じたり、後者のモデルでは不自然な変形になってしまうという問題が存在する。
    本手法では、姿勢変換や仮想試着などの人物画像変換タスク全般において、{複数の参照画像の活用・AttLWB の構造・姿勢情報と人物形状の分離・推論データでの追加学習}などの工夫により、{人物同一性・自然な変形・ぼやけの小ささ}など面で品質の高い画像を生成することを実現している。
  • また、様々な衣装を着用した様々な姿勢での人物ダンス動画を含む独自のデータセットである iPER データセットと MotionSynthetic データセットを公開している

3. 技術や手法の"キモ"はどこにある?

  • アーキテクチャの全体像

    上図は本手法でのアーキテクチャ全体像を示した図である。
    本手法のアーキテクチャは以下の3つのモジュールから構成される

    1. Body Mesh Recovery
      SMPL 系の3D再構成モデルである HMR を用いて、複数のポースでの参照人物画像 {I_(s_1 ),I_(s_2 ),…,I_(s_n ) } と目標人物画像 I_r の SMPL 3Dメッシュを推定し、メッシュの対応関係?(UV値のこと?)を示したマップ画像 C_si,C_t (densepose で出力されるようなUV画像?)をレンダリングする。
      ※ HMR : 論文「End-to-end Recovery of Human Shape and Pose」

    2. Flow Composition
      参照画像と目標画像のUVマップ画像 C_si,C_t と SMPL 3Dメッシュを2D空間にレンダリングした2D画像より、参照画像から目標画像への変換フロー を計算する。
      この変換フロー により、参照画像は背景と前景に分割される。
      背景は複数の参照画像で同じような画像になるので、ある参照画像に対しての背景をランダムに1つ選択したものを背景としてする。また変換フロー により、目標画像に対しての合成画像 を得る

    3. Liquid Warping GAN
      参照画像の分離した背景と前景を再合成し、参照画像を反映した目標生成画像を生成するモジュール。
      背景を生成するためのネットワーク G_BG 、参照画像を再構成するためのネットワーク G_SID 、参照画像を反映した目標画像を生成するネットワーク G_TSF の3つのネットワークから構成される。
      参照画像の詳細を保持し生成画像のぼやけを軽減するために、LWB [Liquid Warping Block] と AttLWB [Attentional Liquid Warping Block] の構造を新たに導入している。

  • Body Mesh Recovery

    SMPL 系の3D再構成モデルである HMR を用いて、複数のポースでの参照人物画像 と目標人物画像 I_r から、参照画像と目標画像ぞれぞれのSMPL制御パラメーター{θ・β・M(θ,β)}とカメラパラメーターKを取得する

  • Flow Composition

    Flow Composition では、以下の処理を行う。

    1. 生成したSMPL3Dメッシュに対して、カメラパラメーターKのカメラで2D画像(weight index map W とcorrespondence maps C)にレンダリングする。
      → weight index map W はどのようなもの?
      → correspondence maps C は、densepose のようなUV座標画像?
    2. SMPL3Dメッシュの面重心座標を計算する。
    3. 面重心座標からメッシュ面座標 を求める。
    4. 参照画像の correspondence maps C とメッシュ面座標 f_(s_i ) が一致するように、参照画像から目標画像への変換フロー を計算する。(a) ~ (d) までの処理は、以下のアルゴリズム表のようになる

      5. correspondence maps C に基づいて、元画像をマスクすることで、背景画像と前景画像を分離する。
      背景は複数の参照画像で同じような画像になるので、ある参照画像に対しての背景をランダムに1つ選択したものを背景としてする。
      6. 変換フロー T により、参照画像の前景画像を目標画像の形状に変形する。
  • Attentional Liquid Warping GAN の生成器

    参照画像の分離した背景と前景を再合成し、参照画像を反映した目標生成画像を生成するモジュール。
    以下の3つのネットワークから構成される。
    ① 背景を生成するためのネットワーク G_BG
    ② 参照画像を再構成するためのネットワーク G_SID
    ③ 参照画像を反映した目標画像を生成するネットワーク G_TSF

    この内、G_BG と G_SID は異なるパラメーターをもつ同じ類似のネットワークであり、CycleGAN のネットワークのように、encoder-decoder ネットワークのボトルネック部分に6つの ResBlock をもつ ResNet と Unet を組み合わせたネットワーク(ResUNet)構造になっている。
    但し G_SID では、ネットワーク内部の特徴マップを G_TSF ネットワークに、AttLWB [Attentional Liquid Warping Block] の構造で入力することにより、参照画像の詳細を保持し生成画像のぼやけを軽減する工夫を行っている。

    また、G_SID と G_TSF の出力層では3チャンネルのRGB画像 P 以外にも1チェンネルのマスク画像 A も生成するようにして、最終的な出力画像を背景生成画像と人物生成画像でマスク合成して出力するようにしている。

    • LWB [Liquid Warping Block] と AttLWB [Attentional Liquid Warping Block]

      LWB では、複数の参照画像からの特徴量を G_TSF ネットワークに入力するために、以下のような処理を行う。
      1. G_SID ネットワークの各 encoder 層からの(参照画像に対しての)特徴マップ に対して、参照画像から目標画像への変換フロー T を Bilinear サンプリングで適用し、目標画像の形状になるように特徴マップを変形する。
      2. その後、変形した各参照画像の特徴マップの和をとり、元の目標画像の特徴マップに加算する。

    AttLWB は、LWB に埋め込み空間内での attention 処理を加えた構造なっており、以下のような処理を行う。

    1. G_SID ネットワークの各 encoder 層からの(参照画像に対しての)特徴マップ と目標画像特徴マップを、埋め込み空間に埋め込む
    2. 埋め込んだ参照画像特徴量と目標画像特徴量に関しての、大域的な特徴類似度を学習する
    3. 大域的な特徴類似度と、埋め込んだ参照画像特徴量を埋め込み空間内で線形結合する(attention)
    4. 線形結合した特徴量と SPADE で G_TSF ネットワークに入力する
      より詳細には、AttLWB では以下のアルゴリズム表のような処理を行う。
  • Attentional Liquid Warping GAN の識別器

    本手法では識別器として、{画像全体の識別器・身体の識別器・顔の識別器}の3つの識別器を採用することで、人体の衣服や顔の識別など、生成された画像のさまざまな側面に焦点を向けるように促進している。
    ※ 実際に3つの識別器を採用することで、生成画像における身体の衣装や顔の品質が向上するのかの実験結果は論文には記載がない?

    各識別器のネットワーク構造としては、PatchGAN を採用している。

  • 損失関数
    Liquid Warping GAN のネットワークは、以下の損失関数で学習される。

    • Perceptual Loss

      正解画像と生成画像との間の VGG perceptual loss

    • Face Identity Loss

    目標人物画像からクロップした顔領域画像に対しての損失関数。 顔の同一性を向上させる効果がある
    • Adversarial Loss
    LSGAN での Adv loss。 本手法では{画像全体の識別器・身体の識別器・顔の識別器}の3つの識別器が存在するので、 それぞれに応じた3つの 生成器側 Adv loss の線形結合になる。
    • Attention Regularization Loss

      正解 attention mask との損失関数を取らずに、attention mask を生成すると、
      attention 値が容易に1に飽和してしまうので、
      生成 attention mask に TV loss で制約を課す損失関数を追加する。
      ※ TV loss は、生成画像を滑らかさにする効果がある
  • 推論データでの追加学習
    本手法では、上記手法で学習した Attentional Liquid Warping GAN モデルに対して、
    推論時のデータで追加学習を行うことで、その推論データでの品質を向上させている。

    この際に、識別器に関してはゼロから学習し直すようにする。
    また、識別器としては大域的な識別器のみを使用する
    推論データでの追加学習時の損失関数は、Adv loss を除いた損失関数となる。

4. どうやって有効だと検証した?

  • 学習用データセット

    • iPER datset


      様々な衣装を着用した様々な姿勢での人物ダンス動画を含む独自のデータセットである iPER データセットを公開している。
      ・人物の数:体型・身長・性別などの条件が異なる30人
      ・人物の姿勢:ポースAとランダム動作の姿勢
      ・服の数:103 着
    • MotionSynthetic dataset
    • FashionVideo dataset
    • Youtube-Dancer-18 dataset
  • 既存のモデルとの定性比較検証

    本手法が最も品質の高い生成画像を生成できている。
    特に生成画像におけるぼやけの小ささや、元の目標人物の身体などを人物同一性を保存している点に注目

  • 定性検証


    姿勢変換や仮想試着などの複数のタスクで、品質の高い画像を生成できている。

  • 定量検証

    本手法が最も高い品質スコアを実現している

  • 推論データでの追加学習の効果

    推論データでの追加学習で、服テスクチャのぼやけや人物同一性が向上している。

5. 議論はあるか?

  • 識別器として、{画像全体の識別器・身体の識別器・顔の識別器}の3つの識別器を採用する方法は、他の人体生成モデルでも有効な方法と思われる
  • AttLWB で埋め込み空間内で attention 合成を行う方法は、生成画像のぼやけを軽減する方法として他の image-to-image モデルでも有効そう(例:swapnet などのGMM からの変形服で直接 attention 合成を行わない2Dベースの仮想試着モデルなど)
  • 2Dベースの仮想試着モデルとしての用途でもかなり品質の高い画像を生成できている。
  • densepose を利用すれば、HMR を利用する必要はないのでは?

6. 次に読むべき論文はあるか?

  • Few Shot Adversarial Learning of Realistic Neural Talking Head Models

7. 参考文献

  • xxx
@Yagami360 Yagami360 transferred this issue from another repository Dec 26, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant