项目介绍:Paint-by-Example —— 基于示例的图像编辑
Paint-by-Example是一种新型图像编辑方法,它结合了先进的扩散模型,通过示例指导来实现精准的图像编辑。与传统的语言指导图像编辑不同,这个项目的核心在于以示例图像为基础,提供对编辑过程更为精细的控制。
项目背景
在图像编辑领域,语言指导编辑技术已经取得了显著的成功。然而,Paint-by-Example首次探讨了示例引导的图像编辑,旨在通过自监督训练的方式将源图像与示例图像进行分离和重组。这种方法克服了直接复制粘贴示例图像导致的明显融合伪影问题,通过信息瓶颈和强增强技术,避免了简单的图像拼接。同时,还设计了任意形状的掩码用于示例图像,并利用无分类器指导增加与示例图像的相似性。这种方法不需要迭代优化过程,仅利用一次性扩散模型的正向传播即可实现高保真度的可控编辑。
最新进展
- 细节保留改进:2023年11月28日,项目通过Asymmetric VQGAN技术改进了非掩码区域的细节保留能力。更多细节请参考相关文献。
- 代码发布:项目组于2022年11月29日公开了代码,之后相继发布了测试基准和定量结果的代码。
- 社区支持:非官方的三方应用支持也已经上线,包括ModelScope中的模块。
需求与准备
使用此项目需准备合适的conda环境,可以通过以下命令创建和激活环境:
conda env create -f environment.yaml
conda activate Paint-by-Example
事先提供的预训练模型可从Google Drive或Hugging Face下载,建议将其存储到checkpoints
目录下。
模型测试
用户可以通过scripts/inference.py
脚本进行模型采样。例如:
python scripts/inference.py \
--plms --outdir results \
--config configs/v1.yaml \
--ckpt checkpoints/model.ckpt \
--image_path examples/image/example_1.png \
--mask_path examples/mask/example_1.png \
--reference_path examples/reference/example_1.jpg \
--seed 321 \
--scale 5
或者简单运行:
sh test.sh
训练自己的模型
若要在Open-Images数据集上训练新模型,可使用main.py
脚本。例如:
python -u main.py \
--logdir models/Paint-by-Example \
--pretrained_model pretrained_models/sd-v1-4-modified-9channel.ckpt \
--base configs/v1.yaml \
--scale_lr False
或者简单运行:
sh train.sh
测试基准与定量结果
项目组为定量分析构建了一个名为COCOEE的测试基准,用户可以从Google Drive下载并应用测试基准进行测试,生成的结果可用于计算FID、QS和CLIP评分,以定量衡量编辑效果。
致谢与许可证
项目代码借鉴了稳定扩散与OpenAI的ADM代码库,同时感谢其他开源项目的贡献。该项目的代码及预训练模型根据CreativeML OpenRAIL M 许可证进行发布,测试基准COCOEE属于COCO Consortium,发布于Creative Commons Attribution 4.0 License下。
如果对技术细节有疑问,欢迎联系项目组寻求帮助。希望此项目能够为图像编辑领域带来新的启发与突破。