OpenAIのGLIDEでちょっと遊んでみた結果…!?

最終更新日

2021年の年末にOpenAIが発表したGLIDEをちょっと遊んだので共有します。

まとめ

  • GLIDEとかいうテキストを入れたらそれを反映した画像を出力するモデルがOpenAIによって公開された
  • OpenAIによってsmallサイズのGLIDEが公開されているのでちょっと遊んでみた
    • 論文内容の解説記事ではないです
  • CVの流行りも色々変わっていくんですね
  • バイアス大変そう

GLIDEって?

2021年12月、arXivに次の論文が投稿されました。

GLIDE: Towards Photorealistic Image Generation and Editing with Text-Guided Diffusion Models. Alex Nichol, Prafulla Dhariwal, Aditya Ramesh, Pranav Shyam, Pamela Mishkin, Bob McGrew, Ilya Sutskever, Mark Chen. [link]

GLIDEはこの論文で提案された、テキストを入れたら画像が出力されるモデルのことです。
以下の画像が論文に記載されている具体例となっています。

実際の画像、GLIDEなどで生成した画像の比較。図はGLIDEの論文から引用。

一番上の行がReal Image、つまり実際の画像で、画像に対応する各キャプションが一番下似それぞれ記載されています。
2行目以降は機械学習モデルの出力ですね。
XMC-GANというのがGANの仕組みを利用して、画像とキャプションの組を使って学習したモデルとなっています。
その下のDALL-EとGLIDEはZero-shotで運用しているモデル、つまり明示的に画像とキャプションの組を使って学習はしていない(と思われる)モデルとなっています。

この具体例の通り、GLIDEはZero-shotにもかかわらず、かなり鮮明な画像を出力できていることがわかります。
ちなみに、この具体例にはGLIDEが2種類(CLIP Guid.とCF Guid.)あるのですが、論文中ではCF Guid.の方を推しているみたいです。
この辺の違いについてはまた別の記事で解説するかも?しれません。

GLIDEモデルが公開されてる!

なんとこのGLIDE、smallモデルでなおかつfiltered dataで学習されたモデルではありますが、一般公開されています(smallモデルとか言ってますが、あくまで論文で使用しているモデルと比べて、という意味合いです。)。

filtered dataって何のこと?って話なのですが、その辺りの事情は論文の7. Safety Considerationsで主に記述されています。
具体的には以下の部分ですね。

Our model is capable of producing fake but realistic images and enables unskilled users to quickly make convincing edits to existing images. As a result, releasing our model without safeguards would significantly reduce the skills required to create convincing disinformation or Deepfakes. Additionally, since the model’s samples reflect various biases, including those from the dataset, applying it could unintentionally perpetuate harmful societal biases.

ざっくりまとめると

  1. 論文モデルそのままは精度が高すぎてdeepfakeとか誰でも作れちゃう
  2. 論文モデルを学習したデータにはそこそこバイアス入っていて、生成した画像に意図せず有害バイアスが入ってしまう

の2点を懸念して、filtered dataを用意して、それで学習したsmallモデルを公開した、とのことです。
(つまりバイアスのあるデータをfilterしたみたいです。)

GLIDEモデルの動かし方について

せっかく公開してくれているならfilter dataで学習したモデルとか気にせずとりあえず動かしてみたい!
というわけで適当にうごかしてみました。

GLIDEのGitHubレポジトリはこちらで、ご丁寧にGoogle Colabを貼ってくれているので誰でも簡単に試すことができます。
3つのColabリンクが貼ってあるのですが、とりあえずGLIDEを動かしたいならtext2imというのを触ればよいのかなと思います。

GLIDEのGitHubレポジトリ。

ちなみにinpaintというのは既存の画像に対して、与えられたテキストをもとに書き足すexampleとなっています。
clip_guidedはさきほどのGLIDEの出力例のGLIDE (CLIP Guid.)ってやつですね。

ノートブックの細かい話

簡単ではありますが、text2imのノートブックを使う際の気をつけることを記載します。

まず、入力するテキストですが、ノートブック中のprompt変数に格納しています。
また、モデルはテキストから画像を生成するモデルと、それをupsampleするモデルの2種類を使います。
そのため、推論も2回走るような構成になっています。

細かいことはレポジトリのmodel-card.mdに記載されているので、気になった方はそちらをご確認ください。

実際にいくつか生成してみた

適当に色々生成してみました。
以下、添付する図はすべてGLIDE(text2im)で生成した画像です。

ちなみに、同じキャプションを使用した場合でも、画像を生成する度に異なる画像が生成されるので、再現はできなさそうでした。

論文のキャプションを使ってみる

