“ 最近AI生成虚拟人像技术飞速发展,今天分享可以仅通过一张照片就可以通过AI算法提取面部特征,生成带有该人脸部特征的新图像,将人物形象无缝嵌入各种虚拟场景中,输出逼真的图像,并生成多种风格的图像,无需繁琐的模型训练。除了各种商业应用场景外,也可以让你实现写真自由。”
Photomaker
腾讯ARC团队开发了一款名为"Photomaker"的技术,与以往不同的是,它只需一张照片即可实现面部特征的迁移。支持文本转图像功能,人物特征混合以及改变人物的年龄和图像风格,而无需进行复杂的模型训练。
用户只需将头像导入Photomaker,即可生成多种风格的图像。Photomaker还支持图像融合功能,可以合成真实照片和动漫图像,生成效果非常出色。
与先前的技术相比,Photomaker在简化部署流程方面表现得更为出色。相较于IP Adapter和face ID,它不仅省去了繁琐的数据收集和模型训练,而且在面部相似度上也有所提升。这使得我们能够更轻松地创建具有高度真实感的虚拟场景。
不同方法的普通语境比较
可以观察到,PhotoMaker 可以很好地满足生成高质量图像的能力,同时确保 ID 的高保真度。
应用在(a)艺术品和老照片,以及(b)更改年龄或性别
还能进行其他风格的生成,如草图、漫画、动画等。
不同人物身份也能进行混合,创造出一个全新的人物形象。赫本和爱莎公主的组合版兼顾了两者的特点:
Windows系统上部署Photomaker
环境准备
首先,您需要准备好conda环境以创建Python虚拟环境。conda是Python的包管理和环境管理工具,可以方便创建隔离的Python运行环境。
然后确保您的Visual Studio Code版本在1.8以上,Python扩展库torch、torchvision、torchaudio的版本符合Photomaker的需求。
安装依赖和下载模型权重
克隆Photomaker的Windows版本代码,进入项目目录,执行pip installrequirements-windows.txt安装依赖。
from huggingface_hub import hf_hub_downloadphotomaker_path = hf_hub_download(repo_id="TencentARC/PhotoMaker", filename="photomaker-v1.bin", repo_type="model")
其次构建Pipe
import torchimport osfrom diffusers.utils import load_imagefrom diffusers import EulerDiscreteSchedulerfrom photomaker.pipeline import PhotoMakerStableDiffusionXLPipeline
### Load base modelpipe = PhotoMakerStableDiffusionXLPipeline.from_pretrained( base_model_path, # can change to any base model based on SDXL torch_dtype=torch.bfloat16, use_safetensors=True, variant="fp16").to(device)
### Load PhotoMaker checkpointpipe.load_photomaker_adapter( os.path.dirname(photomaker_path), subfolder="", weight_name=os.path.basename(photomaker_path), trigger_word="img" # define the trigger word)
pipe.scheduler = EulerDiscreteScheduler.from_config(pipe.scheduler.config)
### Also can cooperate with other LoRA modules# 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()
再者组织输入图像
### define the input ID imagesinput_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))
最后运行生成
# Note that the trigger word `img` must follow the class word for personalizationprompt = "a half-body portrait of a man img wearing the sunglasses in Iron man suit, best quality"negative_prompt = "(asymmetry, worst quality, low quality, illustration, 3d, 2d, painting, cartoons, sketch), open mouth, grayscale"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')
运行Photomaker 运行摄影师
在命令行中进入app.py所在目录,执行python app.py启动服务。在浏览器中访问打印的本地URL,即可打开Photomaker的人像生成网页界面,体验人像生成的魅力。
不想麻烦的也可以在文末获取在线DEMO,直接打开网址即可运行。
Instant ID
这是国内InstantX 团队和小红书公司及北京大学团队开发的,推出了名叫Instant ID工具,这是一款零样本图像生成工具。基于扩散模型的创建,Instant ID只需一张参考图即可生成多种风格的高保真图像。
相较于传统的dream Booth和Lora,Instant ID的图像生成效率显著提升。它还支持人物面部融合,通过调整ID强度值,用户可以精确控制对参考图的还原度。
用户可以只需通过输入简单的提示词,选择风格,即可生成出令人惊艳的高质量图像。
目前,Instant ID已经开源,同样也提供本地部署并可整合到stable diffusion作为插件使用。
不想麻烦的也可以在文末获取在线DEMO,直接打开网址即可运行。
领取专属 10元无门槛券
私享最新 技术干货