Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Deffusion解説
Search
payanotty
February 09, 2023
Technology
3
770
Deffusion解説
payanotty
February 09, 2023
Tweet
Share
More Decks by payanotty
See All by payanotty
トークナイザー入門
payanotty
2
1.2k
LLM_Prompt_Recovery
payanotty
3
820
Embeddingモデルを使ったベクトル化のしくみ、fine-tuning手法を解説
payanotty
14
4.1k
Transformerによるテキストベクトル化を解説
payanotty
4
2.2k
Kaggle_LLMコンペの攻略法を解説.pdf
payanotty
1
1.3k
ManimMLでイケてるアニメーションを作ろう
payanotty
0
640
Lets Finetune LLM
payanotty
3
1.2k
Stable Diffusion Web UI, Let Your Fave Eat Ramen
payanotty
1
970
Lets Finetune Stable Diffusion
payanotty
0
1.2k
Other Decks in Technology
See All in Technology
プロセス改善とE2E自動テストによる、プロダクトの品質向上事例
tomasagi
1
1.4k
GAS × Discord bot × Gemini で作ったさいきょーの情報収集ツール
ysknsid25
1
510
【CNDW2024】SIerで200人クラウドネイティブのファンを増やした話
yuta1979
1
310
歴史あるRuby on Railsでデッドコードを見つけ、 消す方法@yabaibuki.dev #3
ayumu838
0
1.7k
品質管理チームのEMとして大事にしていること / QA EM
nihonbuson
0
370
情シスの引継ぎが大変という話
miyu_dev
2
540
次のコンテナセキュリティの時代 - User Namespace With a Pod / CloudNative Days Winter 2024
pfn
PRO
5
460
RAMP2024
takeyukitamura
3
240
もう一度、 事業を支えるシステムに。
leveragestech
6
3.1k
Oracle Cloud Infrastructure:2024年11月度サービス・アップデート
oracle4engineer
PRO
0
160
ミスが許されない領域にAIを溶け込ませる プロダクトマネジメントの裏側
t01062sy
0
210
ドメインロジックで考えるテスタビリティ
leveragestech
1
220
Featured
See All Featured
Scaling GitHub
holman
458
140k
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
Statistics for Hackers
jakevdp
796
220k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
Designing for Performance
lara
604
68k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Optimizing for Happiness
mojombo
376
70k
Producing Creativity
orderedlist
PRO
341
39k
Code Reviewing Like a Champion
maltzj
520
39k
Visualization
eitanlees
145
15k
Intergalactic Javascript Robots from Outer Space
tanoku
269
27k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
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 • まだまだクオリティは低いが今後の発展に期待 ◦ ほかにも色々な分野で応用できる可能性があるかも ▪ 可能性は無限大 まとめ