以大规模预训练的图像扩散模型为基础,研究人员专注于各种下游任务和应用,包括文生图、可控图像生成和图像编辑等。然而,在大多数定制化场景中,由于受到训练数据和计算资源的限制,完全微调一个基础图像扩散模型往往是低效甚至不切实际的。
SCEdit是一个高效的生成式微调框架,由阿里巴巴通义实验室基础视觉智能团队所提出。该框架支持文生图下游任务的微调能力,实现快速迁移到特定的生成场景中,可相比LoRA节省30%-50%的训练显存开销;进一步地,还可以直接扩展到可控图像生成任务中,仅需ControlNet条件生成7.9%的参数量并节省30%的显存开销,支持边缘图、深度图、分割图、姿态、颜色图、图像补全等条件生成任务。
目前项目已开源,魔搭社区可体验,本文将提供社区训练教程,欢迎各位开发者小伙伴来玩!
SCEdit技术解析
Paper:SCEdit: Efficient and Controllable Image Diffusion Generation via Skip Connection Editing
arXiv:https://arxiv.org/abs/2312.11392
Project Page:https://scedit.github.io/
Official Repo:https://github.com/ali-vilab/SCEdit
视频链接
https://live.csdn.net/v/357091
图像扩散模型已经被广泛应用于各种任务中,比如文生图、可控图像生成和图像编辑等。最近的研究引入了微调方法,通过对原始模型进行细微的调整,并在基础图像扩散模型的特定应用上取得了不错的结果。尽管如此,许多这类流行的高效微调方法仍然受到因网络扩展导致训练资源消耗大的困扰。
该方法深入研究了扩散模型U-Net中跳跃连接的作用,并揭示了在编码器和解码器之间聚合远距离信息的分层特征对图像生成的内容和质量有着显著的影响。基于这一观察,提出了一个高效的生成微调框架,称为SCEdit (Skip Connection Editing),该框架整合并编辑跳跃连接,并使用了名为SC-Tuner的轻量级微调模块。此外,所提出的框架允许通过可控的SC-Tuner注入不同的条件,直接扩展到可控图像生成任务上,简化并统一了多条件输入的网络设计。 由于采用了轻量级微调器同时反向传播仅经过解码器,SCEdit大幅度降低了训练参数量、内存消耗和计算开销。在文生图和可控图像生成任务上进行的广泛实验证明了我们方法在效率和性能方面的优越性。
图1:SCEdit框架示意图
通过编辑跳跃连接上的中间特征来实现高效的微调,利用 (a) SC-Tuner进行文本到图像生成的微调,进一步可以在 (b) CSC-Tuner 和 (c) 级联稠密卷积的共同作用下实现可控图像合成。
SCEdit可以利用少量可训练参数和较低的内存使用量,实现了对特定数据集的高效微调(图2左上)并支持使用少量样本进行风格等样式的迁移学习(图2右上)。此外,它支持各种条件作为输入以实现高效的可控生成(图2中间),同时单个条件模型可以轻松组合,提供无限的生成可能性(图2底部)。
图2:SCEdit图像生成结果
SCEdit框架能够适应广泛的图像生成任务,并通过将U-Net中的编码器模块解耦,即仅需在解码器中进行反向传播,实现了高效灵活的训练。对于文本到图像生成任务,在COCO2017数据集上的FID得分和质量结果方面优于现有方法,同时在训练阶段减少了52%的内存消耗。同时在可控生成任务上,可以在各种条件输入下实现对生成结果的精准控制,仅需使用ControlNet所需参数的7.9%,并实现了30%的内存使用减少。
图3:文本到图像生成(圆形标记)和可控图像合成(五边形标记)任务的性能和效率比较。标记面积反映了参数量的相对大小。
如需进行快速集成,请参阅SWIFT:https://github.com/modelscope/swift
如需查看完整实现,请参阅SCEPTER:https://github.com/modelscope/scepter
魔搭社区实践教程
环境配置与安装
1. python 3.8及以上版本
2. pytorch 1.12及以上版本,推荐2.0及以上版本
3. 建议使用CUDA 11.4及以上
本文主要演示的模型推理代码可在魔搭社区免费实例PAI-DSW的配置下运行(显存24G) :
第一步:点击模型右侧Notebook快速开发按钮,选择GPU环境
第二步:新建Notebook
安装依赖库
pip install ms_swift -U
模型训练
SCEdit的文生图微调训练目前在SWIFT中已经支持。SWIFT是ModelScope提供的LLM&AIGC模型训练和推理框架。
在SWIFT中我们基于 风格迁移数据集(https://modelscope.cn/datasets/damo/style_custom_dataset/dataPeview)中提供的30张3D风格数据进行了训练,并使用相同的`Prompt: A boy in a camouflage jacket with a scarf`进行测试,具体的定性和定量的结果如下:
Method |
Bs |
Ep |
Target Module |
Param. (M) |
Mem. (MiB) |
3D style |
LoRA/r=64 |
1 |
50 |
q/k/v/out/mlp |
23.94 (2.20%) |
8440 |
|
SCEdit/rto=1 |
1 |
50 |
up_blocks |
19.68 (1.81%) |
7556 |
|
LoRA/r=64 |
10 |
100 |
q/k/v/out/mlp |
23.94 (2.20%) |
26300 |
|
SCEdit/rto=1 |
10 |
100 |
up_blocks |
19.68 (1.81%) |
18634 |
|
LoRA/r=64 |
30 |
200 |
q/k/v/out/mlp |
23.94 (2.20%) |
69554 |
|
SCEdit/rto=1 |
30 |
200 |
up_blocks |
19.68 (1.81%) |
43350 |
点击直达训练实践教程~