Slide 1

Slide 1 text

Stable Diffusion
 画像生成のしくみを解説
 
 
 早野康太


Slide 2

Slide 2 text

自己紹介
 ● 名前
 ○ 早野 康太
 ● お仕事
 ○ 自然言語モデルの改善
 ● 冬アニメおすすめ
 ○ おにいちゃんは
 おしまい!
 (かわいいぞ)
 ○ もういっぽん!
 (スポ根はいいぞ)
 ○ 大雪海のカイナ
 (弐瓶勉×SFはいいぞ)


Slide 3

Slide 3 text

目次
 ● はじめに
 ○ 前提知識
 ○ Stable Diffusionとは
 ● Latent Diffusion Model解説 (論文)
 ○ Denoising Autoencoder 
 ■ ノイズ除去で画像生成
 ○ Text Encoder & QKV Attention Blocks
 ■ 文章情報の処理方法について
 ○ Variational Autoencoder
 ■ 画像をより小さな次元に埋め込む
 ● まとめ


Slide 4

Slide 4 text

前提知識
 ● 数学知識
 ○ 数式を見ても拒否感がない程度
 ● Deep Neural Network (DNN)
 ○ forwardのしくみがわかる
 ○ Autoencoderを知っている
 ● 自然言語処理
 ○ 文章のトークナイズ→埋込みの出力が
 ある程度イメージできる
 


Slide 5

Slide 5 text

Stable Diffusionとは
 ● 文章を与えると画像を生成してくれるモデル
 ● 2022年にStability AIが公開
 ○ Google Colaboratoryを使えばサクッと試せる
 ■ https://huggingface.co/stabilityai/stable-diffusion-2
 
 
 


Slide 6

Slide 6 text

プロンプト: kirara jumping girls
 seed: 42
 Stable Diffusionとは
 Steps = 1
 Steps = 5
 Steps = 10
 Steps = 20
 Steps = 30
 Steps = 40
 NovelAI Diffusionから生成


Slide 7

Slide 7 text

Stable Diffusionとは
 ● モデルを誰でも利用できるため
 Stable Diffusionを使ったサービスや派生モデルの公開など
 さかんに行われている
 ○ 画像生成bot
 ■ Line, Discordなど
 ○ 派生モデル
 ■ NovelAI Diffusion
 ■ Waifu Diffusion
 ■ ほか、Huggingfaceで検索したら無限に出てくる
 ● Models - Hugging Face 
 


Slide 8

Slide 8 text

● High-Resolution Image Synthesis with Latent Diffusion Models (2022)
 ○ Diffusion ModelとCross Attention、Auto Encoderの組み合わせによって
 画像生成においてSOTAを達成
 
 Latent Diffusion Model


Slide 9

Slide 9 text

● 3つのコンポーネント
 ○ Denoising Autoencoder
 ■ 画像からノイズを取り除いていって目当ての画像を得る
 ○ Text Encoder & QKV Attention Blocks
 ■ 文章をベクトル表現に変換する
 ■ 画像情報と文章情報を組み合わせる
 ○ Variational Autoencoder
 ■ 2次元画像をより小さなサイズの画像に変換する
 Latent Diffusion Model


Slide 10

Slide 10 text

● 3つのコンポーネント
 ○ Denoising Autoencoder
 ■ 画像からノイズを取り除いていって目当ての画像を得る
 ○ Text Encoder & QKV Attention Blocks
 ■ 文章をベクトル表現に変換する
 ■ 画像情報と文章情報を組み合わせる
 ○ Variational Autoencoder
 ■ 2次元画像をより小さなサイズの画像に変換する
 Latent Diffusion Model


Slide 11

Slide 11 text

● 基本的なアイデア
 ○ Deep Unsupervised Learning using Nonequilibrium Thermodynamics
 (2015)
 ■ マルコフ連鎖を学習させることで複雑な確率分布にモデルを適合
 ○ Denoising Diffusion Probabilistic Models (2020)
 ■ 画像生成をマルコフ連鎖と捉えて高品質な画像を生成
 Denoising Autoencoder


Slide 12

Slide 12 text

Denoising Autoencoder
 ● 画像からノイズを取り除いていって目当ての画像を生成する
 
 ● 2プロセス
 ○ Forward Process: 画像に少しずつノイズを乗せていく
 ■ 学習段階
 ○ Reverse Process: 画像からすこしずつノイズを取り除く
 ■ 推論段階
 


Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

Denoising Autoencoder
 スタート地点
 出典:ぼっち・ざ・ろっく! CloverWorks、アニプレックス、芳文社、 ©はまじあき/芳文社・アニプレックス

Slide 17

Slide 17 text

Denoising Autoencoder
 スタート地点
 出典:ぼっち・ざ・ろっく! CloverWorks、アニプレックス、芳文社、 ©はまじあき/芳文社・アニプレックス 高次元空間のある一点

Slide 18

Slide 18 text

