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
750
Deffusion解説
payanotty
February 09, 2023
Tweet
Share
More Decks by payanotty
See All by payanotty
トークナイザー入門
payanotty
2
1.1k
LLM_Prompt_Recovery
payanotty
3
800
Embeddingモデルを使ったベクトル化のしくみ、fine-tuning手法を解説
payanotty
14
3.8k
Transformerによるテキストベクトル化を解説
payanotty
4
2k
Kaggle_LLMコンペの攻略法を解説.pdf
payanotty
1
1.2k
ManimMLでイケてるアニメーションを作ろう
payanotty
0
620
Lets Finetune LLM
payanotty
3
1.2k
Stable Diffusion Web UI, Let Your Fave Eat Ramen
payanotty
1
960
Lets Finetune Stable Diffusion
payanotty
0
1.2k
Other Decks in Technology
See All in Technology
独自ツール開発でスタジオ撮影をDX!「VLS(Virtual LED Studio)」 / dx-studio-vls
cyberagentdevelopers
PRO
1
180
Commitment vs Harrisonism - Keynote for Scrum Niseko 2024
miholovesq
6
1.1k
2024-10-30-reInventStandby_StudyGroup_Intro
shinichirokawano
1
630
Jr. Championsになって、強く連携しながらAWSをもっと使いたい!~AWSに対する期待と行動~
amixedcolor
0
190
GitHub Universe: Evaluating RAG apps in GitHub Actions
pamelafox
0
170
VPC間の接続方法を整理してみた #自治体クラウド勉強会
non97
1
840
AIを駆使したゲーム開発戦略: 新設AI組織の取り組み / sge-ai-strategy
cyberagentdevelopers
PRO
1
130
バクラクにおける可観測性向上の取り組み
yuu26
3
420
スプリントゴールにチームの状態も設定する背景とその効果 / Team state in sprint goals why and impact
kakehashi
2
100
話題のGraphRAG、その可能性と課題を理解する
hide212131
4
1.5k
Fargateを使った研修の話
takesection
0
110
MAMを軸とした動画ハンドリングにおけるAI活用前提の整備と次世代ビジョン / abema-ai-mam
cyberagentdevelopers
PRO
1
110
Featured
See All Featured
Speed Design
sergeychernyshev
24
570
For a Future-Friendly Web
brad_frost
175
9.4k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
Become a Pro
speakerdeck
PRO
24
5k
Practical Orchestrator
shlominoach
186
10k
BBQ
matthewcrist
85
9.3k
Building Better People: How to give real-time feedback that sticks.
wjessup
363
19k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
31
2.7k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
27
790
Designing for Performance
lara
604
68k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
92
16k
Writing Fast Ruby
sferik
626
61k
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 • まだまだクオリティは低いが今後の発展に期待 ◦ ほかにも色々な分野で応用できる可能性があるかも ▪ 可能性は無限大 まとめ