❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!
🥦 AI 在线答疑 -> 智能检索历史文章和开源项目 -> 尽在微信公众号 -> 搜一搜:蚝油菜花 🥦
🎨 “艺术化图像编辑新突破!PhotoDoodle 让照片秒变艺术品,支持自然语言指令精准控制”
大家好,我是蚝油菜花。你是否也遇到过——
- 👉 想要为照片添加独特的艺术风格,却苦于没有专业的设计技能?
- 👉 在社交媒体上分享照片时,希望有更多个性化的装饰效果?
- 👉 商业设计中,需要快速生成符合品牌风格的图像,但时间紧迫?
今天要介绍的 PhotoDoodle,正是为解决这些问题而生!这个由字节跳动、新加坡国立大学等联合推出的艺术化图像编辑框架,能够通过少量样本学习艺术家的独特风格,实现照片涂鸦和装饰性元素生成。无论是数字艺术创作、商业设计,还是社交媒体分享,PhotoDoodle 都能让你的图像焕然一新!
🚀 快速阅读
PhotoDoodle 是一个基于少量样本学习的艺术化图像编辑框架。
- 核心功能:支持艺术风格学习、装饰性元素生成、背景一致性保持和指令驱动的编辑。
- 技术原理:通过两阶段训练策略,结合位置编码克隆机制和无噪声条件范式,确保生成结果与背景的无缝融合。
PhotoDoodle 是什么
PhotoDoodle 是由新加坡国立大学、上海交通大学、北京邮电大学、字节跳动和 Tiamat 团队联合推出的艺术化图像编辑框架。它基于少量样本学习艺术家的独特风格,实现照片涂鸦(photo doodling)。PhotoDoodle 采用两阶段训练策略:首先基于大规模数据预训练通用图像编辑模型 OmniEditor,然后用少量艺术家策划的前后图像对进行微调,捕捉特定的编辑风格。
PhotoDoodle 引入了位置编码重用机制和无噪声条件范式,确保生成结果与背景的无缝融合和一致性。此外,PhotoDoodle 还推出了包含 6 种风格和 300 多个样本的高质量数据集,为相关研究提供了基准。
PhotoDoodle 的主要功能
- 艺术风格学习与复现:从少量艺术家提供的样本中学习独特的编辑风格,应用于新的图像编辑任务中。
- 装饰性元素生成:支持在照片上添加装饰性元素(如手绘线条、色彩块、装饰图案等),确保这些元素与背景无缝融合。
- 保持背景一致性:在编辑过程中,严格保留原始照片的背景内容,避免背景失真或风格被破坏。
- 指令驱动的编辑:基于自然语言指令控制图像编辑内容,实现精准的局部修改和风格化处理。
- 高效风格定制:借助低秩适应(LoRA)技术,仅需 30-50 对样本即可快速适配不同艺术家的风格,降低训练成本。
PhotoDoodle 的技术原理
- OmniEditor 预训练:用大规模图像编辑数据集对预训练的 DiT 模型进行微调,将其转化为通用图像编辑器(OmniEditor)。引入位置编码克隆机制(Positional Encoding Cloning)和无噪声条件范式(Noise-free Conditioning),确保编辑过程中的空间一致性和背景保留。
- EditLoRA 微调:在预训练的 OmniEditor 基础上,用少量艺术家提供的前后图像对进行低秩适应(LoRA)微调。基于低秩分解矩阵适应性调整模型权重,捕捉特定艺术家的编辑风格,同时保留预训练模型的通用能力。
- 位置编码克隆机制:在源图像和目标图像之间共享相同的位置编码,确保生成结果的空间一致性,避免背景与装饰元素之间的错位。
- 无噪声条件范式:在生成过程中保留源图像的无噪声条件,防止背景内容在迭代去噪过程中被破坏,保持原始图像的细节和纹理。
- 条件流匹配损失函数:优化条件流匹配损失函数,指导模型学习从噪声到目标图像的生成路径,进一步提升编辑效果。
如何运行 PhotoDoodle
1. 环境配置
git clone git@github.com:showlab/PhotoDoodle.git
cd PhotoDoodle
conda create -n doodle python=3.11.10
conda activate doodle
2. 安装依赖
pip install torch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 --index-url https://download.pytorch.org/whl/cu124
pip install --upgrade -r requirements.txt
3. 推理
我们提供了与 Diffusers 集成的推理管道,并已将模型权重上传至 HuggingFace。你可以通过以下代码使用模型:
from src.pipeline_pe_clone import FluxPipeline
import torch
from PIL import Image
pretrained_model_name_or_path = "black-forest-labs/FLUX.1-dev"
pipeline = FluxPipeline.from_pretrained(
pretrained_model_name_or_path,
torch_dtype=torch.bfloat16,
).to('cuda')
pipeline.load_lora_weights("nicolaus-huang/PhotoDoodle", weight_name="pretrain.safetensors")
pipeline.fuse_lora()
pipeline.unload_lora_weights()
pipeline.load_lora_weights("nicolaus-huang/PhotoDoodle", weight_name="sksmagiceffects.safetensors")
height=768
width=512
validation_image = "assets/1.png"
validation_prompt = "add a halo and wings for the cat by sksmagiceffects"
condition_image = Image.open(validation_image).resize((height, width)).convert("RGB")
result = pipeline(prompt=validation_prompt,
condition_image=condition_image,
height=height,
width=width,
guidance_scale=3.5,
num_inference_steps=20,
max_sequence_length=512).images[0]
result.save("output.png")
或者直接运行推理脚本:
python inference.py
资源
- GitHub 仓库:https://github.com/showlab/PhotoDoodle
❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!
🥦 AI 在线答疑 -> 智能检索历史文章和开源项目 -> 尽在微信公众号 -> 搜一搜:蚝油菜花 🥦