使用 InstructPix2Pix 对 Stable Diffusion 进行指令微调
Hugging Face 已经展示,Stable Diffusion 可以通过适配 InstructPix2Pix 训练策略进行指令微调,以执行特定的图像转换和低层处理任务,例如卡通化和去雨。该方法使模型能够遵循精确的自然语言指令,对输入图像进行修改,效果比通用的预训练模型更为忠实。
图像编辑的指令微调
指令微调是一种监督方法,用于教会模型根据自然语言提示完成任务。虽然最初是为语言模型(如 FLAN)开发的,但 Hugging Face 将这一理念应用于 Stable Diffusion,使用 InstructPix2Pix 框架。
虽然预训练的 InstructPix2Pix 模型能够遵循通用的编辑指令,但在特定的转换上常常表现不足。为了解决此问题,研究人员利用针对特定任务的配对数据集创建了指令驱动的数据集,使模型能够学习指令与视觉转换之间的特定映射。
数据集准备与方法论
为了训练模型,Hugging Face 通过将输入图像与目标输出以及相应的自然语言指令配对,创建了专门的数据集。
卡通化数据集
为了教会模型对图像进行“卡通化”,团队实现了一个三步流水线:
- 指令生成:使用 ChatGPT 为指令 “Cartoonize the image” 生成 50 条同义句。
- 标签生成:使用预训练的 Whitebox CartoonGAN 模型对 Imagenette 数据集中的 5,000 条样本进行处理,生成目标卡通化图像。
- 示例创建:将上述组件组合成示例,包含原始图像、指令以及卡通化输出。
低层图像处理数据集
遵循 FLAN 的多任务方法,团队构建了一个包含多个低层任务的单一数据集。这与传统图像处理不同,后者通常在各自的独立数据集上单独训练模型。
| 任务 | 提示 | 数据集 | 样本数量 |
|---|---|---|---|
| 去模糊 | "去除模糊的图像" | REDS | 1,200 |
| 去雨 | "去除图像中的雨水" | Rain13k | 686 |
| 去噪 | "去除噪声图像" | SIDD | 8 |
| 低光增强 | "增强低光图像" | LOL | 23 |
训练实验与结果
训练使用了两个主要的起始点:从已有的 InstructPix2Pix 检查点进行微调,以及使用 InstructPix2Pix 方法从 Stable Diffusion v1-5 检查点进行微调。研究人员发现,从 InstructPix2Pix 检查点开始能够更快适应并提升生成质量。
性能分析
- 卡通化:相较于预训练的 InstructPix2Pix 模型,指令微调模型更忠实地匹配了 CartoonGAN 模型的输出。
- 去雨:模型产生了令人信服的结果,与真实图像高度一致。
- 失败案例:模型在低光图像增强和去模糊方面表现不佳,研究人员将其归因于这些特定任务的训练示例数量不足。
- 泛化能力:模型未能为在训练中未充分见过的 ImageNette 类别生成预期输出,表明需要更大规模的数据集。
局限性与未来方向
尽管取得了进展,研究人员仍发现实现真实图像编辑应用的若干关键挑战:
- 分辨率:系统必须扩展以处理大尺寸、高分辨率的原始图像。
- 幻觉:扩散模型有时会“捏造”或重新解释指令,对图像空间进行不符合专业编辑要求的修改。
面向社区的开放问题
- 数据集规模的扩大(例如接近原始 InstructPix2Pix 使用的 30,000+ 样本)会如何影响质量?
- 增加任务混合或延长训练时间是否能提升对未见任务或组合指令(例如 “去模糊并去噪”)的泛化能力?
- 在训练过程中使用同义指令,而不仅仅在数据集创建时使用,是否能提升性能?
- 使用 ControlNet 训练设置是否能为这些特定的图像到图像任务提供更好的结果?