MagicTailor:组件可控的个性化图像生成框架,减少语义污染提高图像生成质量

200 阅读5分钟

❤️ 如果你也关注大模型与 AI 的发展现状,且对大模型应用开发非常感兴趣,我会快速跟你分享最新的感兴趣的 AI 应用和热点信息,也会不定期分享自己的想法和开源实例,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦


🚀 快速阅读

  1. MagicTailor 是一种新型框架,支持组件可控个性化,能够在文本到图像生成过程中精确控制特定组件。
  2. 基于动态掩码退化(DM-Deg)和双流平衡(DS-Bal)技术,MagicTailor 解决了语义污染和语义不平衡问题,提高了图像生成的质量和控制能力。
  3. MagicTailor 在个性化图像生成、广告营销、游戏娱乐等多个领域展现出广泛的应用潜力。

正文(附运行示例)

MagicTailor 是什么

MagicTailor.png

MagicTailor 是一种专为组件可控个性化设计的新框架,使文本到图像(T2I)模型在个性化过程中能够精确控制特定组件。该框架基于两个关键技术:动态掩码退化(DM-Deg)和双流平衡(DS-Bal),解决了语义污染和语义不平衡的挑战。DM-Deg 动态地干扰不需要的视觉语义,减少语义污染;而 DS-Bal 平衡概念和组件的学习,确保生成图像的准确性和一致性。MagicTailor 在技术上取得了突破,为个性化图像生成提供了新的解决方案,并在实际应用中展现出广泛的应用潜力。

MagicTailor 的主要功能

  • 组件可控个性化: MagicTailor 支持用户在个性化视觉概念时,重新配置特定的组件,提供对图像生成过程中各个部分的细粒度控制。
  • 动态掩码退化(DM-Deg): 基于动态地干扰不需要的视觉语义,减少语义污染,提高生成图像的质量。
  • 双流平衡(DS-Bal): 平衡概念和组件的视觉语义学习,解决语义不平衡问题,确保生成图像的准确性和一致性。
  • 解耦生成: MagicTailor 分别生成目标概念和组件,为不同的应用场景提供更灵活的组合方式。
  • 控制多个组件: 框架展示了处理一个概念和多个组件的潜力,为复杂图像生成提供更多可能性。
  • 与其他生成工具协作: MagicTailor 能与其他专注于不同任务的生成工具结合,提供额外的控制能力,如与 ControlNet、CSGO 和 InstantMesh 等工具协作。

MagicTailor 的技术原理

  • 动态掩码退化(DM-Deg): 基于在每个训练步骤中对参考图像的掩膜外区域施加动态退化的噪声,扰动不需要的视觉语义。用动态强度调节,防止模型逐渐记住噪声减少语义污染。
  • 双流平衡(DS-Bal): 包括在线去噪 U-Net 和动量去噪 U-Net。在线去噪 U-Net 对最难学习的样本进行最小-最大优化,动量去噪 U-Net 对其他样本应用选择性保留正则化,确保平衡的学习和更好的个性化性能。
  • 低秩适应(LoRA): MagicTailor 用 LoRA 对 T2I 扩散模型进行微调,学习目标概念和组件,保持其他部分不变,实现高效的个性化。
  • 掩膜扩散损失和交叉注意损失: 为促进所需视觉语义的学习,MagicTailor 用掩膜扩散损失和交叉注意损失,加强所需视觉语义与其相应伪词之间的关联。

如何运行 MagicTailor

安装环境

  1. 安装 conda 环境:
conda env create -f environment.yml
  1. 安装其他依赖项(这里以 CUDA 11.6 为例):
conda activate magictailor
pip install torch==1.13.1+cu116 torchvision==0.14.1+cu116 --extra-index-url https://download.pytorch.org/whl/cu116
  1. 克隆 Grounded-SAM 仓库:
cd {PATH-TO-THIS-CODE}
git clone https://github.com/IDEA-Research/Grounded-Segment-Anything.git
  1. 按照 Install without Docker 的说明设置 Grounded-SAM(请确保此处使用的 CUDA 版本与 PyTorch 一致)。

准备数据

直接使用 ./examples 文件夹中的示例图像,或者准备自己的图像对:

  1. 创建一个名为 {CONCEPT}_{ID}+{COMPONENT}_{ID} 的文件夹,其中 {CONCEPT}{COMPONENT} 是概念和组件的类别名称,{ID} 是自定义索引,用于区分不同的概念和组件。
  2. 将参考图像放入此文件夹,并重命名为 0_{CONCEPT}_{ID}.jpg1_{COMPONENT}_{ID}.jpg
  3. 最终的数据组织结构如下:
person_a+hair_a/
├── 0_person_a0.jpg
├── 0_person_a1.jpg
├── 0_person_a2.jpg
├── 1_hair_a0.jpg
├── 1_hair_a1.jpg
└── 1_hair_a2.jpg

训练

使用默认超参数训练 MagicTailor:

python train.py --instance_data_dir {PATH-TO-PREPARED-DATA}

例如:

python train.py --instance_data_dir examples/person_k+hair_c

请检查 Grounded-SAM 输出的掩码质量,确保模型运行正确。

也可以使用自定义超参数进行训练:

python train.py
    --instance_data_dir examples/person_k+hair_c \
    --phase1_train_steps 200 \
    --phase2_train_steps 300 \
    --phase1_learning_rate 1e-4 \
    --phase2_learning_rate 1e-5 \
    --lora_rank 32 \
    --alpha 0.5 \
    --gamma 32 \
    --lambda_preservation 0.2

可以在 arXiv 技术论文train.py 中了解参数的含义。调整这些超参数有助于获得更好的结果。

推理

训练完成后,模型将保存在 outputs/magictailor 文件夹中。生成图像的占位符标记 <v0><v1> 分别分配给概念和组件,用于文本到图像生成。

python inference.py \
  --model_path "outputs/magictailor" \
  --prompt "<v0> with <v1>" \
  --output_path "outputs/inference/result.jpg"

使用提示

  1. 如果遇到 GPU 内存限制,请考虑减少参考图像的数量,或如果适用,将动量去噪 U-Net(self.unet_m)移动到另一块 GPU 上(见 train.py 中的相关代码)。
  2. 尽管默认超参数在大多数情况下适用,但建议根据训练对调整超参数,以在文本对齐和身份保真之间取得更好的平衡。

资源

  1. 项目官网:correr-zhou.github.io/MagicTailor…
  2. GitHub 仓库:github.com/correr-zhou…
  3. arXiv 技术论文:arxiv.org/pdf/2410.13…

❤️ 如果你也关注大模型与 AI 的发展现状,且对大模型应用开发非常感兴趣,我会快速跟你分享最新的感兴趣的 AI 应用和热点信息,也会不定期分享自己的想法和开源实例,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