Delete README.md
本方法由三大部分构成:
请参考原论文
扩散模型由两个随机过程组成:
(a) 噪声添加过程,由一个被称为前向SDE的随机微分方程(SDE)建模:
dXt=f(Xt,t)dt+g(Xt,t)dWt,X0∼p0,dX_t = f(X_t,t) dt + g(X_t,t) dW_t, X_0 \sim p_0,dXt=f(Xt,t)dt+g(Xt,t)dWt,X0∼p0,
(b) 去噪过程,由前向SDE的时间反转在轻微正则化条件下建模,也称为反向SDE:
dXt=[f(Xt,t)−g2(Xt,t)∇logp(Xt,t)]dt+g(Xt,t)dWt,X1∼N(0,Id).(1)dX_t = \left[f(X_t,t) - g^2(X_t,t)\nabla \log p(X_t,t)\right] dt + g(X_t,t) dW_t, \quad X_1 \sim \mathcal{N}(0,I_d). \tag{1}dXt=[f(Xt,t)−g2(Xt,t)∇logp(Xt,t)]dt+g(Xt,t)dWt,X1∼N(0,Id).(1)
这里,W=(Wt)t≥0W = (W_t)_{t\geq0}W=(Wt)t≥0 是在滤波概率空间 (Ω,F,(Ft)t≥0,P)(\Omega, \mathcal{F}, (\mathcal{F}_t)_{t\geq0}, \mathcal{P})(Ω,F,(Ft)t≥0,P) 上的标准布朗运动,p(⋅,t)p(\cdot,t)p(⋅,t) 表示 ppp 在时间 ttt 的边缘密度,∇logpt(⋅)\nabla \log p_t(\cdot)∇logpt(⋅) 为相应的得分函数。f(Xt,t)f(X_t,t)f(Xt,t) 和 g(Xt,t)g(X_t,t)g(Xt,t) 分别称为漂移项和波动率。f(Xt,t)=−Xtf(X_t,t) = -X_tf(Xt,t)=−Xt 和 g(Xt,t)=2g(X_t,t) = \sqrt{2}g(Xt,t)=2 是一个流行的选择,对应于著名的前向Ornstein-Uhlenbeck (OU)过程。
对于T2I生成,反向SDE (1) 使用神经网络 s(xt,t;θ)s(x_t,t;\theta)s(xt,t;θ) [39, 40] 来近似 ∇xlogp(xt,t)\nabla_x \log p(x_t,t)∇xlogp(xt,t) 进行模拟。重要的是,为了在实践中加速采样过程 [20, 41, 42],反向SDE (1) 与概率流ODE共享相同的路径测度:
dXt=[f(Xt,t)−12g2(Xt,t)∇logp(Xt,t)]dt,X1∼N(0,Id).dX_t = \left[f(X_t,t) - \frac{1}{2}g^2(X_t,t)\nabla \log p(X_t,t)\right] dt, \quad X_1 \sim \mathcal{N}(0,I_d).dXt=[f(Xt,t)−21g2(Xt,t)∇logp(Xt,t)]dt,X1∼N(0,Id).
将时间 ttt 按总扩散步数 TTT 归一化,使得 0≤t≤10 \leq t \leq 10≤t≤1。令 u:Rd×[0,1]→Rdu : \mathbb{R}^d \times [0,1] \to \mathbb{R}^du:Rd×[0,1]→Rd 表示从可允许控制集 U⊆Rd\mathcal{U} \subseteq \mathbb{R}^dU⊆Rd 中选择的控制器,Xtu∈RdX_t^u \in \mathbb{R}^dXtu∈Rd 为状态变量,ℓ:Rd×Rd×[0,1]→R\ell : \mathbb{R}^d \times \mathbb{R}^d \times [0,1] \to \mathbb{R}ℓ:Rd×Rd×[0,1]→R 为瞬时代价,h:Rd→Rh : \mathbb{R}^d \to \mathbb{R}h:Rd→R 为逆过程 (Xtu)t=10(X_t^u)_{t=1}^0(Xtu)t=10 的终端代价。我们表明,风格迁移可以被表述为一个控制问题,其中标准逆SDE (1)的漂移项通过RB-调制进行修改:
u∈UE[∫10ℓ(Xtu,u(Xtu,t),t)dt+γh(X0u)],其中(2)\min_{u\in\mathcal{U}} \mathbb{E}\left[ \int_1^0 \ell(X_t^u, u(X_t^u, t), t) dt + \gamma h(X_0^u) \right], \quad \text{其中} \tag{2}u∈UminE[∫10ℓ(Xtu,u(Xtu,t),t)dt+γh(X0u)],其中(2)
dXtu=[f(Xtu,t)−g2(Xtu,t)∇logp(Xtu,t)+u(Xtu,t)]dt+g(Xtu,t)dWt,X1u∼N(0,Id).dX_t^u = \left[f(X_t^u,t) - g^2(X_t^u,t)\nabla \log p(X_t^u,t) + u(X_t^u,t)\right] dt + g(X_t^u,t)dW_t, X_1^u \sim \mathcal{N}(0,\mathrm{I}_d).dXtu=[f(Xtu,t)−g2(Xtu,t)∇logp(Xtu,t)+u(Xtu,t)]dt+g(Xtu,t)dWt,X1u∼N(0,Id).
重要的是,终端代价 h(⋅)h(\cdot)h(⋅)(由 γ\gammaγ 加权)捕捉了参考图像与生成图像在特征空间中的风格差异。由此产生的控制器 u(⋅,t)u(\cdot,t)u(⋅,t) 随时间控制漂移项以满足这一终端代价。通过Hamilton-Jacobi-Bellman (HJB)方程可以推导出这个最优控制问题的解
可以证明扩散模型中的逆动力学可以被构建为一个具有二次终端代价的随机最优控制问题。对于使用参考风格图像 X0f=z0X_0^f = \mathbf{z}_0X0f=z0 进行风格迁移,我们使用Gram矩阵来提取风格特征 Ψ(X0f)\Psi(X_0^f)Ψ(X0f)。由于分数函数 s(xt,t;θ)≈∇logp(Xt,t)s(x_t, t; \theta) \approx \nabla \log p(X_t,t)s(xt,t;θ)≈∇logp(Xt,t) 可从预训练的扩散模型中获得[23,24],我们的目标是添加一个修正项 u(⋅,t)u(\cdot,t)u(⋅,t) 来调制逆SDE并最小化总体代价(2)。我们使用Tweedie公式[16,17]通过其条件期望来近似 X0uX_0^uX0u。最后,我们将风格特征纳入我们控制器的终端代价中:h(X0u)=∥Ψ(X0f)−Ψ(E[X0u∣X1u])∥22h(X_0^u) = \|\Psi(X_0^f) - \Psi(\mathbb{E}[X_0^u|X_1^u])\|_2^2h(X0u)=∥Ψ(X0f)−Ψ(E[X0u∣X1u])∥22。
从理论上可以证明,最优控制器可以通过求解HJB方程并令 γ→∞\gamma \to \inftyγ→∞ 得到。实际上,这等于丢弃瞬时代价 ℓ(Xtu,u(Xtu,t),t)\ell(X_t^u, u(X_t^u,t),t)ℓ(Xtu,u(Xtu,t),t) 并仅用终端约束求解(2),即:
u∈U∥Ψ(X0f)−Ψ(E[X0u∣X1u])∥22.(3)\min_{u\in\mathcal{U}} \|\Psi(X_0^f) - \Psi(\mathbb{E}[X_0^u|X_1^u])\|_2^2. \tag{3}u∈Umin∥Ψ(X0f)−Ψ(E[X0u∣X1u])∥22.(3)
因此,我们求解(3)以找到最优控制 uuu,并在逆动力学(2)中使用这个控制器来将当前状态从 XtuX_t^uXtu 更新到 Xt−ΔtuX_{t-\Delta t}^uXt−Δtu(注意,在逆SDE(1)中时间是向后流动的)。我们对(3)的实现简单来说,就是在每一步,都选取当前步直接预测得到的x0x_0x0,求取其与原始风格图的Gram矩阵的差异,并利用梯度进行引导。
遵循 jDiffusion 中关于 Dreambooth 的示例(即 baseline)进行配置。随后根据本仓库提供的 JDiffusion\models 中的文件,替换掉原始版本中的对应两个文件,以便顺利使用引导。
JDiffusion\models
有一个风格的原始训练图片文件名带有pixel_art,需要重命名删除该字段,确保训练用文件文件名不包含风格信息
run.txt
.vscode
launch.json
训练文件夹中的:
train_dora_04_B
train_dora_08_B
train_dora_16_B
train_dora_25_B
这几个风格需要单独训练。
根据以上提示词设定 launch.json 的两个参数:
风格 04
attribute_prompt
""
without_painting
风格 16
"pixel"
风格 08
"paper"
风格 15
"person"
风格 25
修改 run_customedLora_modulation.py 文件:
run_customedLora_modulation.py
运行修改后的脚本以完成训练和生成。
QQ:2468888866
©Copyright 2023 CCF 开源发展委员会 Powered by Trustie& IntelliDE 京ICP备13000930号
Jittor 底层开发人员战队 Guided Dora
简介
本方法由三大部分构成:
DoRA 部分
请参考原论文
基于最优控制的引导:
扩散模型由两个随机过程组成:
(a) 噪声添加过程,由一个被称为前向SDE的随机微分方程(SDE)建模:
dXt=f(Xt,t)dt+g(Xt,t)dWt,X0∼p0,
(b) 去噪过程,由前向SDE的时间反转在轻微正则化条件下建模,也称为反向SDE:
dXt=[f(Xt,t)−g2(Xt,t)∇logp(Xt,t)]dt+g(Xt,t)dWt,X1∼N(0,Id).(1)
这里,W=(Wt)t≥0 是在滤波概率空间 (Ω,F,(Ft)t≥0,P) 上的标准布朗运动,p(⋅,t) 表示 p 在时间 t 的边缘密度,∇logpt(⋅) 为相应的得分函数。f(Xt,t) 和 g(Xt,t) 分别称为漂移项和波动率。f(Xt,t)=−Xt 和 g(Xt,t)=2 是一个流行的选择,对应于著名的前向Ornstein-Uhlenbeck (OU)过程。
对于T2I生成,反向SDE (1) 使用神经网络 s(xt,t;θ) [39, 40] 来近似 ∇xlogp(xt,t) 进行模拟。重要的是,为了在实践中加速采样过程 [20, 41, 42],反向SDE (1) 与概率流ODE共享相同的路径测度:
dXt=[f(Xt,t)−21g2(Xt,t)∇logp(Xt,t)]dt,X1∼N(0,Id).
使用最优控制进行风格迁移
将时间 t 按总扩散步数 T 归一化,使得 0≤t≤1。令 u:Rd×[0,1]→Rd 表示从可允许控制集 U⊆Rd 中选择的控制器,Xtu∈Rd 为状态变量,ℓ:Rd×Rd×[0,1]→R 为瞬时代价,h:Rd→R 为逆过程 (Xtu)t=10 的终端代价。我们表明,风格迁移可以被表述为一个控制问题,其中标准逆SDE (1)的漂移项通过RB-调制进行修改:
u∈UminE[∫10ℓ(Xtu,u(Xtu,t),t)dt+γh(X0u)],其中(2)
dXtu=[f(Xtu,t)−g2(Xtu,t)∇logp(Xtu,t)+u(Xtu,t)]dt+g(Xtu,t)dWt,X1u∼N(0,Id).
重要的是,终端代价 h(⋅)(由 γ 加权)捕捉了参考图像与生成图像在特征空间中的风格差异。由此产生的控制器 u(⋅,t) 随时间控制漂移项以满足这一终端代价。通过Hamilton-Jacobi-Bellman (HJB)方程可以推导出这个最优控制问题的解
随机最优控制器
可以证明扩散模型中的逆动力学可以被构建为一个具有二次终端代价的随机最优控制问题。对于使用参考风格图像 X0f=z0 进行风格迁移,我们使用Gram矩阵来提取风格特征 Ψ(X0f)。由于分数函数 s(xt,t;θ)≈∇logp(Xt,t) 可从预训练的扩散模型中获得[23,24],我们的目标是添加一个修正项 u(⋅,t) 来调制逆SDE并最小化总体代价(2)。我们使用Tweedie公式[16,17]通过其条件期望来近似 X0u。最后,我们将风格特征纳入我们控制器的终端代价中:h(X0u)=∥Ψ(X0f)−Ψ(E[X0u∣X1u])∥22。
从理论上可以证明,最优控制器可以通过求解HJB方程并令 γ→∞ 得到。实际上,这等于丢弃瞬时代价 ℓ(Xtu,u(Xtu,t),t) 并仅用终端约束求解(2),即:
u∈Umin∥Ψ(X0f)−Ψ(E[X0u∣X1u])∥22.(3)
因此,我们求解(3)以找到最优控制 u,并在逆动力学(2)中使用这个控制器来将当前状态从 Xtu 更新到 Xt−Δtu(注意,在逆SDE(1)中时间是向后流动的)。我们对(3)的实现简单来说,就是在每一步,都选取当前步直接预测得到的x0,求取其与原始风格图的Gram矩阵的差异,并利用梯度进行引导。
效果图
引导 苹果
不使用引导 苹果
环境配置与安装
遵循 jDiffusion 中关于 Dreambooth 的示例(即 baseline)进行配置。随后根据本仓库提供的
JDiffusion\models中的文件,替换掉原始版本中的对应两个文件,以便顺利使用引导。数据预处理
有一个风格的原始训练图片文件名带有pixel_art,需要重命名删除该字段,确保训练用文件文件名不包含风格信息
训练步骤
注意事项
run.txt文件的指令参数。文件配置
.vscode文件夹。run.txt文件新建为launch.json文件,并放到.vscode文件夹中。风格训练
训练文件夹中的:
train_dora_04_B对应风格 4train_dora_08_B对应风格 8train_dora_16_B对应风格 16train_dora_25_B对应风格 25这几个风格需要单独训练。
训练提示词设定
launch.json 参数设定
根据以上提示词设定
launch.json的两个参数:示例配置
风格 04
attribute_prompt:""without_painting: 不带风格 16
attribute_prompt:"pixel"without_painting: 带上风格 08
attribute_prompt:"paper"without_painting: 带上风格 15
attribute_prompt:"person"without_painting: 带上风格 25
attribute_prompt:"pixel"without_painting: 带上生成步骤
修改
run_customedLora_modulation.py文件:运行修改后的脚本以完成训练和生成。
联系方式
QQ:2468888866