cedro-blog

StyleGAN3による画像とビデオの編集

1.はじめに

 昨年発表された StyleGAN3は、生成画像の時間的一貫性が改善され、さらに生成画像の平行移動や回転が可能になりました。今回ご紹介するのは、このStyleGAN3を用いた画像とビデオの編集技術です。

*この論文は、2022.1に提出されました。

2.StyleGAN3とは?

 StyleGAN2は、ビデオ処理をする場合に重要な時間的一貫性に問題がありました。この問題は、テクスチャ付着現象と呼ばれ、例えば潜在空間を補間する場合、通常、髪の毛と顔は一斉に動かないのです。

 StyleGAN3は、こういった時間的な一貫性が改善され、さらに生成画像の平行移動や回転を可能にしたアーキテクチャになっています。

 今回は、このStyleGAN3と今まで提案された手法を組み合わせた「画像とビデオの編集」について見て行きます。

3.コード

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

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

 

 次に、画像から潜在変数を求めるエンコーダ(e4e、pSpから選択可能)と画像編集用のパラメータをダウンロードします。ここでは、pSpを選択しています。

 

 edit/picフォルダにあるサンプル画像5枚をalign処理(顔固定)及び、crop処理(背景固定)します。

 1列目がサンプル画像で、2列目がalign処理(顔固定)、3列目がcrop処理(背景固定)したものです。

 今までの手法は、顔固定の画像から潜在変数を求め、潜在変数を編集して、顔固定の画像を生成するというものでした。しかし、この手法だとビデオで顔が動いたときに、顔は動かず背景だけが動いてしまいます。顔が動いた時は、顔が動いて背景は動かないようにしたいわけです。つまり、背景固定の画像を生成したいわけです。これをどう実現するか。

 潜在変数から画像を生成するときに、顔固定と背景固定の顔の位置の差を計算し、生成画像を適切に平行移動・回転させれば、背景固定の画像が生成できます!

 最初に、顔固定の画像から潜在変数を求め、潜在変数は無編集で、背景固定の画像を生成してみましょう。

 1列目が実写から切り抜いた背景固定の画像、2列目が潜在変数から生成した背景固定の画像です。全く同一と言うわけには行きませんが、かなりの再現性ではないでしょうか。

 さて、InterFaceGANを使って潜在変数を編集してみましょう。invertに指定画像を記入し、編集用パラメタは4種類(age, smile, pose, male)の中から選び、適用係数(min_value, max_value)を設定して実行します。

 ここでは、invert = 004.jpg、edit_direction = age、min_value = -5、max_value = 5 で実行します。

 はい、背景固定の画像で年齢シミュレーションができました。

 今度は、StyleCLIPを使って潜在変数を編集してみましょう。neutral_test と target_text に、編集内容を英文テキストで指示し、alpha と beta で効かせ方を指定します。

 ここでは、neutral_text = a face、target_text = a smiling face、alpha = 4、beta =0.13 で実行します。

 はい、背景固定の画像で表情シミュレーションができました。

 さて、今度は inversion/video/inference_on_video.py を使ってビデオでやってみましょう。但し、無料バージョンのgoogle colab だと動作の途中でメモリ不足でクラッシュしてしまいますので、有料のPROバージョンでハイメモリ設定をしておく必要があります。

 引数は、–video_path でビデオの指定、–checkpoint_path でエンコーダのパラメータの指定、–output_path で出力フォルダの指定をし、実行します。

 編集内容は、inversion/video/video_config.py で複数の設定が一括してできます。

 左から、実写ビデオ、潜在変数を無編集で生成したビデオ、潜在変数に若くする編集を行って生成したビデオです。

 では、また。

(オリジナルgithub)https://github.com/yuval-alaluf/stylegan3-editing

(twitter投稿)