Google Colaboratory でStable Diffusionを実装しました。少し遊んでみたのと、構造も少し調べました。
Google Colaboratory でStable Diffusionの実装B2 tasotaku
View Slide
もくじ◼ Stable Diffusion とは◼ Stable Diffusion の特徴◼ Diffusers◼ Stable Diffusion の中身
Stable Diffusion とは◼ Stable Diffusion とは、文章から画像を生成するAI◼ Google Colaboratory での実装方法はこちら◼ できること⚫ 文章から画像を生成⚫ 生成した画像を微調整する⚫ 文章と画像から新たな画像を生成⚫ etc
Stable Diffusion の特徴◼ 解像度の高い画像を生成できる◼ メモリや時間がかからない⚫ ノートパソコンでも Google Colaboratory で実行可能◼ 特定のジャンルに弱い⚫ 学習に使ったデータセットに起因?⚫ ファインチューニングすれば解決◼ 作成した画像はフリー画像
文章から画像を生成a photograph of an astronaut riding a horse
画像と文章から画像を生成Gold desk+
画像とマスク画像と文章から画像を生成◼ マスク画像を使うことで、部分的に調整が可能robot
ファインチューニング◼ 特定の画像で訓練することで、苦手な分野に対応するファインチューニング前 ファインチューニング後
Diffusers◼ Diffusers とは、段階的にノイズ除去するように訓練された機械学習システム◼ Stable Diffusion はこれをベースに作られている引用: https://colab.research.google.com/github/huggingface/notebooks/blob/main/diffusers/diffusers_intro.ipynb
Stable Diffusion の中身◼ Latents◼ A text-encoder◼ A U-Net◼ Scheduler◼ An autoencoder (VAE)引用: https://huggingface.co/blog/stable_diffusion
Latents◼ seed値をもとにノイズ画像を作る◼ その画像を U-Net が扱えるように、画素行列(latents)に変換◼ 出力する画像は 512 × 512 なのに対して、latents はより低次元である◼ こうすることで、メモリと計算量を軽減している引用: https://huggingface.co/blog/stable_diffusion
text-encoder◼ 文章をU-Netが理解できるかたちに変換する◼ 機械翻訳ではないので、文法はあまり見ない⚫単語(キーワード)を複数与えるだけでも機能する引用: https://huggingface.co/blog/stable_diffusion
U-Net と Scheduler◼ U-Net を用いて、文章をもとにノイズ画像をノイズの少ない画像にする◼ Scheduler で二つの画像のノイズの差を計算してフィードバック◼ これを繰り返して画像(のlatents)を生成する◼ U-Net は ResNet からなるエンコーダーとデコーダーをもつ◼ Scheduler は複数種類があり、選ぶことができる引用: https://huggingface.co/blog/stable_diffusion
autoencoder (VAE)◼ U-Net で生成した latents を、画像に復号(decode)して画像を出力する◼ VAE はエンコーダー(encoder)とデコーダー(decoder)の二つの部分からなる◼ 画像生成ではデコーダーしか使わないが、訓練する時にエンコーダーも使う引用: https://huggingface.co/blog/stable_diffusion
学習◼ 元の画像にノイズをかける◼ 文章を加えてノイズを取り除く◼ 出力と元の画像、文章から損失を計算する文章 比較
最後に◼ 扱いやすさを重視したお絵描きAI◼ フリー画像の新たな選択肢◼ すでに Stable Diffusion を利用したアプリなどが登場している◼ Diffusers は用途が多く、音声や動画バージョンも作成予定らしい
参考◼ https://github.com/huggingface/diffusers◼ https://colab.research.google.com/github/huggingface/notebooks/blob/main/diffusers/stable_diffusion.ipynb