InstantX/InstantID · 拥抱脸

内容

InstantID 模型卡

简介

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存储库以获取更多详细信息。

使用技巧 使用技巧

  1. 如果您对相似度不满意,请尝试增加“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}
}
总结
InstantID是一种全新的先进方法,可以在只有单张图像的情况下实现保持身份的生成,支持各种下游任务。用户可以直接从存储库中下载模型,也可以通过Python脚本下载模型。使用时,可以根据需要调整IdentityNet Strength和Adapter Strength权重来改善相似度,调整Adapter strength来控制饱和度,调整Adapter strength来控制文本效果,使用更逼真的基础模型以获得更好的真实风格。该项目遵循Apache许可协议,旨在积极影响AI驱动的图像生成领域,用户需遵守当地法律并负责任地使用工具。开发人员不对用户潜在的滥用承担责任。