Open14

流行りのテキストからのAI画像生成 (Midjourney, DALL-E 2, StableDiffusion, DiscoDiffusionなど) について、歴史、仕組みから試し方までまとめる

ピン留めされたアイテム
tomo_makestomo_makes

はじめに

9/10から開催の 技術書典13 で記事としてまとめるための、調査、素材置き場です。まず、日本語で界隈を概観するには以下記事がおすすめ。

https://note.com/fladdict/n/n0f0be20e3e23
https://karaage.hatenadiary.jp/entry/2022/08/19/073000

(8/22)
もうすぐ来ると言われるStableDiffusionのモデル配布の衝撃について。
https://note.com/fladdict/n/n13c1413c40de

その根拠の一つである、Eman Mostaque氏 (Founder of Stability.ai) の、意味深なカウントダウンツイート。
https://twitter.com/EMostaque/status/1561575785785430017

(8/23)
公開されました。
https://twitter.com/EMostaque/status/1561777122082824192?s=20&t=UKo-tqVVGDDmxLb-oMgGIw

Colaboratoryでの試し方をnpakaさんが公開しています。
https://note.com/npaka/n/ndd549d2ce556

さらにtuningが可能なColab notebookをpharmapsychoticさんが公開しています。
https://twitter.com/pharmapsychotic/status/1561963722989527040

ローカルで動かす方法は、koyoarai_さんのZennより。
https://zenn.dev/koyoarai_/articles/02f3ed864c6127bb2049

無償、英語・日本語で試せるWebアプリをshi3zさんほかが公開しています。
https://note.com/shi3zblog/n/n0e8be0db9100
https://twitter.com/miu200521358/status/1563861016655450113

目次

tomo_makestomo_makes

試し方

最新のもの

Midjourney

Discordに参加し、すぐ使い始められる。
https://www.midjourney.com/home/

DALL-E 2

クローズドベータ。フォームから登録し、招待を待つ。
https://openai.com/dall-e-2/

DiscoDiffusion

Colaboratoryノートブックとして提供されている。個々人で実行できる。
https://colab.research.google.com/github/alembics/disco-diffusion/blob/main/Disco_Diffusion.ipynb
作成者は Maxwell Ingham (@Somnai_dreams)氏、今はMidjourneyで働いている。
https://twitter.com/Somnai_dreams/status/1477525429971939332

アニメーションを作るためのツールなども、コミュニティで作られている。
https://twitter.com/pharmapsychotic/status/1559225307844034566

Animation Preview
https://colab.research.google.com/github/pharmapsychotic/ai-notebooks/blob/main/pharmapsychotic_AnimationPreview.ipynb

StableDiffusion

クローズドベータ。フォームから登録し、招待を待つ。
https://stability.ai/

DreamStudioの有料ベータ提供が開始?
https://note.com/abubu_nounanka/n/n20d548c4994b

Tutorial
https://www.youtube.com/watch?v=TmLTYUCLUmM
https://www.youtube.com/watch?v=014J2Yo1aGI

以下に日本語解説記事がある。
https://note.com/abubu_nounanka/n/n7530d0b14bcd
https://note.com/abubu_nounanka/n/n6d3d69930ea6

「オープンソースで誰でも自由に使えるAI」を目指してStability AIが開発しているものです。オープンソースの言語AIであるGPT-J-6BやGPT-NeoXなどで知られるEleutherAIも開発に協力しており、このStableDiffusionは既にgithubでソースが公開されています。

Latent Diffusion

ImageNetのクラス指定、自然言語文での指定で、それぞれColabノートブックで画像生成するチュートリアルがある。
https://www.12-technology.com/2022/04/latent-diffusion-ai.html

Centipede Diffusion

Latent Diffusionの出力を、Disco Diffusionの入力に接続したもの。Colabノートブックで画像生成できる。
https://colab.research.google.com/github/Zalring/Centipede_Diffusion/blob/main/Centipede_Diffusion.ipynb
https://github.com/Zalring/Centipede_Diffusion

