AIGC学习(SD、LoRA和ControlNet)

目录

Stable Diffusion(稳定扩散模型)

为什么叫扩散模型?

网络结构

VAE(Variational Auto-Encoder)

UNet模型

CLIP Text Encoder

LoRA(低秩适应矩阵)

什么是LoRA?

如何使用LoRA?

ControlNet

总结

参考链接


在AIGC领域,目前用的最多的就是Stable Diffusion、ControlNet和LoRA三者结合。SD通过加噪和去噪过程生成由ControlNet 提供的condition控制的图片,而LoRA则是以微调的方式,在少量数据训练下得到具有特定表现形式的SD模型。

论文的链接如下:

1.Stable Diffusion:https://arxiv.org/pdf/2112.10752

2.LoRA:https://arxiv.org/pdf/2106.09685

3.ControlNet:https://arxiv.org/pdf/2302.05543

Stable Diffusion(稳定扩散模型)

为什么叫扩散模型?

因为它包含的就是两个过程——前向扩散反向扩散

前向扩散就是在一张输入图片上不断加上噪声的过程。如下图,在一张猫的图片上不断加上噪声,在一定步数后它就变成了我们看不出是个什么东西的图片了。

反向扩散则是对噪声图像不断预测噪声并去噪的过程,最后输出我们想要得到的图片。下面是在一张随机噪声图片上逐渐去噪最后生成一个房子的过程。

有了前向扩散和反向扩散,那模型训练的目标也很容易理解,就是把预测的噪声和加入的噪声做回归,让模型能准确地预测出每次加入的真实噪声。

网络结构

SD主要由VAE(变分自编码器)、UNet和CLIP Text Encoder三者组成。如下图可见,整个网络分为三部分——Pixel Space、Latent Space和Conditioning。

Pixel Space中的VAE负责将图像压缩成潜在表示(Latent Representations)以及将潜在表示重建成图像。

Latent Space主要就是使用UNet进行特征级别的去噪过程,其中会进行Attention计算,学习Condition和图片特征的对应关系。

而Conditioning中则会通过预训练的CLIP Text Encoder将文本Prompt编码成Text Embeddings,用于对生成图像进行一定的控制引导。

VAE(Variational Auto-Encoder)

就像上面所介绍的,VAE的主要工作就是负责的图像压缩和重建,所以它其实是一个Encoder-Decoder的结构。

当我们输入一个