まずは論文や上記ノートブック(text2im)で使われている例を試してみようと思います。

ノートブックをそのまま動かす

an oil painting of a corgi

うまく生成されました。

論文モデルの出力を再現してみる

a green train is coming down the tracks

上記の出力例(一番左端の列)の画像を公開モデルでも生成してみました。
論文モデルと比べて、学習データもモデルサイズも小さめになっているので、なかなか綺麗な
画像は生成できていません。

バイアスチェック

論文では生成した画像のバイアスに関しても言及しています。
公開モデルを使って、生成した画像のバイアスを見てみようと思います。

a religious place
toys for boys
toys for girls

上から順に

  • 宗教的なバイアス
  • ジェンダー(男性)のバイアス
  • ジェンダー(女性)のバイアス

に関する画像となっています。

論文にも記載されているのですが、宗教的なバイアスに関しては確かに、西洋風の建物の画像が生成されています。

おもちゃの画像に関しては、生成された画像がなかなか個性的なので、バイアス云々言ってる場合ではないような気もしますが。。。
男性向けおもちゃは青っぽくて、女性向けおもちゃはピンクっぽいみたいなバイアスがついている、とは思います。

遊ぶ

遊びます。

ガンダム

Gundam

色合いだけ頑張っている感じでしょうか
(ハサウェイ面白かったです)

ゴジラ

Godzilla

こんなおもちゃ昔ありませんでした?

Godzilla with pink skin

可愛さ爆発

戦わせてみた

Gundam vs. Godzilla

戦っている、というよりはただただ並んでいますね。。。
他にも複数オブジェクトで色々やらせようとしたんですが、なかなかうまく画像が生成されませんでした。
公開モデルではかなり単純な生成しかできないかもしれません。

飯テロ

ramen noodles

味噌?

blue ramen noodles

もっと青いものを想定していたんですが。。。想像していたものとはちょっと違いました。。。
論文にも記載されているのですが、明らかに存在しない画像を生成させようとするとうまく行かないみたいです。

背景

mount Fuji

背景画像はかなりうまく生成されました。

趣味1

The CD cover is the white album.

わかってるっぽいです

White Album 2

わかってないっぽいです

趣味2

BlueArchive

最近自分がハマってるやつ適当に投げてみましたが。。。

オタク特有の急に自分がハマっているやつ紹介してくるやつ

どこで読んだか忘れたんですが、ビジュアルノベルってイラスト、アニメーション、声やBGM、SE、それにテキストなどの色んな要素が詰め込まれた総合芸術、みたいな話があるらしいんですよね。
言わんとすることはわかるし、自分が好きな作品ってだいたいその辺りがうまいこと噛み合ったものがおおいのかなとか思うわけです。

最近、その総合芸術的な瞬間をとあるソシャゲで味わったんですよね。
そのソシャゲがブルーアーカイブです。
メインストーリーがおもしろいんですよね。
キャラクターの描写も個人的にかなり刺さってて。
キャラクターデザインの良さと相まってすごく魅力的なキャラクターが多いんですよ。
で、さらにBGMもめちゃくちゃ良い。
そりゃあハマるよなって感じです。

この辺の良さを文書で説明する能力が自分にはできないので、気になる方はぜひ2nd PVっていうのを見てほしいです。
YouTubeリンクはこちら
何がなんやらって感じだとは思うのですが、とりあえずPVの綺麗さだけでも味わっていただければと思います。
気になった方はぜひプレイしてみてください!!

感想

今回はGLIDEの簡単な紹介と公開モデルで遊んでみた話でした。
個人的な感想になりますが、なんとなくCVはGANベースの手法が流行っている印象があったので、こういったGANではないモデルが出てきて、流行を掴む難しさみたいなものを感じました。。。反省。
自然言語処理(別に自然言語処理の流行も掴めてないですが)ばっかりやってると画像周りはめちゃくちゃ周回遅れで知識を得ているような感じになっちゃいますね。

モデルを公開していただいたので、色々遊んでみましたが、小規模モデルでこの精度なら論文モデルは確かに強いだろうなあという印象でした。
富士山とかめちゃくちゃ普通に生成されましたし、有名な固有名詞はこのモデルでも抑えられていそうです。

個人的に気になった話としてはバイアス周りでしょうか。
論文でもかなり気にしていて、この辺りは大規模事前学習モデルの常というか、どうしても学習データを大規模にするとそういったバイアスは入るので、その辺りの懸念を強く感じました。
前処理的なアプローチはデータフィルタリングとかだとおもうのですが、後処理的にデバイアスするのはどうするんだろう、なんて疑問もちょっと持ったので、その辺り時間があれば調べてみようと思います。