以前から存在するもの

DALL-E mini (craiyon)

以下からすぐ試せる。
https://www.craiyon.com/

tomo_makestomo_makes

AI画像生成関連の歴史

Awesome-Text-to-Imageリポジトリがある。
https://github.com/Yutong-Zhou-cv/Awesome-Text-to-Image

Yutong Zhou氏が、他にも2つ関連のawesomeシリーズを更新中。
https://github.com/Yutong-Zhou-cv/awesome-Transformer-in-CV
https://github.com/Yutong-Zhou-cv/Awesome-Multimodality

SOTAの遷移 (Paper with Code調べ)

簡単な経緯

  • 生成モデルの代表手法には、GAN, VAE, Flowなどがある
  • GANを使い、高精細な画像生成で話題となったBigGANは2018年

https://www.slideshare.net/cvpaperchallenge/neural-generative-models

  • 様々なデータセットに対し、ゼロショットで学習可能な自然言語を教師ラベルとする画像分類モデル CLIP が提案 (OpenAI; 2021)
  • CLIPとBigGANを組み合わせたテキストからの画像生成に、Big Sleep、FuseDreamがある
    • Big Sleepはあまり写実的な画像を生成できなかった
    • FuseDreamは局所解に陥らないように工夫し、高精細化を一定実現した
  • 一方Diffusion Modelは2015年発表の後、2020年頃からGANを凌ぐ高精細な画像生成で再度注目を浴びる
    • Diffusion ModelはVAEの派生とも捉えることができる
    • Diffusion Modelは当初計算量を必要としたが、Latent Diffusion Model等、計算量削減の手法が提案
    • DDPM(2020)、ADM(2021)と進化
  • CLIP特徴とDiffusion Modelを組み合わせたテキストからの画像生成に、GLIDE、unCLIP (DALL-E 2)がある
  • さらにImagen (Google Brain; 2022)はCLIP特徴を使わず、大規模言語モデルを使用

cvpaper.challengeの基盤モデルのメタサーベイにも、Text-to-Imageの解説がある。
https://www.slideshare.net/cvpaperchallenge/foundation-models



出典: 【メタサーベイ】基盤モデル / Foundation Models by cvpaper.challenge

画像生成、生成モデルのメタサーベイもある。
https://www.slideshare.net/cvpaperchallenge/ss-248586051

tomo_makestomo_makes

参考資料

解説系

日本語だと、SONY nnabla YouTubeチャンネルの情報量がとても多い。

実装系

データセット

  • LAION
    https://laion.ai/
    LAION 5B (50億枚)、400M (4億枚)、Aestheticsなどのデータセットがある。
    https://rom1504.github.io/clip-retrieval/ でブラウズすることができる。
    どのようにプロンプトと画像の相関があるかは、実際のText-to-Imageを繰り返すだけでなく、学習に使ったデータセットの具体画像とキャプションをブラウズすることで理解できる。

関連リポジトリ

tomo_makestomo_makes

生成画像のギャラリー

Twitter

以下のハッシュタグを見る。

#dalle2 https://twitter.com/hashtag/dalle2
#midjourney https://twitter.com/hashtag/midjourney
#stablediffusion https://twitter.com/hashtag/stablediffusion
#discodiffusion https://twitter.com/hashtag/discodiffusion

リストを作ってみた。
https://twitter.com/tomo_makes/status/1561363863479922688

Reddit

以下のsubredditを見る。

Midjourney https://www.reddit.com/r/midjourney/
DALL-E 2 https://www.reddit.com/r/dalle2/
DiscoDiffusion https://www.reddit.com/r/DiscoDiffusion/
StableDiffusion https://www.reddit.com/r/StableDiffusion/

Instagram

2022/8/21時点で、以下の投稿数がある。
#midjourney 38.8万件
#dalle2 7.7万件
#discodiffusion 5.8万件
#stablediffusion 5000件以上