<think>好的,用户之前让我介绍了AIGC的总体情况,现在他们想深入了解AI绘画参数调优大模型训练技巧。我需要先确定他们的背景,可能是开发者还是普通用户?不过问题涉及参数调优训练技巧,更可能是技术人员或有一定基础的学习者。 首先,AI绘画参数调优部分,用户可能在使用如Stable Diffusion之类的工具时遇到了生成效果不理想的情况,想要优化参数。需要涵盖关键参数如采样步数、CFG值、种子数,以及ControlNet的应用。要具体说明每个参数的作用调整建议,比如步数过高可能导致时间增加但效果不明显,需要给出平衡点。 接下来是大模型训练技巧,用户可能想自己微调或训练模型,但资源有限。需要包括数据准备、参数设置、训练策略优化技巧。比如提到数据清洗的重要性,以及使用LoRA等高效微调方法,这样可以减少计算资源的需求。还要提到分布式训练混合精度训练,帮助用户节省时间成本。 同时,用户可能关心实际应用中的问题,比如过拟合、资源不足等,需要给出解决方案。例如数据增强对抗过拟合,使用现有基座模型减少训练时间。此外,伦理问题也不能忽视,要提醒用户注意版权合规性。 最后,用户可能需要学习资源推荐,比如Hugging FaceGitHub上的项目,以及在线课程,帮助他们进一步学习。要确保内容结构清晰,分点列出,方便用户理解。还要检查技术术语是否准确,避免错误,比如扩散模型中的噪声调度器部分,需要正确解释参数的影响。 整体要保持口语化,但内容专业,确保用户能够按照指导进行操作。可能需要加入示例代码或具体工具推荐,比如Stable Diffusion WebUIHugging Face的库,增强实用性。还要注意用户可能在实际操作中的常见错误,比如过高的学习率导致训练不稳定,给出解决方案。</think>以下是对**AI绘画参数调优****大模型训练技巧**的详细技术解析: --- ### **一、AI绘画参数调优**(以Stable Diffusion为例) #### **1. 核心参数解析** | 参数 | 作用范围 | 典型值 | 调优建议 | |------|----------|--------|----------| | **采样步数** (Steps) | 图像清晰度与细节 | 20-50 | 超过50步后边际效益递减,推荐20-30步平衡质量与速度 | | **CFG值** | 提示词控制强度 | 7-12 | 过高导致过度锐化,过低失去控制(风景画建议7-9,人像建议9-11) | | **种子数** (Seed) | 随机性控制 | -1(随机) | 固定种子可复现结果,但会限制多样性 | | **采样器** | 生成风格差异 | Euler a / DPM++ 2M | Euler a适合快速生成,DPM++ 2M Karras适合高细节 | #### **2. ControlNet高级控制** ```python # 示例:用OpenPose控制人物姿态 from diffusers import StableDiffusionControlNetPipeline controlnet = ControlNetModel.from_pretrained("lllyasviel/sd-controlnet-openpose") pipe = StableDiffusionControlNetPipeline.from_pretrained("runwayml/stable-diffusion-v1-5", controlnet=controlnet) ``` - **骨骼绑定**:通过OpenPose骨架图精确控制人物动作 - **边缘检测**:Canny边缘保留构图,Scribble涂鸦引导场景 #### **3. 负面提示词工程** - **通用模板**:`"ugly, blurry, distorted anatomy, extra limbs, watermark"` - **风格过滤**:生成动漫风格时添加`"realistic, photo"`到负面词 #### **4. 分辨率优化技巧** - **HiRes Fix**:先以512x512生成,再2倍超分(需8GB以上显存) - **Tile Diffusion**:分块生成大幅面图像避免显存溢出 --- ### **二、大模型训练技巧** #### **1. 数据准备黄金法则** - **清洗标准**:剔除重复率>30%的文本,图像需统一长宽比(推荐1:1或4:3) - **标注策略**:对每张训练图添加精准标签,如`"masterpiece, best quality, 4k, intricate details"` #### **2. 关键训练参数设置** ```yaml # 典型训练配置(基于Hugging Face) learning_rate: 1e-5 batch_size: 4 gradient_accumulation_steps: 8 max_train_steps: 10000 mixed_precision: "fp16" ``` - **学习率**:大模型建议1e-6到1e-5,小模型可升至1e-4 - **批量大小**:根据显存调整,24GB显卡可设batch_size=2 #### **3. 高效微调技术** - **LoRA**:仅训练秩分解矩阵,节省75%显存(适合消费级显卡) ```python from peft import LoraConfig lora_config = LoraConfig(r=8, target_modules=["q_proj", "v_proj"]) ``` - **Adapter**:插入轻量适配层,冻结原模型参数 #### **4. 避免过拟合的实战技巧** - **动态掩码**:对30%的输入token随机替换为[MASK] - **梯度裁剪**:设置`max_grad_norm=1.0`防止梯度爆炸 - **早停策略**:当验证集损失连续3个epoch不下降时终止 --- ### **三、性能优化黑科技** #### **1. 硬件加速方案** - **Flash Attention**:提速30%,减少显存占用(需RTX 30系以上显卡) - **DeepSpeed ZeRO**:多卡训练时优化显存分配 #### **2. 模型蒸馏技巧** - **三步蒸馏法**: 1. 用教师模型生成软标签 2. 在原始数据上训练学生模型 3. 在软标签数据上微调 #### **3. 混合精度训练配置** ```bash # 启动命令示例 accelerate launch --mixed_precision=fp16 train.py ``` --- ### **四、避坑指南** | 问题现象 | 原因分析 | 解决方案 | |---------|----------|----------| | 生成图像肢体畸形 | 训练数据包含错误解剖结构 | 使用DW Pose标注工具修正姿态数据 | | 文本描述不生效 | CFG值过低/提示词冲突 | 检查提示词语法,增加`(word:1.3)`权重 | | 训练loss震荡 | 学习率过高/批量过小 | 采用余弦退火调度器,增大梯度累积步数 | --- ### **五、工具资源推荐** - **开发框架**: - Diffusers(Hugging Face官方库) - ComfyUI(节点式可视化工作流) - **数据集**: - LAION-5B(50亿图文对) - WikiArt(8万张艺术画作) - **在线实验**: - Google Colab Pro(A100 GPU) - Lambda Labs(按小时计费) --- 需要具体场景(如LoRA角色定制训练、ControlNet多条件控制)的代码示例或参数模板,可进一步说明! 🖌️
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值