Lock in $30 Savings on PRO—Offer Ends Soon! ⏳

Deffusion解説

payanotty
February 09, 2023

 Deffusion解説

payanotty

February 09, 2023
Tweet

More Decks by payanotty

Other Decks in Technology

Transcript

  1. 自己紹介
 • 名前
 ◦ 早野 康太
 • お仕事
 ◦ 自然言語モデルの改善


    • 冬アニメおすすめ
 ◦ おにいちゃんは
 おしまい!
 (かわいいぞ)
 ◦ もういっぽん!
 (スポ根はいいぞ)
 ◦ 大雪海のカイナ
 (弐瓶勉×SFはいいぞ)

  2. 目次
 • はじめに
 ◦ 前提知識
 ◦ Stable Diffusionとは
 • Latent

    Diffusion Model解説 (論文)
 ◦ Denoising Autoencoder 
 ▪ ノイズ除去で画像生成
 ◦ Text Encoder & QKV Attention Blocks
 ▪ 文章情報の処理方法について
 ◦ Variational Autoencoder
 ▪ 画像をより小さな次元に埋め込む
 • まとめ

  3. 前提知識
 • 数学知識
 ◦ 数式を見ても拒否感がない程度
 • Deep Neural Network (DNN)


    ◦ forwardのしくみがわかる
 ◦ Autoencoderを知っている
 • 自然言語処理
 ◦ 文章のトークナイズ→埋込みの出力が
 ある程度イメージできる
 

  4. プロンプト: kirara jumping girls
 seed: 42
 Stable Diffusionとは
 Steps =

    1
 Steps = 5
 Steps = 10
 Steps = 20
 Steps = 30
 Steps = 40
 NovelAI Diffusionから生成

  5. Stable Diffusionとは
 • モデルを誰でも利用できるため
 Stable Diffusionを使ったサービスや派生モデルの公開など
 さかんに行われている
 ◦ 画像生成bot
 ▪

    Line, Discordなど
 ◦ 派生モデル
 ▪ NovelAI Diffusion
 ▪ Waifu Diffusion
 ▪ ほか、Huggingfaceで検索したら無限に出てくる
 • Models - Hugging Face 
 

  6. • High-Resolution Image Synthesis with Latent Diffusion Models (2022)
 ◦

    Diffusion ModelとCross Attention、Auto Encoderの組み合わせによって
 画像生成においてSOTAを達成
 
 Latent Diffusion Model

  7. • 3つのコンポーネント
 ◦ Denoising Autoencoder
 ▪ 画像からノイズを取り除いていって目当ての画像を得る
 ◦ Text Encoder

    & QKV Attention Blocks
 ▪ 文章をベクトル表現に変換する
 ▪ 画像情報と文章情報を組み合わせる
 ◦ Variational Autoencoder
 ▪ 2次元画像をより小さなサイズの画像に変換する
 Latent Diffusion Model

  8. • 3つのコンポーネント
 ◦ Denoising Autoencoder
 ▪ 画像からノイズを取り除いていって目当ての画像を得る
 ◦ Text Encoder

    & QKV Attention Blocks
 ▪ 文章をベクトル表現に変換する
 ▪ 画像情報と文章情報を組み合わせる
 ◦ Variational Autoencoder
 ▪ 2次元画像をより小さなサイズの画像に変換する
 Latent Diffusion Model

  9. • 基本的なアイデア
 ◦ Deep Unsupervised Learning using Nonequilibrium Thermodynamics
 (2015)


    ▪ マルコフ連鎖を学習させることで複雑な確率分布にモデルを適合
 ◦ Denoising Diffusion Probabilistic Models (2020)
 ▪ 画像生成をマルコフ連鎖と捉えて高品質な画像を生成
 Denoising Autoencoder

  10. Denoising Autoencoder
 • 画像からノイズを取り除いていって目当ての画像を生成する
 
 • 2プロセス
 ◦ Forward Process:

    画像に少しずつノイズを乗せていく
 ▪ 学習段階
 ◦ Reverse Process: 画像からすこしずつノイズを取り除く
 ▪ 推論段階
 

  11. • Forward Process
 ◦ 画像に少しずつノイズを乗せていく
 ◦ 学習段階で行う前処理
 Denoising Autoencoder
 x

    0 出典:ぼっち・ざ・ろっく! CloverWorks、アニプレックス、芳文社、 ©はまじあき/芳文社・アニプレックス
  12. • Forward Process
 ◦ 画像に少しずつノイズを乗せていく
 ◦ 学習段階で行う前処理
 Denoising Autoencoder
 x

    0 出典:ぼっち・ざ・ろっく! CloverWorks、アニプレックス、芳文社、 ©はまじあき/芳文社・アニプレックス x 1 = x 0 + ε 0
  13. • Forward Process
 ◦ 画像に少しずつノイズを乗せていく
 ◦ 学習段階で行う前処理
 Denoising Autoencoder
 x

    0 出典:ぼっち・ざ・ろっく! CloverWorks、アニプレックス、芳文社、 ©はまじあき/芳文社・アニプレックス x 1 = x 0 + ε 0 x 2 = x 1 + ε 1 x 3 = x 2 + ε 2
  14. Denoising Autoencoder
 
 
 出典:ぼっち・ざ・ろっく! CloverWorks、アニプレックス、芳文社、 ©はまじあき/芳文社・アニプレックス z 1 =

    z 0 - ε θ (z 0 , 0) z 2 = z 1 - ε θ (z 1 , 1) z 3 = z 2 - ε θ (z 1 , 2) z 0 • Reverse Process
 ◦ 画像からノイズを少しずつ取り除いていく
 ◦ 推論段階で行う処理

  15. Denoising Autoencoder
 
 x 0 x 1 = x 0

    + ε 1 x 2 = x 1 + ε 2 x 3 = x 2 + ε 3 z 1 = x 0 - ε θ (z 0 , 0) z 2 = z 1 - ε θ (z 1 , 1) z 3 = z 2 - ε θ (z 2 , 2) 出典:ぼっち・ざ・ろっく! CloverWorks、アニプレックス、芳文社、 ©はまじあき/芳文社・アニプレックス z 0
  16. Denoising Autoencoder
 
 x 0 x 1 = x 0

    + ε 1 x 2 = x 1 + ε 2 x 3 = x 2 + ε 3 z 1 = x 0 - ε θ (z 0 , 0) z 2 = z 1 - ε θ (z 1 , 1) z 3 = z 2 - ε θ (z 2 , 2) 出典:ぼっち・ざ・ろっく! CloverWorks、アニプレックス、芳文社、 ©はまじあき/芳文社・アニプレックス z 0 ε θ (z t , t) でtステップ目の画像から
 取り除くノイズを推定する
  17. Denoising Autoencoder
 
 Denoising Autoencoder z t z t+1 出典:ぼっち・ざ・ろっく!

    CloverWorks、アニプレックス、芳文社、 ©はまじあき/芳文社・アニプレックス
  18. Denoising Autoencoder
 
 z t z t+1 後藤ひとり
 y 出典:ぼっち・ざ・ろっく!

    CloverWorks、アニプレックス、芳文社、 ©はまじあき/芳文社・アニプレックス Denoising Autoencoder 文章情報で条件付けしたい 
 → Text Encoder, QKV Attention 

  19. • 3つのコンポーネント
 ◦ Denoising Auto Encoder
 ▪ 画像からノイズを取り除いていって目当ての画像を得る
 ◦ Text

    Encoder & QKV Attention Blocks
 ▪ 文章をベクトル表現に変換する
 ▪ 画像情報と文章情報を組み合わせる
 ◦ Variational Autoencoder
 ▪ 2次元画像をより小さなサイズの画像に変換する
 Latent Diffusion Model

  20. Text Encoder & QKV Attention Blocks
 どこかに後藤ひとりを 表現する点があるはず 出典:ぼっち・ざ・ろっく! CloverWorks、アニプレックス、芳文社、

    ©はまじあき/芳文社・アニプレックス 画素数次元のある一点 ε θ (z 0 , y) z 1 z 0 「後藤ひとり」という文章情報yによって
 マルコフ過程に条件付けをする
 z T = Πp(z t |z t-1 , y)

  21. Text Encoder & QKV Attention Blocks
 z t z t+1

    φ(・) Model内部の
 中間表現
 後藤ひとり
 τ(y) Text Encoder
 (Transformer)
 τ(y) QKV Attention
 y Denoising Autoencoder
 出典:ぼっち・ざ・ろっく! CloverWorks、アニプレックス、芳文社、 ©はまじあき/芳文社・アニプレックス
  22. Text Encoder & QKV Attention Blocks
 q query
 変換したい
 ベクトル


    key, value
 ベクトルを変換する際
 参照する情報
 keyとvalueが辞書的に
 一対一に対応している
 (k 1 , v 1 ), (k 2 , v 2 )
  23. Text Encoder & QKV Attention Blocks
 qT k 1 q

    qT k 2 key, value
 ベクトルを変換する際
 参照する情報
 keyとvalueが辞書的に
 一対一に対応している
 (k 1 , v 1 ), (k 2 , v 2 )
  24. Text Encoder & QKV Attention Blocks
 qT k 1 q

    qT k 2 queryとkeyとの関連度を
 内積を取ることで数値化する
 1.2 3.6
  25. Text Encoder & QKV Attention Blocks
 qT k 1 q

    qT k 2 0-1にスケールした後
 softmaxを取り
 関連度の和を1に正規化
 1.2 3.6 0.4 0.6 scale
 &
 softmax

  26. Text Encoder & QKV Attention Blocks
 qT k 1 q

    qT k 2 1.2 3.6 0.4 0.6 scale
 &
 softmax
 v 1 v 2 正規化した関連度で
 valueに重みをつける

  27. Text Encoder & QKV Attention Blocks
 qT k 1 q

    qT k 2 1.2 3.6 0.4 0.6 v 1 v 2 scale
 &
 softmax
 + q’
  28. k 1 q k 2 Text Encoder & QKV Attention

    Blocks
 v 1 v 2 query
 変換したい
 ベクトル
 key, value
 ベクトルを変換する際
 参照する情報
 keyとvalueが辞書的に
 一対一に対応している
 q’ output
 queryを元に
 key, valueから
 情報を引き出す

  29. Text Encoder & QKV Attention Blocks
 z t z t+1

    φ(・) 後藤ひとり
 τ(y) Text Encoder
 (Transformer)
 τ(y) QKV Attention
 この中身を
 もう少し見てみる
 Model内部の
 中間表現
 y 出典:ぼっち・ざ・ろっく! CloverWorks、アニプレックス、芳文社、 ©はまじあき/芳文社・アニプレックス Denoising Autoencoder

  30. QKV
 Text Encoder & QKV Attention Blocks
 φ(・) 後藤ひとり
 Text

    Encoder
 (Transformer)
 Model内部の
 中間表現
 y Self
 Attention query
 key
 value
 Cross
 Attention query
 key
 value
 出典:ぼっち・ざ・ろっく! CloverWorks、アニプレックス、芳文社、 ©はまじあき/芳文社・アニプレックス
  31. QKV
 Text Encoder & QKV Attention Blocks
 φ(・) 後藤ひとり
 Text

    Encoder
 (Transformer)
 Model内部の
 中間表現
 y Self
 Attention query
 key
 value
 Cross
 Attention query
 key
 value
 出典:ぼっち・ざ・ろっく! CloverWorks、アニプレックス、芳文社、 ©はまじあき/芳文社・アニプレックス QKV Attentionのkey, valueに
 「後藤ひとり」の情報を使うことで
 条件付けした生成過程を実行可能

  32. QKV
 Text Encoder & QKV Attention Blocks
 φ(・) 後藤ひとり
 Text

    Encoder
 (Transformer)
 Model内部の
 中間表現
 y Self
 Attention query
 key
 value
 Cross
 Attention query
 key
 value
 出典:ぼっち・ざ・ろっく! CloverWorks、アニプレックス、芳文社、 ©はまじあき/芳文社・アニプレックス QKV Attentionのkey, valueに
 「後藤ひとり」の情報を使うことで
 条件付けした生成過程を実行可能
 Transformerモデル 
 の一種である
 CLIPを使っている

  33. QKV
 Text Encoder & QKV Attention Blocks
 φ(・) 後藤ひとり
 Text

    Encoder
 (Transformer)
 Model内部の
 中間表現
 y Self
 Attention query
 key
 value
 Cross
 Attention query
 key
 value
 出典:ぼっち・ざ・ろっく! CloverWorks、アニプレックス、芳文社、 ©はまじあき/芳文社・アニプレックス QKV Attentionのkey, valueに
 「後藤ひとり」の情報を使うことで
 条件付けした生成過程を実行可能
 Transformerモデル 
 の一種である
 CLIPを使っている

  34. • CLIP (Constractive Language-Image Pretraining)
 ◦ Learning Transferable Visual Models

    From Natural Language Supervision
 ◦ 画像に対して正しいテキストをラベルとして割り当てる
 ▪ 事前学習方法を工夫することで
 zero-shot(初めてみるデータ)でも高い精度を出している
 ◦ テキストエンコーダー部分にTransformerが利用されている
 
 
 
 Text Encoder & QKV Attention Blocks
 

  35. • High-Resolution Image Synthesis with Latent Diffusion Models
 ◦ Diffusion

    ModelとCross Attention、Auto Encoderの組み合わせによって
 画像生成においてSOTAを達成
 
 Text Encoder & QKV Attention Blocks
 Cross Attentionを繰り返し適用して 条件付き確率過程を実現 

  36. Text Encoder & QKV Attention Blocks
 
 z t z

    t+1 φ(・) 後藤ひとり
 τ(y) Text Encoder
 (Transformer)
 τ(y) QKV Attention
 × N Model内部の
 中間表現
 y 画素数が多いと
 要求される計算量が
 膨大になってしまう
 Denoising Autoencoder

  37. • 3つのコンポーネント
 ◦ Denoising Auto Encoder
 ▪ 画像からノイズを取り除いていって目当ての画像を得る
 ◦ Text

    Encoder & QKV Attention Blocks
 ▪ 文章をベクトル表現に変換する
 ▪ 画像情報と文章情報を組み合わせる
 ◦ Variational Autoencoder
 ▪ 2次元画像をより小さなサイズの画像に変換する
 Latent Diffusion Model

  38. 画素数が多いと要求される計算量が膨大になってしまう
 → もっと小さな次元で学習すればよくね?
 Variational Autoencoder
 
 Encoder
 Model
 x 出典:ぼっち・ざ・ろっく!

    CloverWorks、アニプレックス、芳文社、 ©はまじあき/芳文社・アニプレックス 高次元変数を
 低次元の潜在空間へ 
 埋め込む

  39. 画素数が多いと要求される計算量が膨大になってしまう
 → もっと小さな次元で学習すればよくね?
 Variational Autoencoder
 
 Encoder
 Model
 x 出典:ぼっち・ざ・ろっく!

    CloverWorks、アニプレックス、芳文社、 ©はまじあき/芳文社・アニプレックス Denoising Model 高次元変数を
 低次元の潜在空間へ 
 埋め込む
 Denoising Autoencoder
  40. 画素数が多いと要求される計算量が膨大になってしまう
 → もっと小さな次元で学習すればよくね?
 Variational Autoencoder
 
 Encoder
 Model
 x 出典:ぼっち・ざ・ろっく!

    CloverWorks、アニプレックス、芳文社、 ©はまじあき/芳文社・アニプレックス Denoising Model 高次元変数を
 低次元の潜在空間へ 
 埋め込む
 Decoder
 Model
 潜在空間から
 もとの高次元空間に 
 復号する
 Denoising Autoencoder
  41. • High-Resolution Image Synthesis with Latent Diffusion Models
 ◦ denoising

    autoencoderとdiffusionモデルを組み合わせることによって
 画像生成においてSOTAを達成
 
 Latent Diffusion Model
 Variational Autoencoder
 特徴量を潜在空間へ 
 埋め込み&復号
 

  42. • High-Resolution Image Synthesis with Latent Diffusion Models
 ◦ denoising

    autoencoderとdiffusionモデルを組み合わせることによって
 画像生成においてSOTAを達成
 
 Latent Diffusion Model
 Variational Autoencoder
 特徴量を潜在空間へ 
 埋め込み&復号
 
 学習&推論を
 低次元の潜在空間で 
 行い計算量を削減
 

  43. • Stable Diffusion
 ◦ Stability AIが発表した画像生成モデル
 ◦ モデルが公開されており
 誰でも気軽に試すことができる
 →

    Stable Diffusionを使ったサービスや派生モデル
 • Latent Diffusion Model
 ◦ Stable Diffusionの基礎
 ◦ 3つのコンポーネントを組み合わせてText 2 Imageで高いクオリティを 実現
 ▪ Denoising Autoencoder
 ▪ Text Encoder & QKV Attention blocks
 ▪ Variational Autoencoder
 まとめ

  44. • 発展
 ◦ Diffusionは画像だけでなく
 さまざまなデータ分布に応用できる
 ◦ Dance Diffusion - a

    Hugging Face Space by harmonai
 ▪ Harmonaiが公開している音声版Diffusion
 • まだまだクオリティは低いが今後の発展に期待
 ◦ ほかにも色々な分野で応用できる可能性があるかも
 ▪ 可能性は無限大
 まとめ