
1、引入
“照片涂鸦(Photo Doodling)”是一种将装饰性元素叠加到照片上的艺术创作形式,其核心挑战在于:
1)无缝融合:插入元素需与背景在透视、语义、视觉上保持一致;
2)背景保留:避免对原始背景的非预期修改(如颜色偏移、纹理失真);
3)风格高效捕捉:从少量(30-50对)“编辑前后”图像对中学习艺术家的独特风格。
现有方法(如全局风格迁移、基于掩码的修复)无法同时满足这些需求。因此,Showlab 在 ICCV 2025 发表的论文《PhotoDoodle: Learning Artistic Image Editing from Few-Shot Examples》中提出了 PhotoDoodle,专门解决艺术化照片编辑的痛点。
2、核心创新
PhotoDoodle 采用两阶段策略:先预训练通用编辑模型 OmniEditor,再通过 EditLoRA 微调捕捉特定艺术家的风格。结合位置编码克隆等创新技术,这种 “大规模预训练 + 少样本微调” 的方式实现了艺术化照片编辑的三大核心目标:
1)无缝融合:确保装饰元素与背景的空间对齐,避免错位;
2)背景保留:保留原图高频细节,防止背景失真;
3)高效风格捕捉:从少量样本中高效提取艺术家风格;
其开源的模型、数据集和代码为艺术创作工具的发展提供了重要参考,推动了少样本条件下个性化图像编辑的研究进展。

2.1 阶段1:通用编辑模型OmniEditor 预训练
利用大规模图像编辑数据(350万对)训练通用图像编辑模型,使其具备基础的文本指令遵循和图像编辑能力。核心技术包括:
1)位置编码克隆(Positional Encoding Cloning):为原始图像和编辑目标图像赋予相同的位置编码,建立像素级空间对应关系,避免编辑过程中的空间错位;
2)无噪声条件范式(Noise-free Conditioning):将原始图像的潜变量保持无噪声状态作为参考,既保留高频纹理细节,又通过多模态注意力机制控制编辑区域。
2.2 阶段2:EditLoRA微调
基于低秩适应(LoRA)技术,使用少量(30-50对)艺术家定制的“编辑前后”图像对微调模型,捕捉独特风格(如卡通怪物、手绘轮廓、3D效果等)。EditLoRA仅训练少量低秩矩阵,避免过拟合,同时保留OmniEditor的通用编辑能力。
3、数据集
为支持模型训练与评估,论文发布了首个专注于照片涂鸦的数据集:包含6种高质量艺术风格(卡通怪物、手绘轮廓、3D效果、流动色块、扁平插画、云朵素描)共300+“编辑前后”图像对,每对包含原始照片、涂鸦后图像及对应的文本指令。
4、快速上手
4.1 环境准备
作者在Github上传了自己的代码,并说明了环境准备的步骤,大家只需执行以下命令即可完成环境的准备。
cd photodoodle
# git clone
git@github.com:showlab/PhotoDoodle.git
git clone https://github.com/showlab/PhotoDoodle.git
cd PhotoDoodle
# 创建虚拟环境
conda create -n doodle
python=3.11.10
# 查看虚拟环境列表
conda env list
# 激活虚拟环境
conda activate doodle
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
4.2快速推理
作者提供了 diffusers pipeline 与他们的模型的集成,并将模型权重上传至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")
小编根据作者在Github上提交的代码,对推理效果进行了体验。下方为使用猫进行几种效果的验证,大家快看看效果吧!

论文链接:https://arxiv.org/abs/2502.14397
Github链接:https://github.com/showlab/PhotoDoodle
ICCV 2025论文:少样本艺术图像编辑方法
121

被折叠的 条评论
为什么被折叠?



