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

news2025/1/9 2:33:50

目录

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2273533.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Unity 2d描边基于SpriteRender,高性能的描边解决方案

目标 以Unity默认渲染管线为例,打造不需要图片内边距,描边平滑,高性能的描边解决方案 前言 在2d游戏中经常需要给2d对象添加描边,来突出强调2d对象 当你去网上查找2d描边shader,移植到项目里面,大概率会…

自动驾驶相关知识学习笔记

一、概要 因为想知道SIL、HIL是什么仿真工具,故而浏览了自动驾驶相关的知识。 资料来源《自动驾驶——人工智能理论与实践》胡波 林青 陈强 著;出版时间:2023年3月 二、图像的分类、分割与检测任务区别 如图所示,这些更高阶的…

“深入浅出”系列之FFmpeg:(1)音视频开发基础

我的音视频开发大部分内容是跟着雷霄骅大佬学习的,所以笔记也是跟雷老师的博客写的。 一、音视频相关的基础知识 首先播放一个视频文件的流程如下所示: FFmpeg的作用就是将H.264格式的数据转换成YUV格式的数据,然后SDL将YUV显示到电脑屏幕上…

日志服务 SQL 引擎全新升级

作者:戴志勇、顾汉杰(执少) SQL 作为 SLS 基础功能,每天承载了用户大量日志数据的分析请求,既有小数据量的快速查询(如告警、即席查询等);也有上万亿数据规模的报表级分析。SLS 作为…

20250107在WIN10下使用无线ADB连接Andorid7.1.2

connected to 192.168.3.217:5555 adb shell 20250107在WIN10下使用无线ADB连接Andorid7.1.2 2025/1/7 18:12 缘起:公司买了一台6000-7000¥的地面站【Andorid7.1.2】,需要通过ifconfig命令来获取其中的网络信息。 虽然系统是VERY非常的陈旧&a…

浙江省自然资源厅:基于“浙里办”的自然资源移动政务服务创新实践——“浙里自然资源”

摘 要:本文基于浙江省自然资源移动政务服务的创新实践,设计和实现“浙里自然资源”应用,依托浙江省省域空间治理数字化平台特有的架构基础,在提升功能性和可用性、加强运营力度、丰富服务内容等方面采取了管理举措和技术创新。通…

使用 Jupyter Notebook:安装与应用指南

文章目录 安装 Jupyter Notebook1. 准备环境2. 安装 Jupyter Notebook3. 启动 Jupyter Notebook4. 选择安装方式(可选) 二、Jupyter Notebook 的基本功能1. 单元格的类型与运行2. 可视化支持3. 内置魔法命令 三、Jupyter Notebook 的实际应用场景1. 数据…

NeurIPS 2024 | 像素级LLM实现图像视频理解、生成、分割和编辑大统一(昆仑万维等)

Accepted by NeurIPS 2024 文章链接:https://arxiv.org/pdf/2412.19806 项目链接:https://vitron-llm.github.io/ Github链接:https://github.com/SkyworkAI/Vitron 亮点直击 首次提出了一种通用的视觉多模态大语言模型(MLLM&…

嵌入式技术之Linux(Ubuntu) 一

一、Linux入门 1.硬件和操作系统以及用户的关系 一个传感器,获得数据后,需要向服务器发送数据。传感器传数据给上位机。 上位机需要一个程序来接收数据,那么这个上位机是什么机器? 我们的笔记本电脑就可以当成上位机。 两个手…

用户界面软件02

基于表单的用户界面 在“基于表单的用户界面”里面,用户开始时选中某个业务处理(模块),然后应用程序就使用一系列的表单来引导用户完成整个处理过程。大型机系统上的大部分用户界面都是这样子的。[Cok97]中有更为详细的讨论。 面…

YOLOv8/YOLOv11改进 添加CBAM、GAM、SimAM、EMA、CAA、ECA、CA等多种注意力机制

目录 前言 CBAM GAM SimAM EMA CAA ECA CA 添加方法 YAML文件添加 使用改进训练 前言 本篇文章将为大家介绍Ultralytics/YOLOv8/YOLOv11中常用注意力机制的添加,可以满足一些简单的涨点需求。本文仅写方法,原理不多讲解,需要可跳…

【express-generator】05-路由中间件和错误处理(第一阶段收尾)

一、前言 上篇文章我们介绍了express-generator的请求体解析,重点讲了常用的请求体数据格式(JSON/URL 编码的表单数据)以及一个FILE文件上传,同时搭配代码示范进行辅助理解。 二、本篇重点 我们继续第一阶段的知识,…

python无需验证码免登录12306抢票 --selenium(2)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 [TOC](python无需验证码免登录12306抢票 --selenium(2)) 前言 提示:这里可以添加本文要记录的大概内容: 就在刚刚我抢的票:2025年1月8日…

深度学习驱动的蛋白质设计技术与实践

通过设计特定的蛋白质结构,可以实现预期的生物功能,如催化特定化学反应、识别和结合特定分子、调控生物信号传导等,为生物医学、药物研发、生物技术等领域提供重要工具和解决方案。传统的蛋白质设计方法主要依赖于已知蛋白质结构的同源建模、…

【动态重建】时间高斯分层的长体积视频

标题:Representing Long Volumetric Video with Temporal Gaussian Hierarchy 来源:浙江大学 链接:https://zju3dv.github.io/longvolcap/ 文章目录 摘要一、前言二、主要方法2.1 时间高斯分层2.2 高效渲染2.3 层次结构更新2.4 紧凑的外观模型…

【STM32+CubeMX】 新建一个工程(STM32F407)

相关文章: 【HAL库】 STM32CubeMX 教程 1 --- 下载、安装 目录 第一部分、新建工程 第二部分、工程文件解释 第三部分、编译验证工程 友情约定:本系列的前五篇,为了方便新手玩家熟悉CubeMX、Keil的使用,会详细地截图每一步Cu…

el-date-picker 不响应change事件的解决办法

前言 接到需要把element plus组件的日期时间选择器的input输入框展示隐藏,遇到点击确认按钮change事件不被触发问题,解决办法如下: ①visible-change的回调参考 即根据visible-change的方法里的回调参数进行需要操作 const visibleChange …

api开发如何在代码中使用京东商品详情接口的参数?

选择编程语言和相关工具 以 Python 为例,你可以使用requests库来发送 HTTP 请求获取接口数据。如果是 Java,可以使用OkHttp等库。 Python 示例 假设你已经安装了requests库,以下是一个简单的代码示例来获取和使用京东商品详情接口参数&#…

【docker系列】可视化Docker 管理工具——Portainer

1. 介绍 Portainer是一个可视化的Docker操作界面,提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作)、事件日志显示、容器控制台操作、Swarm集群和服务等集中管理和操作、登录…

机器学习基础-大语言模型

目录 大语言模型的基本概念 “大”体现在什么地方? 预训练微调两阶段的基本流程和作用 第一阶段:利用语言模型进行无监督预训练 第二阶段:通过监督微调的模式解决下游任务 BERT模型中MLM和NSP机制基本概念 MLM NSP Prompt学习的基本概…