GitHub - TencentARC/PhotoMaker: PhotoMaker

内容


🌠 主要特点:

  1. 在几秒钟内快速定制,无需额外的LoRA培训。 2. 确保令人印象深刻的ID保真度,提供多样性,承诺文本可控性和高质量生成。 3. 可作为与社区中的LoRA模块一起与其他基础模型协作的适配器

TencentARC%2FPhotoMaker | Trendshift

❗❗ 注意:如果有任何基于 PhotoMaker 的资源和应用程序,请在 讨论 中留下它们,我们将在 README 文件的 相关资源 部分列出它们。现在我们知道 ReplicateWindowsComfyUIWebUI 的实现。谢谢大家!

photomaker_demo_fast

🚩 新功能/更新

新功能更新

  • ✅ 2024年1月20日。一个重要提示:对于不支持bfloat16的GPU,请将此行更改为 torch_dtype = torch.float16,速度将大大提高(V100上,每张图从1分钟(之前)提升至14秒/张(之后))。PhotoMaker的最低GPU内存要求为11G(请参考此链接以节省GPU内存)。
  • ✅ 2024年1月15日。我们发布了PhotoMaker。

🔥 示例

逼真生成

风格化生成

风格化生成

注意:仅更改基础模型并添加 LoRA 模块以获得更好的样式化

🔧 依赖和安装

依赖和安装

conda create --name photomaker python=3.10 conda activate photomaker pip install -U pip

安装要求

pip install -r requirements.txt

安装 photomaker

pip install git+https://github.com/TencentARC/PhotoMaker.git

然后,您可以运行以下命令来使用它

from photomaker import PhotoMakerStableDiffusionXLPipeline

⏬ 下载模型

下载模型

模型将通过以下两行代码自动下载:

from huggingface_hub import hf_hub_download photomaker_path = hf_hub_download(repo_id="TencentARC/PhotoMaker", filename="photomaker-v1.bin", repo_type="model")

您也可以选择从此url手动下载。

💻 如何测试

如何测试

使用方式如同扩散器

使用类似扩散器

  • 依赖

import torch import os from diffusers.utils import load_image from diffusers import EulerDiscreteScheduler from photomaker import PhotoMakerStableDiffusionXLPipeline

载入基础模型

pipe = PhotoMakerStableDiffusionXLPipeline.from_pretrained( base_model_path, # 可根据 SDXL 更改为任何基础模型 torch_dtype=torch.bfloat16, use_safetensors=True, variant="fp16" ).to(device)

加载 PhotoMaker 检查点

pipe.load_photomaker_adapter( os.path.dirname(photomaker_path), subfolder="", weight_name=os.path.basename(photomaker_path), trigger_word="img" # 定义触发词 )

pipe.scheduler = EulerDiscreteScheduler.from_config(pipe.scheduler.config)

还可以与其他 LoRA 模块合作

pipe.load_lora_weights(os.path.dirname(lora_path), weight_name=lora_model_name, adapter_name="xl_more_art-full")

pipe.set_adapters(["photomaker", "xl_more_art-full"], adapter_weights=[1.0, 0.5])

pipe.fuse_lora()

  • 输入ID图片

定义输入ID图像

input_folder_name = './examples/newton_man' image_basename_list = os.listdir(input_folder_name) image_path_list = sorted([os.path.join(input_folder_name, basename) for basename in image_basename_list])

input_id_images = [] for image_path in image_path_list: input_id_images.append(load_image(image_path))

  • 世代

请注意,触发词img必须跟在个性化类词后面

prompt = '一个穿着太阳镜的铁人服半身肖像,最佳质量' negative_prompt = '(不对称,最差质量,低质量,插图,3d,2d,绘画,卡通,素描),张嘴,灰度' generator = torch.Generator(device=device).manual_seed(42) images = pipe( prompt=prompt, input_id_images=input_id_images, negative_prompt=negative_prompt, num_images_per_prompt=1, num_inference_steps=num_steps, start_merge_step=10, generator=generator, ).images[0] gen_images.save('out_photomaker.png')

启动本地 gradio 演示

运行以下命令:

python gradio_demo/app.py

你可以在这个文件中自定义此脚本。

如果你想在 MAC 上运行它,你应该按照这个说明然后运行 app.py。

使用技巧:

使用提示

  • 上传更多被定制人的照片以提高身份证真实性。如果输入是亚洲面孔,也许考虑在类别词前添加 'Asian',例如,Asian woman img
  • 在进行风格化时,生成的面孔看起来是否太逼真?将风格强度调整为30-50,数字越大,身份证真实性越低,但风格化能力会更好。您也可以尝试其他具有良好风格化效果的基础模型或 LoRAs。
  • 减少生成图像和采样步骤以提高速度。但请记住,减少采样步骤可能会影响身份证真实性。

相关资源

相关资源

复制 PhotoMaker 演示:

复制 Photomaker 演示

  1. 演示链接,在由@yorickvP@jd7h提供的复制品上运行PhotoMaker。
  2. 演示链接(样式版本)

PhotoMaker 的 WebUI 版本:

[](#Photomaker 的 Web UI 版本)

PhotoMaker 的 Windows 版本:

Windows 版 PhotoMaker

  1. bmaltais/PhotoMaker@bmaltais创建,可轻松在Windows上部署PhotoMaker。描述可在此链接找到。
  2. sdbds/PhotoMaker-for-windows@sdbds创建。

舒适界面:

#舒适UI

PhotoMaker的纯C/C++/CUDA版本:

纯粹的CCCUDA版本的PhotoMaker

其他应用程序 / 网络演示

其他应用程序和网络演示

45行代码的Graido演示

提供者:@Gradio

🤗 致谢

致谢

免责声明

该项目致力于积极影响基于人工智能的图像生成领域。用户被授予使用此工具创建图像的自由,但他们应遵守当地法律并负责任地使用。开发人员不对用户潜在的滥用承担任何责任。

BibTeX

如果您发现 PhotoMaker 对您的研究和应用有用,请使用以下 BibTeX 进行引用:

@inproceedings{li2023photomaker,
title={PhotoMaker: Customizing Realistic Human Photos via Stacked ID Embedding},
author={Li, Zhen and Cao, Mingdeng and Wang, Xintao and Qi, Zhongang and Cheng, Ming-Ming and Shan, Ying},
booktitle={IEEE Conference on Computer Vision and Pattern Recognition (CVPR)},
year={2024}
}

总结
PhotoMaker是一个实现了快速定制真实人物照片的官方实现。其主要特点包括:在几秒钟内快速定制,无需额外的LoRA训练;确保令人印象深刻的ID保真度,提供多样性、可控的文本性能和高质量生成;可以作为一个适配器,与社区中的其他基础模型以及LoRA模块一起合作。此外,更新内容包括针对不支持bfloat16的GPU进行了重要说明,并提供了性能改进的方法,以及发布了PhotoMaker。