InstantID 是一种全新的先进无调整方法,可通过单张图像实现保持 ID 的生成,支持各种下游任务。
您可以直接在此存储库中下载模型。您也可以在 Python 脚本中下载模型:
hf_hub_download(repo_id="InstantX/InstantID", filename="ControlNetModel/config.json", local_dir="./checkpoints")
hf_hub_download(repo_id="InstantX/InstantID", filename="ControlNetModel/diffusion_pytorch_model.safetensors", local_dir="./checkpoints")
hf_hub_download(repo_id="InstantX/InstantID", filename="ip-adapter.bin", local_dir="./checkpoints")
对于人脸编码器,您需要通过此URL手动下载到models/antelopev2
。
# !pip install opencv-python transformers accelerate insightface
import diffusers
from diffusers.utils import load_image
from diffusers.models import ControlNetModel
import cv2 import torch import numpy as np from PIL import Image
从insightface.app导入FaceAnalysis 从pipeline_stable_diffusion_xl_instantid导入StableDiffusionXLInstantIDPipeline, draw_kps
在./models下准备'antelopev2'
app = FaceAnalysis(name='antelopev2', root='./', providers=['CUDAExecutionProvider', 'CPUExecutionProvider']) app.prepare(ctx_id=0, det_size=(640, 640))
准备模型在 ./checkpoints 下
face_adapter = f'./checkpoints/ip-adapter.bin' controlnet_path = f'./checkpoints/ControlNetModel'
加载 IdentityNet
controlnet = ControlNetModel.from_pretrained(controlnet_path, torch_dtype=torch.float16)
pipe = StableDiffusionXLInstantIDPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", controlnet=controlnet, torch_dtype=torch.float16) pipe.cuda()
加载适配器
pipe.load_ip_adapter_instantid(face_adapter)
然后,您可以定制自己的面部图像
image = load_image("your-example.jpg")
准备人脸嵌入
face_info = app.get(cv2.cvtColor(np.array(face_image), cv2.COLOR_RGB2BGR)) face_info = sorted(face_info, key=lambda x:(x['bbox'][2]-x['bbox'][0])*x['bbox'][3]-x['bbox'][1])[-1] # 仅使用最大的人脸 face_emb = face_info['embedding'] face_kps = draw_kps(face_image, face_info['kps'])
pipe.set_ip_adapter_scale(0.8)
提示 = '一个男人的胶片照片。褪色的胶片,去饱和度,35毫米照片,颗粒感,暗角,复古,柯达克隆,乐摄,沾污的,高度详细的,发现素材,杰作,最佳质量' 负面提示 = '(低分辨率,低质量,最差质量:1.2),(文字:1.2),水印,绘画,素描,插图,故障,变形,突变,斜视,丑陋,畸形 (低分辨率,低质量,最差质量:1.2),(文字:1.2),水印,绘画,素描,插图,故障,变形,突变,斜视,丑陋,畸形'
生成图像
image = pipe( ... prompt, image_embeds=face_emb, image=face_kps, controlnet_conditioning_scale=0.8 ... ).images[0]
请查看我们的GitHub存储库以获取更多详细信息。
使用技巧 使用技巧
- 如果您对相似度不满意,请尝试增加“IdentityNet Strength”和“Adapter Strength”的权重。 2. 如果您觉得饱和度太高,首先降低适配器强度。如果仍然太高,则降低IdentityNet强度。 3. 如果发现文本控制不如预期,降低适配器强度。 4. 如果发现现实风格不够好,请访问我们的Github存储库,并使用更真实的基础模型。
该项目采用Apache许可证发布,旨在积极影响AI驱动的图像生成领域。用户被授予使用此工具创建图像的自由,但他们有责任遵守当地法律并负责任地使用它。开发人员不会对用户潜在的滥用承担任何责任。
@article{wang2024instantid,
title={InstantID: Zero-shot Identity-Preserving Generation in Seconds},
author={Wang, Qixun and Bai, Xu and Wang, Haofan and Qin, Zekui and Chen, Anthony},
journal={arXiv preprint arXiv:2401.07519},
year={2024}
}