Denoising Autoencoder
 
 
 出典:ぼっち・ざ・ろっく! CloverWorks、アニプレックス、芳文社、 ©はまじあき/芳文社・アニプレックス z 0 ● Reverse Process
 ○ 画像からノイズを少しずつ取り除いていく
 ○ 推論段階で行う処理


Slide 19

Slide 19 text

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
 ○ 画像からノイズを少しずつ取り除いていく
 ○ 推論段階で行う処理


Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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ステップ目の画像から
 取り除くノイズを推定する

Slide 22

Slide 22 text

Denoising Autoencoder
 
 どこかに後藤ひとりを 表現する点があるはず 出典:ぼっち・ざ・ろっく! CloverWorks、アニプレックス、芳文社、 ©はまじあき/芳文社・アニプレックス 高次元空間のある一点 ε θ (z 0 ) z 1 z 0 マルコフ過程を学習
 z T = Πp(z t |z t-1 )


Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

Denoising Autoencoder
 
 z t z t+1 後藤ひとり
 y 出典:ぼっち・ざ・ろっく! CloverWorks、アニプレックス、芳文社、 ©はまじあき/芳文社・アニプレックス Denoising Autoencoder 文章情報で条件付けしたい 
 → Text Encoder, QKV Attention 


Slide 25

Slide 25 text

● 3つのコンポーネント
 ○ Denoising Auto Encoder
 ■ 画像からノイズを取り除いていって目当ての画像を得る
 ○ Text Encoder & QKV Attention Blocks
 ■ 文章をベクトル表現に変換する
 ■ 画像情報と文章情報を組み合わせる
 ○ Variational Autoencoder
 ■ 2次元画像をより小さなサイズの画像に変換する
 Latent Diffusion Model


Slide 26

Slide 26 text

Text Encoder & QKV Attention Blocks
 どこかに後藤ひとりを 表現する点があるはず 出典:ぼっち・ざ・ろっく! CloverWorks、アニプレックス、芳文社、 ©はまじあき/芳文社・アニプレックス 画素数次元のある一点 ε θ (z 0 , y) z 1 z 0 「後藤ひとり」という文章情報yによって
 マルコフ過程に条件付けをする
 z T = Πp(z t |z t-1 , y)


Slide 27

Slide 27 text

Text Encoder & QKV Attention Blocks
 z t z t+1 φ(・) Model内部の
 中間表現
 後藤ひとり
 τ(y) Text Encoder
 (Transformer)
 τ(y) QKV Attention
 y Denoising Autoencoder
 出典:ぼっち・ざ・ろっく! CloverWorks、アニプレックス、芳文社、 ©はまじあき/芳文社・アニプレックス

Slide 28

Slide 28 text

● Attentionとは、入力ベクトルを別の参照情報を用いて
 別のベクトルへと変換する仕組み
 Text Encoder & QKV Attention Blocks
 入力ベクトル
 q 出力ベクトル
 q’ 参照情報
 k, v

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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


Slide 33

Slide 33 text

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に重みをつける


Slide 34

Slide 34 text

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’

Slide 35

Slide 35 text

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


Slide 36

Slide 36 text

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


Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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に
 「後藤ひとり」の情報を使うことで
 条件付けした生成過程を実行可能


Slide 39

Slide 39 text

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を使っている


Slide 40

Slide 40 text

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を使っている


Slide 41

Slide 41 text

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


Slide 42

Slide 42 text

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


Slide 43

Slide 43 text

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


Slide 44

Slide 44 text

● 3つのコンポーネント
 ○ Denoising Auto Encoder
 ■ 画像からノイズを取り除いていって目当ての画像を得る
 ○ Text Encoder & QKV Attention Blocks
 ■ 文章をベクトル表現に変換する
 ■ 画像情報と文章情報を組み合わせる
 ○ Variational Autoencoder
 ■ 2次元画像をより小さなサイズの画像に変換する
 Latent Diffusion Model


Slide 45

Slide 45 text

画素数が多いと要求される計算量が膨大になってしまう
 → もっと小さな次元で学習すればよくね?
 Variational Autoencoder


Slide 46

Slide 46 text

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


Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

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


Slide 50

Slide 50 text

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


Slide 51

Slide 51 text

● Stable Diffusion
 ○ Stability AIが発表した画像生成モデル
 ○ モデルが公開されており
 誰でも気軽に試すことができる
 → Stable Diffusionを使ったサービスや派生モデル
 ● Latent Diffusion Model
 ○ Stable Diffusionの基礎
 ○ 3つのコンポーネントを組み合わせてText 2 Imageで高いクオリティを 実現
 ■ Denoising Autoencoder
 ■ Text Encoder & QKV Attention blocks
 ■ Variational Autoencoder
 まとめ


Slide 52

Slide 52 text

● 発展
 ○ Diffusionは画像だけでなく
 さまざまなデータ分布に応用できる
 ○ Dance Diffusion - a Hugging Face Space by harmonai
 ■ Harmonaiが公開している音声版Diffusion
 ● まだまだクオリティは低いが今後の発展に期待
 ○ ほかにも色々な分野で応用できる可能性があるかも
 ■ 可能性は無限大
 まとめ