StyleGAN+CLIPによる汎用的な顔画像編集アプローチ

1.はじめに

 今まで、StyleGAN+CLIPを使って顔画像をテキストで編集するアプローチには、テキストから潜在変数を最適化する Optimaization とテキスト毎に潜在変数の差分を事前学習する Mapper がありましたが、前者は時間が掛かり後者は汎用性に欠ける弱点がありました。今回ご紹介するのは、これらの弱点を改善した Global direction というアプローチです。

*この論文は、2021年3月に提出されました。

2.Global directionとは?

 まず、StyleGAN+CLIPを使って顔画像をテキストで編集する Mapper というアプローチをみてみましょう。

 左の元画像の潜在変数wマッピングネットワークMに入力し差分△を求め、潜在変数w+差分△をStyleGANに入力し、右の出力画像を得るネットワークを考えます。CLIPテキスト出力画像の類似度を求め、類似度が出来るだけ高くなるようにマッピングネットワークのパラメータを学習する方法が Mapper です。

 この方法は、高速な編集が可能ですが、テキストの内容毎にマッピングネットワークのパラメータを用意する必要があります。そこで、もっと汎用的にテキストから潜在変数の差分△を直接求める方法が Global direction です。

 そのためには、テキストからCLIP 特徴ベクトルを求め、その特徴ベクトルを入力として差分△を出力するマッピングネットワークを考えます。そして、CLIPテキスト出力画像の類似度を求め、類似度が出来るだけ高くなるようにマッピングネットワークのパラメータを学習すれば良いわけです。そうすれば、高速な編集と汎用性が両立できます。

 ただ、これだけだと、テキストで指示する内容はどうしても曖昧さ(バラツキ)が多くなります。そこで、テキストの内容を安定化させる工夫を行います。

 具体的には、テキストをニュートラルクラスターゲット属性に分けて明示し、テンプレートに従って同じ意味を持つ複数の文をCLIPに入力して求めた特徴ベクトルを平均化するプロンプトエンジニアリングと呼ばれる手法が使われています。

 それでは、コードを動かしてみましょう。

3.セットアップ

 コードはGoogle Colabで動かす形にしてGithubに上げてありますので、それに沿って説明して行きます。自分で動かしてみたい方は、この「リンク」をクリックし表示されたノートブックの先頭にある「Colab on Web」ボタンをクリックすると動かせます。

 まず、セットアップを行います。

4.画像編集

 global/vec に顔画像から取得した潜在変数(000.pt 〜 016.pt)が保存されていますので、pt_name に 009.pt を設定して下さい。ご自分でオリジナルの潜在変数を用意したい方は、このブログのコードで作成して global/vec に追加して下さい。

 潜在変数 009.pt から生成される顔画像が表示されます。

 次に、編集内容をテキストで指定します。指定方法は neutral に属性を指定し、 target に目的の方向を指定します。

 

 次に、係数の設定をします。beta はある属性を変化させたとき、関連する属性の変化をどこま受け入れるかのしきい値 です。小さくするとより多くの関連した属性の変化が反映されます(beta=0.1くらいが良い)。alpha は、潜在変数の差分に効かせる倍率です。

 左が編集前の画像、右が編集後の画像です。狙いに合った編集ができているか確認し、必要に応じて alpha を変化させてコードを実行させることを繰り返し、適正な値をチェックしてみて下さい。

 alpha を少しづつ変化させた時(beta = 0.1 で固定)に、顔画像が徐々に変化する動画を作成してみましょう。max_alphaalpha の最大値を入力します。変化させた画像は、global/pic に保存します。

 

global/pic/ に保存した画像からmp4動画を作成します。作成した動画は、output.mp4 という名称で一時保存するとともに、global/movie/smiling face with curly hair _009.mp4 という形で保存します。

 

 作成したmp4動画を再生します。

 

 あとは、画像編集の最初から繰り返せばOKです。下記の設定に変更して再度やってみましょう。

  • pt_name : 012.pt
  • nutral : face with eyes
  • target : smiling face with eyeglasses
  • alpha :3.5

 

 もう1つ、やってみましょう・

  • pt_name : 010.pt
  • nutral : face with hair and eyes
  • target : smiling face with blonde hair and blue eyes
  • alpha : 3.0

 では、また。

(オリジナル github)https://github.com/orpatashnik/StyleCLIP

(twitterへの投稿)

3 件のコメント

  • 自分の顔画像やラグビー日本代表のあの人のように、任意の画像を読み込ませることは可能でしょうか。

    • 桜田ふぁみりあさん
      コメントありがとうございます。可能です。
      自分のオリジナル画像でやる場合は、ブログに記載しましたように「StyleGANを使った画像編集をe4eで高速化する」のブログにある方法でオリジナル画像の潜在変数を用意して、global/vec にアップロードすればOKです。

      もっと簡単にまとめてやりたいという場合は、このリンク[https://github.com/cedro3/Style_edit/blob/main/Style_edit_movie.ipynb]のClolabを動かし、Style_edit/images に自分のオリジナル画像をアップロードすればOKです。

  • cedro へ返信する コメントをキャンセル

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

    日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

    ABOUTこの記事をかいた人

    アバター

    ディープラーニング・エンジニアを趣味でやってます。E資格ホルダー。 好きなものは、膨大な凡ショットから生まれる奇跡の1枚、右肩上がりのワクワク感、暑い国の新たな価値観、何もしない南の島、コード通りに動くチップ、完璧なハーモニー、仲間とのバンド演奏、数えきれない流れ星。