2023年5月開催の情報処理学会CVIM研究会において行ったチュートリアル講演の資料です。 拡散モデルによる画像生成について、「拡散モデルの原理と学習方法」「生成処理の制御(画像変換・編集への応用)」「生成処理の高速化(微分方程式との関係)」の3つに分けて解説しています。
View Slide
••𝑝(𝑥){𝑥𝑖}𝑖=1𝑁𝑥~𝑝(𝑥)
•••𝑝(𝑧)𝑧~𝑝(𝑧)………………{𝑥𝑖}𝑖=1𝑁𝑥 = 𝑓(𝑧)
•
•••
••𝑞 𝑥𝑡𝑥𝑡−1≔ 𝑁(𝑥𝑡; 1 − 𝛽𝑡𝑥𝑡−1, 𝛽𝑡𝐈)𝑥𝑡= 1 − 𝛽𝑡𝑥𝑡−1+ 𝛽𝑡𝜖𝑞 𝑥1:𝑇𝑥0= ෑ𝑡=1𝑇𝑞 𝑥𝑡𝑥𝑡−1𝑥𝑖 𝑡=1𝑇
• 𝑥0𝑥𝑡•𝑥0𝑥𝑡= 1 − 𝛽𝑡𝑥𝑡−1+ 𝛽𝑡𝜖= 1 − 𝛽𝑡( 1 − 𝛽𝑡−1𝑥𝑡−2+ 𝛽𝑡−1𝜖′) + 𝛽𝑡𝜖= 1 − 𝛽𝑡1 − 𝛽𝑡−1𝑥𝑡−2+ 1 − (1 − 𝛽𝑡)(1 − 𝛽𝑡−1)𝜖′′= … = ത𝛼𝑡𝑥0+ 1 − ത𝛼𝑡𝜖 ത𝛼𝑡= ς𝑖=1𝑡 (1 − 𝛽𝑖)
• 𝑥0𝑥𝑡•𝑥0𝑥𝑡= 1 − 𝛽𝑡𝑥𝑡−1+ 𝛽𝑡𝜖= 1 − 𝛽𝑡( 1 − 𝛽𝑡−1𝑥𝑡−2+ 𝛽𝑡−1𝜖′) + 𝛽𝑡𝜖= 1 − 𝛽𝑡1 − 𝛽𝑡−1𝑥𝑡−2+ 1 − (1 − 𝛽𝑡)(1 − 𝛽𝑡−1)𝜖′′= … = ത𝛼𝑡𝑥0+ 1 − ത𝛼𝑡𝜖 ത𝛼𝑡= ς𝑖=1𝑡 (1 − 𝛽𝑖)𝛽𝑡ത𝛼𝑡
•𝑥𝑡−1𝑥𝑡𝑥𝑡−1𝑥𝑡1 − 𝛽𝑡𝑥𝑡−1𝑥𝑡−1𝛽𝑡
•𝑥𝑡−1𝑥𝑡𝑥𝑡−1𝑥𝑡1 − 𝛽𝑡𝑥𝑡−1𝑥𝑡−1𝛽𝑡𝛽𝑡𝑝𝜃𝑥𝑡−1𝑥𝑡= 𝑁(𝑥𝑡−1; 𝜇𝜃(𝑥𝑡,𝑡), 𝚺𝜃(𝑥𝑡,𝑡))𝜎𝑡2𝑰𝜎𝑡2 = 𝛽𝑡
# Initializationxt = random.normal(0, 1, (3,H,W))# Reverse diffusion processfor t in range(T, 0, -1):# estimate meanmu = estimate_mean(model, xt, t)# use fixed sigmasigma = beta[t] ** 0.5# sample x_{t-1}xt = mu + sigma * random.normal(0, 1, (3,H,W))# return x_0return xt
• 𝑝𝜃(𝑥) 𝑝data(𝑥)•𝜃∗ = arg min𝜃𝐷𝐾𝐿(𝑝data(𝑥)||𝑝𝜃(𝑥))= arg min𝜃𝔼𝑝data(𝑥)log𝑝data(𝑥) − 𝔼𝑝data(𝑥)log 𝑝𝜃(𝑥)= arg min𝜃𝔼𝑝data(𝑥)− log 𝑝𝜃(𝑥)
•− log 𝑝𝜃𝑥0= − log න 𝑝𝜃𝑥0:𝑇d𝑥1:𝑇= − log න 𝑞(𝑥1:𝑇|𝑥0)𝑝𝜃𝑥0:𝑇𝑞(𝑥1:𝑇|𝑥0)d𝑥1:𝑇≤ − න 𝑞 𝑥1:𝑇𝑥0log𝑝𝜃𝑥0:𝑇𝑞 𝑥1:𝑇𝑥0d𝑥1:𝑇= 𝔼𝑞(𝑥1:𝑇|𝑥0)log𝑞 𝑥1:𝑇𝑥0𝑝𝜃𝑥0:𝑇log𝔼𝑞[𝑉] ≥ 𝔼𝑞[log𝑉]𝑥0𝑥0:𝑇𝑥0𝑥1:𝑇
• 𝑞 𝑥1:𝑇𝑥0= ෑ𝑡=1𝑇𝑞 𝑥𝑡𝑥𝑡−1= 𝐷KL𝑞 𝑥𝑇𝑥0ԡ𝑝𝜃𝑥𝑇− 𝔼𝑞(𝑥1|𝑥0)log 𝑝𝜃(𝑥0|𝑥1)+ 𝑡=2𝑇𝔼𝑞(𝑥𝑡|𝑥0)𝐷KL(𝑞(𝑥𝑡−1|𝑥𝑡,𝑥0)ԡ𝑝𝜃(𝑥𝑡−1|𝑥𝑡))𝑁(𝑥𝑡−1; 𝜇𝜃(𝑥𝑡,𝑡),𝜎𝑡2𝑰)𝑁(𝑥𝑡−1; 𝜇𝑡(𝑥𝑡,𝑥0), ෨𝛽𝑡𝑰)𝑥𝑡𝑥0𝑥𝑡−1
• 𝑞 𝑥1:𝑇𝑥0= ෑ𝑡=1𝑇𝑞 𝑥𝑡𝑥𝑡−1= 𝐷KL𝑞 𝑥𝑇𝑥0ԡ𝑝𝜃𝑥𝑇− 𝔼𝑞(𝑥1|𝑥0)log 𝑝𝜃(𝑥0|𝑥1)+ 𝑡=2𝑇𝔼𝑞(𝑥𝑡|𝑥0)12𝜎𝑡2𝜇𝑡𝑥𝑡,𝑥0− 𝜇𝜃(𝑥𝑡, 𝑡) 2 + const.𝑥𝑡𝜇𝑡
•𝜇𝑡𝑥𝑡,𝑥0= 𝑐0𝑥0+ 𝑐1𝑥𝑡=𝑐0ത𝛼𝑡+ 𝑐1𝑥𝑡−𝑐01 − ത𝛼𝑡ത𝛼𝑡𝜖𝑐0=𝛽𝑡1 − 𝛽𝑡−11 − ത𝛼𝑡, 𝑐1=1 − 𝛽𝑡(1 − ത𝛼𝑡−1)1 − ത𝛼𝑡𝑥𝑡= ത𝛼𝑡𝑥0+ 1 − ത𝛼𝑡𝜖𝑥𝑡𝜇𝑡𝑥𝑡𝑥0𝑥𝑡𝜖
• 𝑞 𝑥1:𝑇𝑥0= ෑ𝑡=1𝑇𝑞 𝑥𝑡𝑥𝑡−1= 𝐷KL𝑞 𝑥𝑇𝑥0ԡ𝑝𝜃𝑥𝑇− 𝔼𝑞(𝑥1|𝑥0)log 𝑝𝜃(𝑥0|𝑥1)+ 𝑡=2𝑇𝔼𝑞(𝑥𝑡|𝑥0)12𝜎𝑡2𝜇𝑡𝑥𝑡,𝑥0− 𝜇𝜃(𝑥𝑡, 𝑡) 2 + const.𝜖
• 𝜖••= 𝔼𝑡,𝜖𝜖 − 𝜖𝜃( ത𝛼𝑡𝑥0+ 1 − ത𝛼𝑡𝜖, 𝑡)2
•••𝑡~𝑈(1,𝑇)𝑥0𝜖~𝑁(0,1)𝜖𝜃ത𝛼𝑡𝑥0+ 1 − ത𝛼𝑡𝜖
•••• 𝛽𝑡• 𝛽1= 10−4, 𝛽𝑇= 0.02• 𝜎𝑡• 𝜎𝑡2 = 𝛽𝑡•
𝑁ℎ𝑁𝑚𝑁𝑙𝑁𝑏𝑁𝑙𝑁𝑚𝑁ℎ𝑡
•𝑡
•
•••••••••••••••••••••••••••••••••••••
••𝑝𝜃(𝑥𝑡−1|𝑥𝑡)
•• 𝑡0𝑥𝑡0𝑡0𝑥𝑡0−1𝑥𝑡0𝑥0𝑥𝑇𝑡0
••
•𝑦 = 𝐻𝑥 + 𝑛
••𝑥~𝑝(𝑥)𝑦𝑥~𝑝(𝑥|𝑦)
•𝑥𝑡−1𝑥𝑡𝑥0𝑥𝑇𝑦 = 𝐻𝑥 + 𝑛
•• 𝑥𝑡𝑥𝑡−1𝑥𝑡𝑥0𝑥𝑇𝑦 = 𝐻𝑥
••𝑥0𝑥𝑡−1𝑥𝑡𝐻𝐻𝑦 𝜇𝜃𝐻𝑥𝑡−1𝑥𝑡−1
𝑥𝑡−1𝑥𝑡𝑥𝑡−2𝑥𝑡−1𝑥𝑡𝑥𝑡−2
•••𝑧1𝑧𝑇𝑧0𝐻 × 𝑊 × 3𝐻𝑛×𝑊𝑛× 𝑐
•••𝑥𝑡−1𝑥𝑡𝑥0𝑥𝑇𝑥𝑡−1𝑥𝑡𝑥0𝑥𝑇
•• 𝜏1,… , 𝜏𝑆(𝜏𝑖∈ [1,𝑇])𝛽𝛽𝜏𝑖= 1 − ෑ𝑗=𝜏𝑖−1+1𝜏𝑖1 − 𝛽𝑗𝜏𝑖−1𝜏𝑖𝑥𝑡−1𝑥𝑡𝑥𝑡−2𝑥𝑡−1𝑥𝑡𝑥𝑡−2𝜏𝑖
••𝑥𝑡 = 0 𝑡 = 𝑇𝑥0𝑥𝑇𝑥𝑇−1𝑥1𝑥𝑡+1= 1 − 𝛽𝑡+1𝑥𝑡+ 𝛽𝑡+1𝜖
•𝑥𝑡 = 0 𝑡 = 1𝑥0𝑥1d𝑥 = −12𝛽 𝑡 𝑥 d𝑡 + 𝛽(𝑡) d𝑤𝑤
⇒⇒𝑁(𝑥𝑡; 1 − 𝛽𝑡𝑥𝑡−1, 𝛽𝑡𝐈)𝑁(𝑥𝑡−1; 𝜇𝜃(𝑥𝑡,𝑡),𝜎𝑡2𝐈)d𝑥 = −12𝛽 𝑡 𝑥 d𝑡 + 𝛽(𝑡) d𝑤
•𝑥𝑡 = 0 𝑡 = 1𝑥0𝑥1ഥ𝑤d𝑥 = −𝛽 𝑡12𝑥 + ∇𝑥log 𝑞𝑡(𝑥) d𝑡 + 𝛽(𝑡) dഥ𝑤
•••d𝑥 = −𝛽 𝑡12𝑥 + ∇𝑥log 𝑞𝑡(𝑥) d𝑡 + 𝛽(𝑡) dഥ𝑤 𝑥1~𝑞1(𝑥)𝑠𝜃𝑥 = −𝜖𝜃(𝑥, 𝑡)1 − ത𝛼𝑡
∇𝑥log 𝑞𝑡(𝑥) 𝜖𝜃(𝑥𝑡,𝑡)𝔼𝑞𝑡(𝑥)12𝑠𝜃𝑥 − ∇𝑥log 𝑞𝑡𝑥 2 𝔼𝑥0~𝑞0(𝑥)𝜖~𝑁(0,𝐼)𝜖𝜃( ത𝛼𝑡𝑥0+ 1 − ത𝛼𝑡𝜖, 𝑡) − 𝜖2𝑠𝜃𝑠𝜃𝑥 = −𝜖𝜃(𝑥,𝑡)1 − ത𝛼𝑡
⇒⇒𝑁(𝑥𝑡; 1 − 𝛽𝑡𝑥𝑡−1, 𝛽𝑡𝐈)𝑁(𝑥𝑡−1; 𝜇𝜃(𝑥𝑡,𝑡),𝜎𝑡2𝐈)d𝑥 = −12𝛽 𝑡 𝑥 d𝑡 + 𝛽(𝑡) d𝑤d𝑥 = −𝛽 𝑡12𝑥 −𝜖𝜃(𝑥, 𝑡)1 − ത𝛼𝑡d𝑡 + 𝛽(𝑡) dഥ𝑤
••d𝑥 = −𝛽 𝑡12𝑥 + ∇𝑥log 𝑞𝑡(𝑥) d𝑡 + 𝛽(𝑡) dഥ𝑤 𝑥1~𝑞1(𝑥)d𝑥 = −𝛽 𝑡12𝑥 +12∇𝑥log 𝑞𝑡(𝑥) d𝑡 𝑥1~𝑞1(𝑥)𝑥1𝑥0
𝑥𝑡 = 0 𝑡 = 1𝑥𝑡 = 0 𝑡 = 1𝑞0(𝑥) 𝑞𝑡(𝑥) 𝑞1(𝑥) 𝑞0(𝑥) 𝑞𝑡(𝑥) 𝑞1(𝑥)
• ∆𝑡 𝑥 𝑥1𝑥0𝑥 𝑡 − ∆𝑡 = 𝑥𝑡− ∆𝑡 ቤd𝑥d𝑡𝑥=𝑥𝑡𝑥𝑡 = 0 𝑡 = 1𝑥0𝑥∆𝑡𝑥1𝑥1−∆𝑡d𝑥 = −𝛽 𝑡12𝑥 +12∇𝑥log 𝑞𝑡(𝑥) d𝑡∆𝑡 𝑥
• ∆𝑡∆𝑡
𝑡𝑡 𝑡𝑡𝜎′1/𝜌log 𝛼1−𝛼𝑡1/𝜌
𝑡𝑡 𝑡𝑡𝜎′1/𝜌log 𝛼1−𝛼𝑡1/𝜌𝑥∆𝑡