cedro-blog

StyleGAN+CLIPで、テキストから顔画像を生成する

1.はじめに

 今回ご紹介するのは、顔画像生成モデルの決定版ともいえるStyleGANCLIPを組み合わせて、テキストから顔画像を生成するモデルです。

2.StyleGAN+CLIPモデルとは?

  StyleGANはパラメータから画像を生成するモデル、CLIPは画像とテキストの類似度を出力できるモデルです。今回は、この2つのモデルを下記のように組み合わせます。

 StyleGAN に適当な Parameter を与えて画像(target image) を出力させます。そして、CLIPにはその画像テキストを入力し類似度を求め、類似度が出来るだけ高くなるように Parameter を最適化します。すると、テキストの内容に合った画像を生成するParameterが求まり、テキストから画像生成ができるわけです。

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

3.コード

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

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

 

 それでは、テキストから顔画像を生成してみましょう。text に生成したい内容のテキストを入力します。ここでは、”She is a charming woman with blonde hair and blue eyes”(彼女はブロンドの髪と青い目を持ってる魅力的な女性です)と入力しています。

 最適化ループは101回( max_iter で設定)廻し、2回に1回( img_save_freq で設定)途中の生成画像を ./pic に保存します。

 テキストにほぼ合った画像が生成できたのではないでしょうか。しかも、この顔画像は実際には存在しないものです。なお、最適化プロセスには乱数が使われていますので、同じテキストでも生成画像は毎回異なります。

 では、最適化の途中経過を表す動画を見てみましょう。./pic に保存された途中の生成画像からmp4動画を作成し、output.mp4 というファイル名で一時保存すると共に、text名.mp4 というファイル名で ./movie にも保存します。そして、動画を再生します。

 初期イメージの Parameter が徐々に最適化され、テキストが表す画像に変化して行く過程が分かります。

 あとは、テキスト入力のところから繰り返せばOKです。今度は、”Smiling asian woman wearing glasses. Middle length black hair.”(眼鏡をかけている笑顔のアジアの女性。黒髪で中くらいの長さ。)でやってみます。

 実は、StyleGANが学習した画像データにはメガネを掛けたものが少ないので、メガネの生成はあまり得意ではないのですが、今回は上手く行きました。

 もう一つやってみましょう。今度は、”She is a charming girl with curly black hair and black eyes”(彼女は巻き毛の黒い髪と黒い目を持った魅力的な少女です)でやってみます。

 途中、少年のような顔になるのですが、最後にボーイッシュな少女の顔になり、テキスト通りの顔画像になりました。めでたしめでたし。

 では、また。

(オリジナルGithub : https://github.com/vipermu/StyleCLIP

(Twitterへの投稿)