上海地区网站备案,学ui设计的培训班费用是多少,旅游网站建设前的市场分析,网站怎么提升百度收入一、引言
ComfyUI 是一款功能强大的工具#xff0c;在图像生成等领域有着广泛应用。本文补充一点ComfyUI 的安装与配置过程遇到的问题#xff0c;并深入剖析图生图过程及相关参数#xff0c;帮助读者快速入门并深入理解其原理。
二、ComfyUI 的安装与配置中遇到的问题
在图像生成等领域有着广泛应用。本文补充一点ComfyUI 的安装与配置过程遇到的问题并深入剖析图生图过程及相关参数帮助读者快速入门并深入理解其原理。
二、ComfyUI 的安装与配置中遇到的问题
一安装过程中的常见问题及解决方法
Python 与 PyTorch 版本兼容性 ComfyUI 官网推荐使用 Python 3.12而 Python 3.12 仅支持 PyTorch 2.X 版本。因此在安装时务必确保所安装的 PyTorch 版本与 Python 版本相互兼容。PyTorch CUDA 与服务器 CUDA 版本兼容性 若服务器的 CUDA 版本较低如 CUDA 11.2鉴于 PyTorch 的底层算力逻辑通常具有兼容性可尝试安装 CUDA 11.8 的 PyTorch 版本。numpy 版本兼容性 通常建议安装 numpy2.0以避免潜在的兼容性问题。
二解决运行时的 CUDA 错误 若在运行python main.py时遭遇 CUDA 错误可通过以下命令解决
python main.py --listen 0.0.0.0 --disable-cuda-malloc三ComfyUI 工作流与模型管理
安装插件 在 ComfyUI 管理器中插件安装类似于下载 GitHub 项目。一般情况下插件会自动通过 pip install requirement.txt 来安装所需依赖。解决连接问题 网络检查Linux 系统若遇到无法连接到 GitHub 项目的问题首先检查是否能通过正常网络访问 GitHub。若网络连接问题影响插件下载可尝试使用国内镜像或通过 VPN 解决。手动下载插件若仍无法连接 GitHub可手动下载插件的压缩包解压后将其放置到 custom_nodes/ 目录下然后手动执行 pip install requirement.txt 来安装依赖。
三、图生图原理剖析
一图生图基础概念
在图生图过程中checkpoints 由以下几部分组成
model扩散模型作用于潜在空间CLIP文本编码器VAE编码器和解码器 在潜在空间中会进行扩散操作对应 K 采样器。其基本流程为encode 将输入的文本、图像编码转化为计算机可识别的向量数据借助 clip 找到与文本对应图像相似的向量得到文本和图像组合的潜在空间向量。在此基础上进行扩散在 latent 里得到扩散后的潜在空间向量最后通过 Decoder即 vae解码转化为人眼可见的图像。 二图生图Image - to - Image过程及相关参数解析 CLIP 文本编码的正向和负向条件 CLIP 的文本编码 CLIPContrastive Language - Image Pretraining模型旨在将文本和图像映射到同一潜在空间以便相互检索主要采用对比学习方法进行训练。 假设文本输入为 T { t 1 , t 2 , . . . , t n } T \{ t_1, t_2,..., t_n \} T{t1,t2,...,tn}其中 t i t_i ti 是文本中的第 i i i 个词汇。CLIP 使用 Transformer 模型对文本进行编码得到文本的嵌入向量 z T z_T zT即 z T f T ( T ) z_T f_T(T) zTfT(T) 其中 f T f_T fT 是文本编码器负责将文本映射到潜在的嵌入空间。 正向条件 (Positive Condition) 正向条件用于衡量生成图像与文本描述的相似性目标是使生成图像符合输入文本描述。在图生图任务中正向条件通常由文本来引导生成图像的内容。 正向条件公式为 L contrastive − log exp ( z T T z I / τ ) ∑ i 1 N exp ( z T T z i / τ ) L_{\text{contrastive}} -\log \frac{\exp(z_T^T z_I / \tau)}{\sum_{i1}^N \exp(z_T^T z_i / \tau)} Lcontrastive−log∑i1Nexp(zTTzi/τ)exp(zTTzI/τ) 其中 τ \tau τ 是温度参数用于控制对比学习的难度。生成过程的目标是通过生成的图像 I ′ I I′ 和输入文本描述的语义嵌入 z T z_T zT 来最小化对比损失。 负向条件 (Negative Condition) 在图像生成过程中CLIP 模型通过对比学习最大化正向条件和负向条件之间的相似度差异。负向条件通过增加对比损失中的 “负样本” 来实现这些负样本通常是与目标图像无关或对立的文本描述。 对比损失公式包含负向条件为 L contrastive − log exp ( z T T z I / τ ) ∑ i 1 N exp ( z T T z i / τ ) − log exp ( z T T z I / τ ) ∑ j 1 M exp ( z T T z j neg / τ ) L_{\text{contrastive}} -\log \frac{\exp(z_T^T z_I / \tau)}{\sum_{i1}^N \exp(z_T^T z_i / \tau)} - \log \frac{\exp(z_T^T z_I / \tau)}{\sum_{j1}^M \exp(z_T^T z_j^{\text{neg}} / \tau)} Lcontrastive−log∑i1Nexp(zTTzi/τ)exp(zTTzI/τ)−log∑j1Mexp(zTTzjneg/τ)exp(zTTzI/τ) 其中 z T z_T zT 是文本的嵌入向量 z I z_I zI 是图像的嵌入向量。 z j neg z_j^{\text{neg}} zjneg 是与文本 T T T 语义不相关的负样本图像的嵌入。 τ \tau τ 是温度参数用于调整正负样本之间的相似度控制对比学习的难度。 M M M是负样本的数量。
负向条件的作用在于通过 ∑ j 1 M exp ( z T T z j neg / τ ) \sum_{j1}^M \exp(z_T^T z_j^{\text{neg}} / \tau) ∑j1Mexp(zTTzjneg/τ) 这部分增加与目标图像不相关的文本条件以对比正样本和负样本的相似度。从而使模型在生成图像时避免生成与负向条件相关的图像表示确保生成图像与负向文本描述的图像不同。 例如若输入文本是 “a dog with a hat”一只戴着帽子的狗而负向文本是 “a dog without a hat”一只没有帽子的狗模型会倾向于生成戴帽子的狗避免生成没戴帽子的狗负向条件在此过程中对生成无帽子的狗进行惩罚。 2. K - 采样器与潜在空间的生成 K - 采样的过程 K - 采样器是生成过程的关键部分负责在潜在空间中从随机噪声开始逐步调整生成的潜在表示引导其趋近于目标图像。 在扩散模型中K - 采样器控制从潜在空间随机噪声逐步过渡到目标图像的过程具体包括 从随机噪声开始初始时潜在空间的表示 z z z 接近随机噪声。逐步去噪K - 采样器通过控制采样过程中的步数和噪声水平逐步去除噪声生成图像。 参数解释 在 K - 采样器的过程中以下几个关键参数需要关注 步数Steps步数决定了从噪声到最终图像过渡过程的迭代次数。步数越多去噪过程越精细生成图像的细节越丰富。但增加步数也会增加计算开销。采样器Sampler采样器是负责实际去噪过程的算法常见的有 Euler、Laplacian 等。不同的采样器采用不同的数学策略从噪声中提取图像信息选择不同的采样器会影响图像生成的速度和质量。温度参数Temperature, τ \tau τ温度参数通常用于控制正向条件与负向条件之间的平衡。增大温度会使模型输出更随机、多样化减小温度则使输出更稳定偏向高置信度的内容。随机种子Random Seed随机种子控制生成过程的随机性确保在相同输入下能够复现生成结果。改变随机种子会导致在相同文本条件下生成不同的图像。 K - 采样器公式 K - 采样器的公式通常涉及生成模型的去噪过程。假设从噪声表示 x T x_T xT 开始经过 t t t 步去噪生成 x 0 x_0 x0 p ( x t − 1 ∣ x t ) N ( x t − 1 ; μ θ ( x t , t ) , σ t 2 ) p(x_{t - 1} | x_t) N(x_{t - 1}; \mu_{\theta}(x_t, t), \sigma_t^2) p(xt−1∣xt)N(xt−1;μθ(xt,t),σt2) 其中 μ θ \mu_{\theta} μθ 是神经网络模型用于预测去噪过程的均值。 σ t \sigma_t σt 是时间步长 t t t 对应的标准差表示噪声的强度。
3. VAE 解码器从潜在空间生成图像
VAE 解码器公式
VAE 解码器负责将潜在空间中的表示 z z z 映射回图像空间将潜在空间中的抽象向量转化为可视化图像。 假设潜在空间中的向量为 z z zVAE 解码器的目标是将 z z z 转换为最终的图像 x x x公式为 x g θ ( z ) x g_{\theta}(z) xgθ(z) 其中 g θ g_{\theta} gθ 是解码器网络将潜在向量 z z z 映射回图像空间。
VAE 损失函数
VAE 的损失函数由两部分组成
重构误差用于衡量生成的图像与真实图像之间的差异。KL 散度用于衡量潜在变量的分布与标准正态分布之间的差异。
VAE 损失函数如下 L VAE E q [ log p θ ( x ∣ z ) ] − D KL ( q ϕ ( z ∣ x ) ∥ p ( z ) ) L_{\text{VAE}} \mathbb{E}_q[\log p_{\theta}(x|z)] - D_{\text{KL}}(q_{\phi}(z|x) \| p(z)) LVAEEq[logpθ(x∣z)]−DKL(qϕ(z∣x)∥p(z))
其中
第一项是重构误差反映生成图像与真实图像的相似度。第二项是 KL 散度衡量编码器输出的潜在分布与标准正态分布之间的差异。
三变分自编码器VAE模型的编码与解码过程 编码过程 神经网络处理将输入图像 x ( i ) x^{(i)} x(i) 送入作为概率编码器的神经网络多层感知器 MLP该网络学习将高维图像数据映射到低维空间以提取图像的关键特征。计算分布参数该神经网络输出近似后验 q ϕ ( z ∣ x ( i ) ) q_{\phi}(z | x^{(i)}) qϕ(z∣x(i)) 服从的多元高斯分布的均值 μ ( i ) \mu^{(i)} μ(i) 和标准差 σ ( i ) \sigma^{(i)} σ(i)它们是关于数据点 x ( i ) x^{(i)} x(i) 和变分参数 ϕ \phi ϕ 的非线性函数即 log q ϕ ( z ∣ x ( i ) ) log N ( z ; μ ( i ) , σ 2 ( i ) I ) \log q_{\phi}(z | x^{(i)}) \log \mathcal{N}(z ; \mu^{(i)}, \sigma^{2(i)} I) logqϕ(z∣x(i))logN(z;μ(i),σ2(i)I)重参数化采样为对采样过程进行梯度计算采用重参数化技巧。从后验分布中采样 z ( i , l ) z^{(i, l)} z(i,l)公式为 z ( i , l ) μ ( i ) σ ( i ) ⊙ ϵ ( l ) z^{(i, l)} \mu^{(i)} \sigma^{(i)} \odot \epsilon^{(l)} z(i,l)μ(i)σ(i)⊙ϵ(l) 其中 ϵ ( l ) ∼ N ( 0 , I ) \epsilon^{(l)} \sim \mathcal{N}(0, I) ϵ(l)∼N(0,I) ⊙ \odot ⊙ 表示元素 - wise 乘积。通过均值、标准差与随机噪声的运算将图像 x ( i ) x^{(i)} x(i) 编码为低维的隐变量 z ( i , l ) z^{(i, l)} z(i,l)。 解码过程 确定解码器输出类型根据数据类型若为实值数据 p θ ( x ∣ z ) p_{\theta}(x | z) pθ(x∣z) 假设为多元高斯分布。解码神经网络运算解码器同样使用 MLP。其均值 μ \mu μ 和标准差 σ \sigma σ 由 MLP 计算得出相关公式为 log p ( x ∣ z ) log N ( x ; μ , σ 2 I ) \log p(x | z)\log \mathcal{N}(x ; \mu, \sigma^{2} I) logp(x∣z)logN(x;μ,σ2I) 其中 μ W 4 h b 4 \mu W_{4} h b_{4} μW4hb4, log σ 2 W 5 h b 5 \log \sigma^{2} W_{5} h b_{5} logσ2W5hb5, h tanh ( W 3 z b 3 ) h \tanh(W_{3} z b_{3}) htanh(W3zb3), θ { W 3 , W 4 , W 5 , b 3 , b 4 , b 5 } \theta \{W_{3}, W_{4}, W_{5}, b_{3}, b_{4}, b_{5}\} θ{W3,W4,W5,b3,b4,b5} 是 MLP 的权重和偏置。将编码得到的隐变量 z ( i , l ) z^{(i, l)} z(i,l) 输入到解码器中经过一系列运算最终输出重构图像 x ^ ( i ) \hat{x}^{(i)} x^(i)。 图像展示 通过以下流程图直观展示 VAE 模型的编码和解码过程
在该流程图中
编码过程输入图像 x x x 进入编码神经网络MLP该网络输出均值 μ \mu μ 和标准差 σ \sigma σ。借助从标准正态分布采样得到的噪声 ε \varepsilon ε ε ∼ N ( 0 , I ) \varepsilon \sim \mathcal{N}(0, I) ε∼N(0,I)通过重参数化技巧计算得到隐变量 z z z实现将高维图像数据压缩为低维隐变量表示完成特征提取。解码过程得到的隐变量 z z z 被输入到解码神经网络MLP。解码过程是编码的逆过程尝试从低维隐变量中恢复出原始图像的特征输出尽可能与输入图像相似的重构图像 x ′ x x′。