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
800
Deffusion解説
payanotty
February 09, 2023
Tweet
Share
More Decks by payanotty
See All by payanotty
トークナイザー入門
payanotty
2
1.4k
LLM_Prompt_Recovery
payanotty
3
880
Embeddingモデルを使ったベクトル化のしくみ、fine-tuning手法を解説
payanotty
14
4.7k
Transformerによるテキストベクトル化を解説
payanotty
4
2.7k
Kaggle_LLMコンペの攻略法を解説.pdf
payanotty
1
1.3k
ManimMLでイケてるアニメーションを作ろう
payanotty
0
680
Lets Finetune LLM
payanotty
3
1.3k
Stable Diffusion Web UI, Let Your Fave Eat Ramen
payanotty
1
1k
Lets Finetune Stable Diffusion
payanotty
0
1.2k
Other Decks in Technology
See All in Technology
PHPカンファレンス名古屋-テックリードの経験から学んだ設計の教訓
hayatokudou
2
250
地方拠点で エンジニアリングマネージャーってできるの? 〜地方という制約を楽しむオーナーシップとコミュニティ作り〜
1coin
1
220
Developer Summit 2025 [14-D-1] Yuki Hattori
yuhattor
19
6.2k
Classmethod AI Talks(CATs) #16 司会進行スライド(2025.02.12) / classmethod-ai-talks-aka-cats_moderator-slides_vol16_2025-02-12
shinyaa31
0
110
7日間でハッキングをはじめる本をはじめてみませんか?_ITエンジニア本大賞2025
nomizone
2
1.8k
Datadog APM におけるトレース収集の流れ及び Retention Filters のはなし / datadog-apm-trace-retention-filters
k6s4i53rx
0
330
エンジニアのためのドキュメント力基礎講座〜構造化思考から始めよう〜(2025/02/15jbug広島#15発表資料)
yasuoyasuo
17
6.7k
AndroidデバイスにFTPサーバを建立する
e10dokup
0
250
抽象化をするということ - 具体と抽象の往復を身につける / Abstraction and concretization
soudai
13
2.6k
自動テストの世界に、この5年間で起きたこと
autifyhq
10
8.5k
Helm , Kustomize に代わる !? 次世代 k8s パッケージマネージャー Glasskube 入門 / glasskube-entry
parupappa2929
0
250
『衛星データ利用の方々にとって近いようで触れる機会のなさそうな小話 ~ 衛星搭載ソフトウェアと衛星運用ソフトウェア (実物) を動かしながらわいわいする編 ~』 @日本衛星データコミニティ勉強会
meltingrabbit
0
140
Featured
See All Featured
[RailsConf 2023] Rails as a piece of cake
palkan
53
5.2k
The Invisible Side of Design
smashingmag
299
50k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
12
960
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
21
2.5k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
Six Lessons from altMBA
skipperchong
27
3.6k
A Modern Web Designer's Workflow
chriscoyier
693
190k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
7k
Docker and Python
trallard
44
3.3k
Why You Should Never Use an ORM
jnunemaker
PRO
55
9.2k
Testing 201, or: Great Expectations
jmmastey
42
7.2k
RailsConf 2023
tenderlove
29
1k
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 • まだまだクオリティは低いが今後の発展に期待 ◦ ほかにも色々な分野で応用できる可能性があるかも ▪ 可能性は無限大 まとめ