Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Google Colaboratory でStable Diffusionの実装 / Implementation of Stable Diffusion at Google Colaboratory

tasotaku
October 29, 2022

Google Colaboratory でStable Diffusionの実装 / Implementation of Stable Diffusion at Google Colaboratory

Google Colaboratory でStable Diffusionを実装しました。少し遊んでみたのと、構造も少し調べました。

tasotaku

October 29, 2022
Tweet

More Decks by tasotaku

Other Decks in Programming

Transcript

  1. Google Colaboratory で
    Stable Diffusionの実装
    B2 tasotaku

    View Slide

  2. もくじ
    ◼ Stable Diffusion とは
    ◼ Stable Diffusion の特徴
    ◼ Diffusers
    ◼ Stable Diffusion の中身

    View Slide

  3. Stable Diffusion とは
    ◼ Stable Diffusion とは、文章から画像を生成するAI
    ◼ Google Colaboratory での実装方法はこちら
    ◼ できること
    ⚫ 文章から画像を生成
    ⚫ 生成した画像を微調整する
    ⚫ 文章と画像から新たな画像を生成
    ⚫ etc

    View Slide

  4. Stable Diffusion の特徴
    ◼ 解像度の高い画像を生成できる
    ◼ メモリや時間がかからない
    ⚫ ノートパソコンでも Google Colaboratory で実行可能
    ◼ 特定のジャンルに弱い
    ⚫ 学習に使ったデータセットに起因?
    ⚫ ファインチューニングすれば解決
    ◼ 作成した画像はフリー画像

    View Slide

  5. 文章から画像を生成
    a photograph of an astronaut riding a horse

    View Slide

  6. 画像と文章から画像を生成
    Gold desk

    View Slide

  7. 画像とマスク画像と文章から画像を生成
    ◼ マスク画像を使うことで、部分的に調整が可能
    robot

    View Slide

  8. ファインチューニング
    ◼ 特定の画像で訓練することで、苦手な分野に対応する
    ファインチューニング前 ファインチューニング後

    View Slide

  9. Diffusers
    ◼ Diffusers とは、段階的にノイズ除去するように訓練された機械学習システム
    ◼ Stable Diffusion はこれをベースに作られている
    引用: https://colab.research.google.com/github/huggingface/notebooks/blob/main/diffusers/diffusers_intro.ipynb

    View Slide

  10. Stable Diffusion の中身
    ◼ Latents
    ◼ A text-encoder
    ◼ A U-Net
    ◼ Scheduler
    ◼ An autoencoder (VAE)
    引用: https://huggingface.co/blog/stable_diffusion

    View Slide

  11. Stable Diffusion の中身
    ◼ Latents
    ◼ A text-encoder
    ◼ A U-Net
    ◼ Scheduler
    ◼ An autoencoder (VAE)
    引用: https://huggingface.co/blog/stable_diffusion

    View Slide

  12. Latents
    ◼ seed値をもとにノイズ画像を作る
    ◼ その画像を U-Net が扱えるように、
    画素行列(latents)に変換
    ◼ 出力する画像は 512 × 512 なのに対して、
    latents はより低次元である
    ◼ こうすることで、メモリと計算量を軽減している
    引用: https://huggingface.co/blog/stable_diffusion

    View Slide

  13. text-encoder
    ◼ 文章をU-Netが理解できるかたちに変換する
    ◼ 機械翻訳ではないので、文法はあまり見ない
    ⚫単語(キーワード)を複数与えるだけでも機能する
    引用: https://huggingface.co/blog/stable_diffusion

    View Slide

  14. U-Net と Scheduler
    ◼ U-Net を用いて、文章をもとにノイズ画像を
    ノイズの少ない画像にする
    ◼ Scheduler で二つの画像のノイズの差を
    計算してフィードバック
    ◼ これを繰り返して画像(のlatents)
    を生成する
    ◼ U-Net は ResNet からなるエンコーダーと
    デコーダーをもつ
    ◼ Scheduler は複数種類があり、選ぶことができる
    引用: https://huggingface.co/blog/stable_diffusion

    View Slide

  15. autoencoder (VAE)
    ◼ U-Net で生成した latents を、画像に
    復号(decode)して画像を出力する
    ◼ VAE はエンコーダー(encoder)と
    デコーダー(decoder)の二つの部分からなる
    ◼ 画像生成ではデコーダーしか使わないが、
    訓練する時にエンコーダーも使う
    引用: https://huggingface.co/blog/stable_diffusion

    View Slide

  16. 学習
    ◼ 元の画像にノイズをかける
    ◼ 文章を加えてノイズを取り除く
    ◼ 出力と元の画像、文章から損失を計算する
    文章 比較

    View Slide

  17. 最後に
    ◼ 扱いやすさを重視したお絵描きAI
    ◼ フリー画像の新たな選択肢
    ◼ すでに Stable Diffusion を利用したアプリなどが登場している
    ◼ Diffusers は用途が多く、音声や動画バージョンも作成予定らしい

    View Slide

  18. 参考
    ◼ https://github.com/huggingface/diffusers
    ◼ https://colab.research.google.com/github/huggingface/noteb
    ooks/blob/main/diffusers/stable_diffusion.ipynb

    View Slide