Pinterest

#midjourney https://www.pinterest.jp/search/pins/?q=midjourney
#dalle2 https://www.pinterest.jp/search/pins/?q=dalle2
#discodiffusion https://www.pinterest.jp/search/pins/?q=discodiffusion
#stablediffusion https://www.pinterest.jp/search/pins/?q=stablediffusion

Webサイト

tomo_makestomo_makes

Disco Diffusion

https://github.com/alembics/disco-diffusion
https://colab.research.google.com/github/alembics/disco-diffusion/blob/main/Disco_Diffusion.ipynb

使ってみる

以下チュートリアルを元にColabratory上で実行する。
https://bytexd.com/get-started-with-disco-diffusion-to-created-ai-generated-art/

ガイドやチートシート

https://matthewmcateer.me/blog/clip-prompt-engineering/
https://sweet-hall-e72.notion.site/A-Traveler-s-Guide-to-the-Latent-Space-85efba7e5e6a40e5bd3cae980f30235f#8d5d9e5e6bb447d5b915f6c98994528f
https://docs.google.com/document/d/1l8s7uS2dGqjztYSjPpzlmXLjl5PM3IGkRWI3IiCuK7g/mobilebasic

派生ツール

AnimationPreview - アニメーション生成補助
https://colab.research.google.com/github/pharmapsychotic/ai-notebooks/blob/main/pharmapsychotic_AnimationPreview.ipynb

DiscoArt - One linerでDisco Diffusion生成
https://github.com/jina-ai/discoart

作成経緯

Disco:

tomo_makestomo_makes

txt2imgのプロンプトを探す

Lexica

プロンプトと、それに対応する生成動画を検索できる。

https://twitter.com/sharifshameem/status/1562455690714775552
https://lexica.art/

img2prompt

画像からプロンプト例を生成できる。

https://replicate.com/methexis-inc/img2prompt

元となったcolabはpharmapsychotic氏による以下のもの。
https://colab.research.google.com/github/pharmapsychotic/clip-interrogator/blob/main/clip_interrogator.ipynb

pharmapsychotic氏の公開するtoolsリストはこちら。
https://pharmapsychotic.com/tools.html

tomo_makestomo_makes

Stable Diffusionの動作原理

https://webbigdata.jp/ai/post-14457

Hugging FaceのDiffusersは、複数のVision、Audioなどマルチモーダルな学習済み拡散生成モデルに加え、学習や推論のためのツールキットを提供してくれる。
https://github.com/huggingface/diffusers

そのColabから、拡散生成モデルに入門できる。
https://colab.research.google.com/github/huggingface/notebooks/blob/main/diffusers/diffusers_intro.ipynb

https://huggingface.co/blog/stable_diffusion

出典: https://huggingface.co/blog/stable_diffusion

  • Stable Diffusionは、Latent Diffusionベースのため、Pixel-basedなDALL-E 2やImagenに比べ軽量

Latent Diffusion https://arxiv.org/abs/2112.10752

  • Pixelベースの場合、 (3, 512, 512) のベクトルを扱うが、Lantent Spaceだと (3, 64, 64) の大きさのベクトルのみ扱うので、1/8 x 1/8 = 1/64の大きさのベクトルを扱えば済む
  • VAEで、(3, 512, 512) の画像から、 (3, 64, 64) の特徴を取り出し、そこへのnoise / denoiseを行う
  • U-NetはResNetブロックを使ったもの
  • Imagenにヒントを得て、テキストから埋め込みベクトルを得るTransformerベースのtext encoderは、学習は行わず、学習済みのCLIPTextModelをそのまま使っている
  • U-Netによるdenoisingは繰り返し行われるが、schedulerアルゴリズムは選択できる

Schedulerアルゴリズムの詳細は https://arxiv.org/abs/2206.00364

  • diffusersを使って自分で推論パイプラインを書くことができる