随着生成式AI的快速发展,AI绘画领域的技术也迅速更新换代。大模型(例如Stable Diffusion、DALL-E等)具备生成丰富多样风格的图像的潜力,但这些模型的泛化能力不一定能满足特定需求,因此,针对特定风格或内容进行微调便显得尤为重要。本文将详细介绍几种在AI绘画领域应用的大模型微调技术:Textual Inversion、DreamBooth、LoRA、ControlNet,并提供相应的案例与标注技巧。目标是帮助初学者深入理解这些技术的原理与应用,逐步成为能够运用这些方法的AI绘画专家。
Textual Inversion:微调模型的入门之选
Textual Inversion 是一种简单而有效的模型微调方法,主要用于生成特定风格或内容的图像。该方法的基本思想是将一个特定概念(如一种风格或一个对象)嵌入模型中,使模型能够识别并生成带有该特定属性的图像。这种方法依赖于将训练样本与“learnable property”(可学习属性)进行绑定,并通过微调模型的文本编码模块来实现。这种学习属性可以是“style”(风格)或“object”(对象),通过这种方式,模型可以学习新的视觉特征,并在生成图像时融入这些特征。
Textual Inversion的工作机制
Textual Inversion并不会对整个模型的参数进行更新,而是主要对Text Encoder(文本编码器)模块进行调整。其具体流程如下:
- 准备训练样本:首先需要选定一些代表特定风格或对象的训练图像,并为这些图像生成描述词(例如风格、颜色等)。这些描述词作为Textual Inversion的“输入”。
- 创建初始化词汇:在训练过程中,我们可以引入一些先验知识(例如“initializer_token”),这是通过初始化某些特殊的Token来帮助模型更快地学习特定的视觉特征。这个过程通常通过调整模型的学习率(例如
learning_rate=5e-4
)来控制微调的速度和效果。 - 微调Text Encoder:在训练中,Textual Inversion会将输入的初始化词汇与图像特征联系起来,使模型可以将该词汇生成符合特定特征的图像。此方法通常不涉及复杂的模型结构改动,因此训练速度较快,非常适合对新手入门微调技术的学习。
应用案例与优劣分析
优点:
- Textual Inversion的训练速度较快,适合初学者。
- 由于不涉及大规模参数更新,对计算资源的需求相对较少。
缺点:
- Textual Inversion在生成新风格或对象时具有一定的局限性,仅适用于轻量级的风格或对象调整。
- 由于仅调整文本编码器,生成的图像效果相比其他方法(如DreamBooth)可能较为单一。
图例解释:如下图所示(插入一个Textual Inversion的训练效果图示例),我们可以看到通过Textual Inversion生成的特定风格图像如何在细节上表现出独特的风格。
DreamBooth:更加高级的微调方法
DreamBooth 是Google Research提出的一种大模型微调方法,主要应用于图片生成领域。DreamBooth相比Textual Inversion更为高级,其区别在于DreamBooth并不仅仅调整Text Encoder模块,而是对整个模型的参数进行更新,从而获得更好的效果。它适合生成特定场景、角色、甚至是细节丰富的艺术风格图像。通过微调模型的整体参数,DreamBooth可以更全面地控制图像的背景、颜色、风格、方向等特征,使生成结果更加灵活多样。
DreamBooth的工作机制
DreamBooth在训练时会采用“稀疏训练”的策略,这意味着它会选择性地对某些层的参数进行微调,从而在保留原有模型能力的同时,增强对特定风格或对象的生成能力。其具体流程如下:
- 选取目标对象的图像数据:首先需要收集一些目标对象的图像,以便在训练中让模型学会该对象的特征。
- 模型的整体更新:DreamBooth会对模型的多层参数进行更新,从而在生成的图像中更好地融入目标对象的特征。同时,DreamBooth能够利用图像和文本描述的双向训练来提高模型的表达能力。
- 生成图像:训练后的模型能够生成包括目标对象或场景的图像,且可以通过提示词灵活地控制生成内容。
DreamBooth的应用与限制
优点:
- DreamBooth能够生成细节丰富且具有多样化风格的图像。
- 对模型的整体更新,使得生成结果在对象的颜色、方向等方面具备更高的灵活性。
缺点:
- 由于需要对多层参数进行更新,DreamBooth的训练成本较高。
- 训练时间相对较长,并且会出现“灾难性遗忘”的问题,即新训练的内容可能覆盖掉模型原有的一些特征。
图例:如下图所示(插入DreamBooth训练前后的对比图),DreamBooth在训练后,可以生成出带有特定对象和背景的风格化图像。
LoRA:轻量级但强大的微调工具
LoRA(Low-Rank Adaptation) 是一种高效的微调方法,专注于在保持原有模型能力的同时,通过少量参数注入实现风格变化。LoRA的优势在于只需在每个Transformer块中注入一个低秩矩阵,从而避免了整个模型的灾难性遗忘。相比DreamBooth,LoRA在参数上更为节省,适合资源有限但需要灵活微调的场景。
LoRA的原理与结构
LoRA的核心思想是利用低秩分解,将可训练层注入模型的各个Transformer块。其工作原理如下:
- 冻结原模型权重:在LoRA中,预训练模型的原始权重会被完全冻结,确保微调不会破坏模型原有的能力。
- 注入低秩矩阵:在每个Transformer块中加入可训练的低秩矩阵,这些矩阵具有显著更少的参数,从而达到轻量级的微调效果。LoRA允许通过一个scale参数来控制模型适应新训练图像的程度,使其既可以保持原有风格,也能生成新风格图像。
- 灵活的风格变换:由于LoRA仅调整UNet网络,且每次只需加载少量LoRA权重即可生成不同的风格,因此非常适合在c站等平台上分享不同的LoRA权重。
LoRA的应用与优势
优点:
- 参数开销小,适合低资源场景。
- 避免了灾难性遗忘问题,且权重容易移植。
缺点:
- 相比DreamBooth,对细节的表达能力稍逊。
ControlNet:通过条件控制生成过程
ControlNet 是一种能够在扩散模型中加入额外条件的技术。通过将深度检测图、Normal检测图或HoughLine检测图等条件作为输入,ControlNet可以在生成图像时实现更高的控制精度。例如,InstructPix2Pix可以用于图像的深度变换,而Shuffle则可以用于打乱图像以进行重构。
ControlNet的实现方式
ControlNet的主要思路是通过在扩散模型中增加额外的输入条件来控制生成的图像内容。具体流程如下:
- 添加条件图像:用户可以选择将CannyDetector或其他检测模型作为ControlNet的条件输入,指定目标特征。
- 加载特定的ControlNet模型:在使用ControlNet时,用户可以选择加载不同的ControlNet模型来适应不同的图像生成需求。
- 与LoRA结合使用:ControlNet可以和LoRA进行结合,通过加载不同的ControlNet条件,可以进一步细化图像的风格和特征。
ControlNet的应用场景与优劣
优点:
- 提供了极大的灵活性,适合生成复杂的场景。
- 适合图像重构、场景控制等高级任务。
缺点:
- 对计算资源要求较高,训练过程较复杂。
图例:如下图所示(插入ControlNet在不同条件下生成的图像),展示了在使用不同条件图像时,ControlNet生成的效果差异。
微调案例与标注技巧
Prompt Templates的使用
在标注过程中,为了提高生成图像的准确性,使用Prompt Templates是十分重要的。通过将简单的单词扩展为完整句子,能够有效减少歧义。例如,将“森林”扩展为“茂密的森林背景,充满浓郁的绿意和阳光斑驳的树影”,这样可以更好地控制生成的图像。
风格控制实例
以下是应用不同微调方法生成图像的对比:
- 塞尔达风格:可以通过ControlNet结合深度检测图实现,使得场景层次分明,颜色饱满。
- 中国山水画:DreamBooth更适合通过调整整体参数生成类似水墨风格的山水画,保持了浓厚的中国传统艺术风格。
- Post title:大模型图片生成模型微调方法对比
- Post author:Chen Kai
- Create time:2024-08-18 21:00:00
- Post link:https://www.chenk.top/图片生成模型微调/
- Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.