近年来,基于扩散模型(Diffusion Models)的图像生成模型层出不穷,展现出令人惊艳的生成效果 。然而,现有相关研究模型代码框架存在过度碎片化的问题,缺乏统一的框架体系,导致出现「迁移难」、「门槛高」、「质量差」的代码实现难题 。
为此,中山大学人机物智能融合实验室(HCP Lab)构建了 HCP-Diffusion 框架,系统化地实现了模型微调、个性化训练、推理优化、图像编辑等基于 Diffusion 模型的相关算法,结构如图 1 所示 。
文章插图
图 1 HCP-Diffusion 框架结构图,通过统一框架统一现有 diffusion 相关方法,提供多种模块化的训练与推理优化方法 。
HCP-Diffusion 通过格式统一的配置文件调配各个组件和算法,大幅提高了框架的灵活性和可扩展性 。开发者像搭积木一样组合算法,而无需重复实现代码细节 。
比如,基于 HCP-Diffusion,我们可以通过简单地修改配置文件即可完成 LoRA,DreamArtist,Contro.NET 等多种常见算法的部署与组合 。这不仅降低了创新的门槛,也使得框架可以兼容各类定制化设计 。
HCP-Diffusion 代码工具:https://Github.com/7eu7d7/HCP-Diffusion
HCP-Diffusion 图形界面:https://github.com/7eu7d7/HCP-Diffusion-webui
HCP-Diffusion:功能模块介绍
框架特色
HCP-Diffusion 通过将目前主流的 diffusion 训练算法框架模块化,实现了框架的通用性,主要特色如下:
统一架构:搭建 Diffusion 系列模型统一代码框架
算子插件:支持数据、训练、推理、性能优化等算子算法,如 deepspeed, colossal-AI 和 offload 等加速优化
一键配置:Diffusion 系列模型可通过高灵活度地修改配置文件即可完成模型实现
一键训练:提供 Web UI,一键训练、推理
数据模块
HCP-Diffusion 支持定义多个并行数据集,每个数据集可采用不同的图像尺寸与标注格式,每次训练迭代会从每个数据集中各抽取一个 batch 进行训练,如图 2 所示 。此外,每个数据集可配置多种数据源,支持 txt、json、yaml 等标注格式或自定义标注格式,具有高度灵活的数据预处理与加载机制 。
文章插图
图 2 数据集结构示意图数据集处理部分提供带自动聚类的 aspect ratio bucket,支持处理图像尺寸各异的数据集 。用户无需对数据集尺寸做额外处理和对齐,框架会根据宽高比或分辨率自动选择最优的分组方式 。该技术大幅降低数据处理的门槛,优化用户体验,使开发者更专注于算法本身的创新 。
而对于图像数据的预处理,框架也兼容 torch vision, albumentations 等多种图像处理库 。用户可以根据需要在配置文件中直接配置预处理方式,或是在此基础上拓展自定义的图像处理方法 。
文章插图
HCP-Diffusion 在文本标注方面,设计了灵活且清晰的 prompt 模板规范,可支持复杂多样的训练方法与数据标注 。其对应用上述配置文件 source 目录下的 word_names,里面可自定义下图大括号中的特殊字符对应的嵌入词向量与类别描述,以与 DreamBooth、DreamArtist 等模型兼容 。
文章插图
并且对于文本标注,也提供了按句擦除 (TagDropout) 或按句打乱 (TagShuffle) 等多种文本增强方法,可以减少图像与文本数据间的过拟合问题,使生成的图像更多样化 。
模型框架模块
HCP-Diffusion 通过将目前主流的 diffusion 训练算法框架模块化,实现了框架的通用性 。具体而言,Image Encoder,Image Decoder 完成图像的编解码,Noise Generator 产生前向过程的噪声,Diffusion Model 实现扩散过程,Condition Encoder 对生成条件进行编码,Adapter 微调模型与下游任务对齐,positive 与 negative 双通道代表正负条件对图像的控制生成 。
文章插图
如图 5 所示,HCP-Diffusion 在配置文件中通过简易的组合,即可实现 LoRA、ControlNet、DreamArtist 等多种主流训练算法 。同时支持对上述算法进行组合,例如 LoRA 和 Textual Inversion 同时训练,为 LoRA 绑定专有触发词等 。此外,通过插件模块,可以轻松自定义任意插件,业已兼容目前所有主流方法接入 。通过上述的模块化,HCP-Diffusion 实现了对任意主流算法的框架搭建,降低了开发门槛,促进了模型的协同创新 。
HCP-Diffusion 将 LoRA、ControlNet 等各种 Adapter 类算法统一抽象为模型插件,通过定义一些通用的模型插件基类,可以将所有这类算法统一对待,降低用户使用成本和开发成本,将所有 Adapter 类算法统一 。
推荐阅读
- 开源鸿蒙再进一步,阿里平头哥RISC-V芯片适配成功
- 苹果开源FastViT:快速卷积Transformer的混合视觉架构
- Python 失宠!Hugging Face 用 Rust 新写了一个 ML 框架,现已低调开源
- GitHub 1.1万星,模拟软件开发流程,开源框架MetaGPT爆火
- 开源免费Api软件,你知道几个?
- 王小川大模型25天再升级!13B版本开源免费可商用,3090即可部署
- 字节跳动开源 Kelemetry:面向 Kubernetes 控制面的全局追踪系统
- MetaGPT AI 模型开源:可模拟软件公司开发过程,生成高质量代码
- 广东白云学院 怎么样
- 中山大学南方学院咋样