Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Deffusion解説
Search
payanotty
February 09, 2023
Technology
3
780
Deffusion解説
payanotty
February 09, 2023
Tweet
Share
More Decks by payanotty
See All by payanotty
トークナイザー入門
payanotty
2
1.2k
LLM_Prompt_Recovery
payanotty
3
840
Embeddingモデルを使ったベクトル化のしくみ、fine-tuning手法を解説
payanotty
14
4.2k
Transformerによるテキストベクトル化を解説
payanotty
4
2.3k
Kaggle_LLMコンペの攻略法を解説.pdf
payanotty
1
1.3k
ManimMLでイケてるアニメーションを作ろう
payanotty
0
650
Lets Finetune LLM
payanotty
3
1.2k
Stable Diffusion Web UI, Let Your Fave Eat Ramen
payanotty
1
980
Lets Finetune Stable Diffusion
payanotty
0
1.2k
Other Decks in Technology
See All in Technology
LINEスキマニにおけるフロントエンド開発
lycorptech_jp
PRO
0
330
継続的にアウトカムを生み出し ビジネスにつなげる、 戦略と運営に対するタイミーのQUEST(探求)
zigorou
0
530
NilAway による静的解析で「10 億ドル」を節約する #kyotogo / Kyoto Go 56th
ytaka23
3
380
オプトインカメラ:UWB測位を応用したオプトイン型のカメラ計測
matthewlujp
0
170
スタートアップで取り組んでいるAzureとMicrosoft 365のセキュリティ対策/How to Improve Azure and Microsoft 365 Security at Startup
yuj1osm
0
210
社外コミュニティで学び社内に活かす共に学ぶプロジェクトの実践/backlogworld2024
nishiuma
0
260
どちらを使う?GitHub or Azure DevOps Ver. 24H2
kkamegawa
0
720
KubeCon NA 2024 Recap / Running WebAssembly (Wasm) Workloads Side-by-Side with Container Workloads
z63d
1
240
Wantedly での Datadog 活用事例
bgpat
1
440
ゼロから創る横断SREチーム 挑戦と進化の軌跡
rvirus0817
2
270
re:Invent 2024 Innovation Talks(NET201)で語られた大切なこと
shotashiratori
0
310
alecthomas/kong はいいぞ / kamakura.go#7
fujiwara3
1
300
Featured
See All Featured
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
A designer walks into a library…
pauljervisheath
204
24k
Building Your Own Lightsaber
phodgson
103
6.1k
Gamification - CAS2011
davidbonilla
80
5.1k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
1.2k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Thoughts on Productivity
jonyablonski
67
4.4k
Building Adaptive Systems
keathley
38
2.3k
The Power of CSS Pseudo Elements
geoffreycrofte
73
5.4k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.3k
4 Signs Your Business is Dying
shpigford
181
21k
Transcript
Stable Diffusion 画像生成のしくみを解説 早野康太
自己紹介 • 名前 ◦ 早野 康太 • お仕事 ◦ 自然言語モデルの改善
• 冬アニメおすすめ ◦ おにいちゃんは おしまい! (かわいいぞ) ◦ もういっぽん! (スポ根はいいぞ) ◦ 大雪海のカイナ (弐瓶勉×SFはいいぞ)
目次 • はじめに ◦ 前提知識 ◦ Stable Diffusionとは • Latent
Diffusion Model解説 (論文) ◦ Denoising Autoencoder ▪ ノイズ除去で画像生成 ◦ Text Encoder & QKV Attention Blocks ▪ 文章情報の処理方法について ◦ Variational Autoencoder ▪ 画像をより小さな次元に埋め込む • まとめ
前提知識 • 数学知識 ◦ 数式を見ても拒否感がない程度 • Deep Neural Network (DNN)
◦ forwardのしくみがわかる ◦ Autoencoderを知っている • 自然言語処理 ◦ 文章のトークナイズ→埋込みの出力が ある程度イメージできる
Stable Diffusionとは • 文章を与えると画像を生成してくれるモデル • 2022年にStability AIが公開 ◦ Google Colaboratoryを使えばサクッと試せる
▪ https://huggingface.co/stabilityai/stable-diffusion-2
プロンプト: kirara jumping girls seed: 42 Stable Diffusionとは Steps =
1 Steps = 5 Steps = 10 Steps = 20 Steps = 30 Steps = 40 NovelAI Diffusionから生成
Stable Diffusionとは • モデルを誰でも利用できるため Stable Diffusionを使ったサービスや派生モデルの公開など さかんに行われている ◦ 画像生成bot ▪
Line, Discordなど ◦ 派生モデル ▪ NovelAI Diffusion ▪ Waifu Diffusion ▪ ほか、Huggingfaceで検索したら無限に出てくる • Models - Hugging Face
• High-Resolution Image Synthesis with Latent Diffusion Models (2022) ◦
Diffusion ModelとCross Attention、Auto Encoderの組み合わせによって 画像生成においてSOTAを達成 Latent Diffusion Model
• 3つのコンポーネント ◦ Denoising Autoencoder ▪ 画像からノイズを取り除いていって目当ての画像を得る ◦ Text Encoder
& QKV Attention Blocks ▪ 文章をベクトル表現に変換する ▪ 画像情報と文章情報を組み合わせる ◦ Variational Autoencoder ▪ 2次元画像をより小さなサイズの画像に変換する Latent Diffusion Model
• 3つのコンポーネント ◦ Denoising Autoencoder ▪ 画像からノイズを取り除いていって目当ての画像を得る ◦ Text Encoder
& QKV Attention Blocks ▪ 文章をベクトル表現に変換する ▪ 画像情報と文章情報を組み合わせる ◦ Variational Autoencoder ▪ 2次元画像をより小さなサイズの画像に変換する Latent Diffusion Model
• 基本的なアイデア ◦ Deep Unsupervised Learning using Nonequilibrium Thermodynamics (2015)
▪ マルコフ連鎖を学習させることで複雑な確率分布にモデルを適合 ◦ Denoising Diffusion Probabilistic Models (2020) ▪ 画像生成をマルコフ連鎖と捉えて高品質な画像を生成 Denoising Autoencoder
Denoising Autoencoder • 画像からノイズを取り除いていって目当ての画像を生成する • 2プロセス ◦ Forward Process:
画像に少しずつノイズを乗せていく ▪ 学習段階 ◦ Reverse Process: 画像からすこしずつノイズを取り除く ▪ 推論段階
• Forward Process ◦ 画像に少しずつノイズを乗せていく ◦ 学習段階で行う前処理 Denoising Autoencoder x
0 出典:ぼっち・ざ・ろっく! CloverWorks、アニプレックス、芳文社、 ©はまじあき/芳文社・アニプレックス
• Forward Process ◦ 画像に少しずつノイズを乗せていく ◦ 学習段階で行う前処理 Denoising Autoencoder x
0 出典:ぼっち・ざ・ろっく! CloverWorks、アニプレックス、芳文社、 ©はまじあき/芳文社・アニプレックス x 1 = x 0 + ε 0
• Forward Process ◦ 画像に少しずつノイズを乗せていく ◦ 学習段階で行う前処理 Denoising Autoencoder x
0 出典:ぼっち・ざ・ろっく! CloverWorks、アニプレックス、芳文社、 ©はまじあき/芳文社・アニプレックス x 1 = x 0 + ε 0 x 2 = x 1 + ε 1 x 3 = x 2 + ε 2
Denoising Autoencoder スタート地点 出典:ぼっち・ざ・ろっく! CloverWorks、アニプレックス、芳文社、 ©はまじあき/芳文社・アニプレックス
Denoising Autoencoder スタート地点 出典:ぼっち・ざ・ろっく! CloverWorks、アニプレックス、芳文社、 ©はまじあき/芳文社・アニプレックス 高次元空間のある一点
Denoising Autoencoder 出典:ぼっち・ざ・ろっく! CloverWorks、アニプレックス、芳文社、 ©はまじあき/芳文社・アニプレックス z 0 •
Reverse Process ◦ 画像からノイズを少しずつ取り除いていく ◦ 推論段階で行う処理
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 ◦ 画像からノイズを少しずつ取り除いていく ◦ 推論段階で行う処理
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
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ステップ目の画像から 取り除くノイズを推定する
Denoising Autoencoder どこかに後藤ひとりを 表現する点があるはず 出典:ぼっち・ざ・ろっく! CloverWorks、アニプレックス、芳文社、 ©はまじあき/芳文社・アニプレックス 高次元空間のある一点 ε
θ (z 0 ) z 1 z 0 マルコフ過程を学習 z T = Πp(z t |z t-1 )
Denoising Autoencoder Denoising Autoencoder z t z t+1 出典:ぼっち・ざ・ろっく!
CloverWorks、アニプレックス、芳文社、 ©はまじあき/芳文社・アニプレックス
Denoising Autoencoder z t z t+1 後藤ひとり y 出典:ぼっち・ざ・ろっく!
CloverWorks、アニプレックス、芳文社、 ©はまじあき/芳文社・アニプレックス Denoising Autoencoder 文章情報で条件付けしたい → Text Encoder, QKV Attention
• 3つのコンポーネント ◦ Denoising Auto Encoder ▪ 画像からノイズを取り除いていって目当ての画像を得る ◦ Text
Encoder & QKV Attention Blocks ▪ 文章をベクトル表現に変換する ▪ 画像情報と文章情報を組み合わせる ◦ Variational Autoencoder ▪ 2次元画像をより小さなサイズの画像に変換する Latent Diffusion Model
Text Encoder & QKV Attention Blocks どこかに後藤ひとりを 表現する点があるはず 出典:ぼっち・ざ・ろっく! CloverWorks、アニプレックス、芳文社、
©はまじあき/芳文社・アニプレックス 画素数次元のある一点 ε θ (z 0 , y) z 1 z 0 「後藤ひとり」という文章情報yによって マルコフ過程に条件付けをする z T = Πp(z t |z t-1 , y)
Text Encoder & QKV Attention Blocks z t z t+1
φ(・) Model内部の 中間表現 後藤ひとり τ(y) Text Encoder (Transformer) τ(y) QKV Attention y Denoising Autoencoder 出典:ぼっち・ざ・ろっく! CloverWorks、アニプレックス、芳文社、 ©はまじあき/芳文社・アニプレックス
• Attentionとは、入力ベクトルを別の参照情報を用いて 別のベクトルへと変換する仕組み Text Encoder & QKV Attention Blocks 入力ベクトル
q 出力ベクトル q’ 参照情報 k, v
Text Encoder & QKV Attention Blocks q query 変換したい ベクトル
key, value ベクトルを変換する際 参照する情報 keyとvalueが辞書的に 一対一に対応している (k 1 , v 1 ), (k 2 , v 2 )
Text Encoder & QKV Attention Blocks qT k 1 q
qT k 2 key, value ベクトルを変換する際 参照する情報 keyとvalueが辞書的に 一対一に対応している (k 1 , v 1 ), (k 2 , v 2 )
Text Encoder & QKV Attention Blocks qT k 1 q
qT k 2 queryとkeyとの関連度を 内積を取ることで数値化する 1.2 3.6
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
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に重みをつける
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’
k 1 q k 2 Text Encoder & QKV Attention
Blocks v 1 v 2 query 変換したい ベクトル key, value ベクトルを変換する際 参照する情報 keyとvalueが辞書的に 一対一に対応している q’ output queryを元に key, valueから 情報を引き出す
Text Encoder & QKV Attention Blocks z t z t+1
φ(・) 後藤ひとり τ(y) Text Encoder (Transformer) τ(y) QKV Attention この中身を もう少し見てみる Model内部の 中間表現 y 出典:ぼっち・ざ・ろっく! CloverWorks、アニプレックス、芳文社、 ©はまじあき/芳文社・アニプレックス Denoising Autoencoder
QKV Text Encoder & QKV Attention Blocks φ(・) 後藤ひとり Text
Encoder (Transformer) Model内部の 中間表現 y Self Attention query key value Cross Attention query key value 出典:ぼっち・ざ・ろっく! CloverWorks、アニプレックス、芳文社、 ©はまじあき/芳文社・アニプレックス
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に 「後藤ひとり」の情報を使うことで 条件付けした生成過程を実行可能
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を使っている
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を使っている
• CLIP (Constractive Language-Image Pretraining) ◦ Learning Transferable Visual Models
From Natural Language Supervision ◦ 画像に対して正しいテキストをラベルとして割り当てる ▪ 事前学習方法を工夫することで zero-shot(初めてみるデータ)でも高い精度を出している ◦ テキストエンコーダー部分にTransformerが利用されている Text Encoder & QKV Attention Blocks
• High-Resolution Image Synthesis with Latent Diffusion Models ◦ Diffusion
ModelとCross Attention、Auto Encoderの組み合わせによって 画像生成においてSOTAを達成 Text Encoder & QKV Attention Blocks Cross Attentionを繰り返し適用して 条件付き確率過程を実現
Text Encoder & QKV Attention Blocks z t z
t+1 φ(・) 後藤ひとり τ(y) Text Encoder (Transformer) τ(y) QKV Attention × N Model内部の 中間表現 y 画素数が多いと 要求される計算量が 膨大になってしまう Denoising Autoencoder
• 3つのコンポーネント ◦ Denoising Auto Encoder ▪ 画像からノイズを取り除いていって目当ての画像を得る ◦ Text
Encoder & QKV Attention Blocks ▪ 文章をベクトル表現に変換する ▪ 画像情報と文章情報を組み合わせる ◦ Variational Autoencoder ▪ 2次元画像をより小さなサイズの画像に変換する Latent Diffusion Model
画素数が多いと要求される計算量が膨大になってしまう → もっと小さな次元で学習すればよくね? Variational Autoencoder
画素数が多いと要求される計算量が膨大になってしまう → もっと小さな次元で学習すればよくね? Variational Autoencoder Encoder Model x 出典:ぼっち・ざ・ろっく!
CloverWorks、アニプレックス、芳文社、 ©はまじあき/芳文社・アニプレックス 高次元変数を 低次元の潜在空間へ 埋め込む
画素数が多いと要求される計算量が膨大になってしまう → もっと小さな次元で学習すればよくね? Variational Autoencoder Encoder Model x 出典:ぼっち・ざ・ろっく!
CloverWorks、アニプレックス、芳文社、 ©はまじあき/芳文社・アニプレックス Denoising Model 高次元変数を 低次元の潜在空間へ 埋め込む Denoising Autoencoder
画素数が多いと要求される計算量が膨大になってしまう → もっと小さな次元で学習すればよくね? Variational Autoencoder Encoder Model x 出典:ぼっち・ざ・ろっく!
CloverWorks、アニプレックス、芳文社、 ©はまじあき/芳文社・アニプレックス Denoising Model 高次元変数を 低次元の潜在空間へ 埋め込む Decoder Model 潜在空間から もとの高次元空間に 復号する Denoising Autoencoder
• High-Resolution Image Synthesis with Latent Diffusion Models ◦ denoising
autoencoderとdiffusionモデルを組み合わせることによって 画像生成においてSOTAを達成 Latent Diffusion Model Variational Autoencoder 特徴量を潜在空間へ 埋め込み&復号
• High-Resolution Image Synthesis with Latent Diffusion Models ◦ denoising
autoencoderとdiffusionモデルを組み合わせることによって 画像生成においてSOTAを達成 Latent Diffusion Model Variational Autoencoder 特徴量を潜在空間へ 埋め込み&復号 学習&推論を 低次元の潜在空間で 行い計算量を削減
• Stable Diffusion ◦ Stability AIが発表した画像生成モデル ◦ モデルが公開されており 誰でも気軽に試すことができる →
Stable Diffusionを使ったサービスや派生モデル • Latent Diffusion Model ◦ Stable Diffusionの基礎 ◦ 3つのコンポーネントを組み合わせてText 2 Imageで高いクオリティを 実現 ▪ Denoising Autoencoder ▪ Text Encoder & QKV Attention blocks ▪ Variational Autoencoder まとめ
• 発展 ◦ Diffusionは画像だけでなく さまざまなデータ分布に応用できる ◦ Dance Diffusion - a
Hugging Face Space by harmonai ▪ Harmonaiが公開している音声版Diffusion • まだまだクオリティは低いが今後の発展に期待 ◦ ほかにも色々な分野で応用できる可能性があるかも ▪ 可能性は無限大 まとめ