Instruction-tuned Stable Diffusion:通过InstructPix2Pix实现更精准的图像处理
近年来,大型语言模型(LLM)在遵循指令完成任务方面取得了令人瞩目的进展。受此启发,研究人员开始探索如何将这种指令跟随能力应用到图像生成和编辑领域。Hugging Face团队基于FLAN和InstructPix2Pix的思路,提出了一种新的方法来对Stable Diffusion进行指令微调,使其能够更好地理解和执行特定的图像处理指令。
项目背景与动机
指令微调是一种有监督的方法,旨在教会语言模型遵循指令来解决任务。这一概念最初由Google在FLAN(Fine-tuned Language Models Are Zero-Shot Learners)论文中提出。近期的Alpaca和FLAN V2等工作进一步展示了指令微调对各种任务的巨大效益。
另一方面,InstructPix2Pix引入了让Stable Diffusion遵循用户指令对输入图像进行编辑的想法。Hugging Face团队的这项工作部分受到FLAN系列工作的启发,部分受到InstructPix2Pix的影响。他们希望探索是否可以用特定指令和输入图像来提示Stable Diffusion,使其按需要处理图像。
他们的主要思路是首先创建一个指令提示数据集,然后进行InstructPix2Pix风格的训练。最终目标是让Stable Diffusion更好地遵循涉及图像转换相关操作的特定指令。
数据准备
数据准备过程受到FLAN的启发。团队针对卡通化和低级图像处理两个任务准备了数据集。
卡通化数据集
卡通化数据集的创建流程如下:
-
使用ChatGPT生成50个同义句来表达"将图像卡通化"这一指令。
-
从Imagenette数据集中随机选取5000个样本,使用预训练的Whitebox CartoonGAN模型生成这些图像的卡通版本作为标签。
-
将原始图像、指令和卡通化后的图像组合成训练样本。
最终的卡通化数据集可在Hugging Face数据集库中找到。
低级图像处理数据集
低级图像处理数据集涵盖了去雨、去噪、低光照增强和去模糊四个常见任务。团队从多个公开数据集中采样,并为每个任务添加了相应的指令提示。最终数据集可在这里获取。
这种混合多任务的设置与FLAN的思路相似,有助于训练出一个能够同时处理多种低级图像处理任务的单一模型。这与传统的低级图像处理方法有所不同,后者通常需要为每个任务单独训练模型。
训练实验与结果
团队基于InstructPix2Pix训练脚本进行了实验。他们探索了两种训练策略:
- 从现有的InstructPix2Pix检查点微调
- 使用InstructPix2Pix训练方法从Stable Diffusion检查点开始训练
实验发现,第一种策略能够更快地适应新数据集。
卡通化结果
团队将指令微调后的卡通化模型与预训练的InstructPix2Pix模型和CartoonGAN模型进行了比较。结果显示,指令微调模型能够更忠实地匹配CartoonGAN的输出效果。
低级图像处理结果
在去雨任务上,指令微调模型相比预训练的InstructPix2Pix模型展现出了更令人信服的结果:
然而,在低光照增强和去模糊等任务上,模型的表现仍有待改进。这可能是由于这些任务的训练样本不足所致。
潜在应用与局限性
在图像编辑领域,专业人士的意图(要执行的任务)与编辑工具中需要执行的具体操作之间存在脱节。能够将自然语言目标轻松转化为低级图像编辑操作将带来无缝的用户体验。InstructPix2Pix等机制的引入,让我们离这一理想更近了一步。
然而,仍然存在一些挑战:
- 这些系统需要能处理大尺寸、高分辨率的原始图像。
- 扩散模型往往会在图像空间中发明或重新解释指令来执行修改。对于现实的图像编辑应用来说,这是不可接受的。
开放问题
-
扩大数据集规模会如何影响生成样本的质量?
-
对于更广泛的任务混合,增加训练时间会产生什么影响?
-
这种方法如何推广到更广泛的常见"指令微调"任务?
-
在训练过程中动态使用同一指令的不同变体是否有助于提高性能?
-
使用ControlNet训练设置会带来什么结果?
结论
本文介绍了Hugging Face团队在Stable Diffusion指令微调方面的探索。虽然预训练的InstructPix2Pix模型擅长遵循一般的图像编辑指令,但在面对更具体的指令时可能会失效。为了缓解这一问题,团队讨论了如何准备数据集以进一步微调InstructPix2Pix,并展示了初步结果。
尽管结果仍有提升空间,但这项工作为研究人员提供了一个基础,希望能激励他们进一步探索上述开放问题。通过不断改进,我们有望实现更智能、更精准的AI辅助图像处理系统,为创作者和设计师提供更强大的工具。