基于Anydoor的超参数学习、基本配置参数学习记录

目录

run_train_anydoor.py

anydoor.yaml


run_train_anydoor.py

  • batch_size = 2
    • 每次训练迭代(一个 forwardbackward 过程)中处理的样本数量。
    • 小批量(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=2accumulate_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_channelsout_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_channelsout_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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值