$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Deffusion解説
Search
payanotty
February 09, 2023
Technology
3
910
Deffusion解説
payanotty
February 09, 2023
Tweet
Share
More Decks by payanotty
See All by payanotty
トークナイザー入門
payanotty
4
2.2k
LLM_Prompt_Recovery
payanotty
3
1k
Embeddingモデルを使ったベクトル化のしくみ、fine-tuning手法を解説
payanotty
15
6k
Transformerによるテキストベクトル化を解説
payanotty
5
3.9k
Kaggle_LLMコンペの攻略法を解説.pdf
payanotty
1
1.6k
ManimMLでイケてるアニメーションを作ろう
payanotty
0
780
Lets Finetune LLM
payanotty
3
1.4k
Stable Diffusion Web UI, Let Your Fave Eat Ramen
payanotty
1
1.1k
Lets Finetune Stable Diffusion
payanotty
0
1.3k
Other Decks in Technology
See All in Technology
評価駆動開発で不確実性を制御する - MLflow 3が支えるエージェント開発
databricksjapan
1
120
Microsoft Agent 365 についてゆっくりじっくり理解する!
skmkzyk
0
120
Sansanが実践する Platform EngineeringとSREの協創
sansantech
PRO
2
800
ブロックテーマとこれからの WordPress サイト制作 / Toyama WordPress Meetup Vol.81
torounit
0
550
MapKitとオープンデータで実現する地図情報の拡張と可視化
zozotech
PRO
1
130
モダンデータスタック (MDS) の話とデータ分析が起こすビジネス変革
sutotakeshi
0
470
[CMU-DB-2025FALL] Apache Fluss - A Streaming Storage for Real-Time Lakehouse
jark
0
110
生成AI時代の自動E2Eテスト運用とPlaywright実践知_引持力哉
legalontechnologies
PRO
0
220
Kiro Autonomous AgentとKiro Powers の紹介 / kiro-autonomous-agent-and-powers
tomoki10
0
410
A Compass of Thought: Guiding the Future of Test Automation ( #jassttokai25 , #jassttokai )
teyamagu
PRO
1
260
今年のデータ・ML系アップデートと気になるアプデのご紹介
nayuts
1
280
Snowflakeでデータ基盤を もう一度作り直すなら / rebuilding-data-platform-with-snowflake
pei0804
4
1.3k
Featured
See All Featured
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.1k
Agile that works and the tools we love
rasmusluckow
331
21k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.1k
Thoughts on Productivity
jonyablonski
73
5k
Rails Girls Zürich Keynote
gr2m
95
14k
Docker and Python
trallard
47
3.7k
KATA
mclloyd
PRO
32
15k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.6k
Java REST API Framework Comparison - PWX 2021
mraible
34
9k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
1
98
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
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 • まだまだクオリティは低いが今後の発展に期待 ◦ ほかにも色々な分野で応用できる可能性があるかも ▪ 可能性は無限大 まとめ