目录
run_train_anydoor.py
batch_size = 2- 每次训练迭代(一个
forward和backward过程)中处理的样本数量。 - 小批量(
batch_size=2)适合显存有限的 GPU,但可能导致训练不稳定。 - 建议根据显存大小和模型复杂度调整此参数。
- 每次训练迭代(一个
logger_freq = 1000- 控制日志记录的频率。
- 每 1000 次训练步记录一次日志信息(例如损失值、性能指标等)。
- 作用:便于监控模型训练进度。
learning_rate = 1e-6- 学习率,控制每次梯度更新时模型参数的步长。
1e-6是较低的学习率,适合微调模型或训练复杂网络。- 如果训练过程收敛慢,可以尝试稍微调高此值(如
1e-5),或者使用动态学习率调整策略。
sd_locked = False- 表示是否锁定(冻结)扩散模型的权重。
False表示允许更新扩散模型的权重。- 如果预训练模型权重较好且不需要大幅度调整,可设置为
True,以减少训练时间和显存需求。
only_mid_control = False- 是否只对中间层使用控制信号。
False表示在网络的所有阶段(不仅仅是中间层)都应用ControlNet的控制信号。- 适用于需要较精细控制的任务。
n_gpus = 1- 使用的 GPU 数量。
1表示单卡训练。- 如果有多张 GPU,可以设置为相应的数量,并确保分布式训练(如 DDP)配置正确。
accumulate_grad_batches = 1- 梯度累积的批次数量。
1表示不累积梯度,每次计算后立即进行参数更新。- 如果显存不足,可以通过设置
accumulate_grad_batches > 1累积多次梯度计算,模拟更大的batch_size,例如:- 例子: 如果显存不足以支持
batch_size=8,可以设置batch_size=2和accumulate_grad_batches=4,相当于每 4 次迭代后进行一次参数更新。
- 例子: 如果显存不足以支持
anydoor.yaml
- model 顶层配置,用于定义模型结构和训练方式
target: 指向实际使用的模型类(cldm.cldm.ControlLDM)。该类可能是对扩散模型的控制(Control)实现,通常用于条件生成任务params: 包含模型的所有超参数配置:linear_start和 **linear_end:**定义扩散过程中的噪声线性调度范围,调整扩散过程中的噪声注入强度范围,影响生成图像的质量和稳定性- **
num_timesteps_cond:**条件生成扩散过程中的时间步数,默认值1: 表示只在一个时间步中添加条件 - **
log_every_t:**控制日志打印频率(每隔多少个时间步打印一次),用于监控训练过程中的状态。 - **
timesteps:**扩散过程的总时间步数,通常扩散模型在训练时采用较大的时间步数(如 1000),用于逐步去噪。 - **
first_stage_key,cond_stage_key,control_key**定义模型的不同数据输入键名:first_stage_key: 输入的主要图像数据(jpg)。cond_stage_key: 条件数据(ref,如参考图像)。control_key: 控制信号(hint,如边缘检测图像或引导特征)。
- **
image_size:**指定模型生成图像的分辨率(64x64 像素)。 - **
channels:**输入图像的通道数(4),例如 RGBA。 - **
cond_stage_trainable:**是否训练条件网络(False表示冻结条件网络,通常预训练过的网络不需要更新)。 - **
conditioning_key:**指定条件生成的方式,crossattn表示使用交叉注意力机制来处理条件。 - **
scale_factor:**图像缩放因子,用于特定模型的特征对齐或匹配。 - **
use_ema:**是否使用指数移动平均(EMA)方法,EMA 通常用于提高模型生成的稳定性(此处为False,未启用)。 - **
only_mid_control:**是否只对中间层使用控制网络(False表示全层控制)
control_stage_config:这些参数用于控制模型的ControlNet部分。ControlNet是扩散模型的一个附加模块,用于增加生成控制能力use_checkpoint: 是否使用检查点(分段反向传播以节省显存,True表示启用)。image_size: 控制网络输入图像尺寸(标注为 32,但可能未实际使用)。in_channels: 输入通道数(4),对应主图像。hint_channels: 条件提示图的通道数(4,如 RGBA 或其他)。model_channels: 模型的特征通道数(320)。attention_resolutions: 使用注意力机制的分辨率尺度列表:[4, 2, 1]表示分辨率从高到低逐步缩小,用于多尺度特征提取。
num_res_blocks: 每个分辨率的残差块数量(2)。channel_mult: 通道倍率,定义不同尺度下的通道数:[1, 2, 4, 4]:表示通道数分别为320,640,1280,1280。
num_head_channels: 注意力头的通道数(64)。use_spatial_transformer: 是否使用空间变换器模块(True,启用)。use_linear_in_transformer: 是否在变换器中使用线性层(True)。transformer_depth: 变换器的深度(1层)。context_dim: 条件输入的上下文维度(1024)。legacy: 是否启用旧版功能(False,使用新实现)。
unet_config定义了 UNet 模块,这是扩散模型的核心结构,基本参数与control_stage_config类似,主要用于控制生成过程:in_channels和out_channels: 输入/输出通道数(4)。model_channels: 核心特征通道数(320)。attention_resolutions,num_res_blocks,channel_mult: 同 ControlNet,定义多尺度特征提取和残差结构。use_spatial_transformer,use_linear_in_transformer: 同上,启用空间变换器。transformer_depth: 变换器的深度(1层)。context_dim: 条件上下文维度(1024)。
first_stage_config:该部分定义了第一个阶段的自动编码器(Autoencoder)target: 模型指向ldm.models.autoencoder.AutoencoderKL,这是一个带 KL 散度的自动编码器,用于图像的潜空间编码和解码。embed_dim: 潜空间嵌入维度(4)。monitor: 用于监控的指标(如重构损失val/rec_loss)。ddconfig: 自动编码器的核心配置:double_z: 使用双潜空间分布(True)。z_channels: 潜空间的通道数(4)。resolution: 输入图像的分辨率(256x256)。in_channels和out_ch: 输入/输出通道数(3)。ch: 起始特征通道数(128)。ch_mult: 通道倍率([1, 2, 4, 4])。num_res_blocks: 每层的残差块数量(2)。attn_resolutions: 使用注意力机制的分辨率(空列表表示未使用)。dropout: Dropout 比例(0.0)。
lossconfig: 损失函数配置,使用torch.nn.Identity(直接传递,未额外定义损失)
cond_stage_config定义了条件编码器(Encoder)的结构target: 指向条件网络类ldm.modules.encoders.modules.FrozenDinoV2Encoder。weight: 使用预训练的 DINO 模型权重pretrain_model/dinov2_vitg14_pretrain.pth。

1万+

被折叠的 条评论
为什么被折叠?



