cedro-blog

TargetCLIPで、画像のスタイルを転送する

1.はじめに

 今まで、ある画像から別の画像へ色やテクスチャを転送する「スタイル転送」という技術がありましたが、今回ご紹介するのはもっと自然なスタイル転送を可能にする「TargetCLIP」と言う技術です。

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

2.TargetCLIPとは?

 TargetCLIPは、ある画像の概念的な「スタイル」と別の画像の客観的な「コンテンツ」を全く新しい画像に組み合わせる技術です。この技術は、画像を生成するStyleGAN2とCLIPが持っている画像を特徴ベクトルに変換するモジュールを組み合わせることによって実現されています。

 2つの損失関数を使用します。1つ目は、ターゲット画像とソース画像をそれぞれCLIPでエンコードしたベクトルのCOS類似度をできるだけ上げるような関数。2つ目は、ソースの変換前後の画像をそれぞれCLIPでエンコードしたベクトルのCOS類似度をできるだけ上げるような関数です。

 この2つの損失関数を最適化することによって、下記のような結果が得られます。

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

3.コード

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

 最初に、セットアップをおこないます。まず、画像から逆算してStyleGAN2のベクトルを求めるためのフレームワークe4eをセットアップします。

 続いて、TargetCLIP本体をセットアップします。

 サンプル画像を読み込みます。自分の用意した画像を読み込む場合は、TargetCLIP/picフォルダーに画像を保存し、image_nameをそのファイル名に変更してください。ここでは、’./TargetCLIP/pic/01.png’ を指定しています。

 顔を所定の位置で切り取り水平にする処理(align処理)を行い、その画像を表示します。

 align処理した画像からStyleGAN2のベクトルを逆算で求めます。そして、そのベクトルで生成した画像とオリジナル画像を並べて表示します。右が逆算、左がオリジナルの画像です。

 スタイルを転送するためのターゲットの画像を選択します。’Elsa’, ‘Joker’など9種類のターゲットが用意されています。ここでは、’Elsa’を選択します。

  変換係数を設定してスタイルを転送します。そしてその結果を表示します。

 変換係数を徐々に変化させたときの静止画から動画を作成します。作成した動画は、./TargetCLIP/output.mp4 に保存されます。

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

 どうでしょうか。実写にディズニープリンセスのスタイルが上手く転送されているのが分かると思います。

 では、また。

(オリジナルgithub) https://github.com/hila-chefer/TargetCLIP