PhotoMaker是腾讯最近开源的照片生成工具,这是一种高效的个性化文本到图像生成方法。该工具不仅能根据文本描述生成逼真的人类照片,还具备“堆叠ID嵌入”功能,这一功能可以利用多张照片作为身份ID,获取人物特征,从而创造出新的、个性化的人物图像。
PhotoMaker展现了在文本到图像生成领域的新突破,尤其是在个性化和真实感方面的进步。这种技术有望在多个领域中发挥重要作用,例如艺术创作、媒体出版等。
示例
依赖和安装
Python>=3.8(推荐使用Anaconda或Miniconda)PyTorch>=2.0.0
·
condacreate--namephotomakerpython=3.10
condaactivatephotomaker
pipinstall-Upip
#Installrequirements
pipinstall-rrequirements.txt
然后可以运行以下命令来使用
fromphotomakerimportPhotoMakerStableDiffusionXLPipeline
如何测试
像使用diffusers一样使用
·依赖项
importtorch
importos
fromdiffusers.utilsimportload_image
fromdiffusersimportEulerDiscreteScheduler
###Loadbasemodel
pipe=PhotoMakerStableDiffusionXLPipeline.from_pretrained(base_model_path,#canchangetoanybasemodelbasedonSDXLtorch_dtype=torch.bfloat16,use_safetensors=True,variant="fp16").to(device)
###LoadPhotoMakercheckpointpipe.load_photomaker_adapter(os.path.dirname(photomaker_path),subfolder="",weight_name=os.path.basename(photomaker_path),trigger_word="img"#definethetriggerword)
pipe.scheduler=EulerDiscreteScheduler.from_config(pipe.scheduler.config)
###AlsocancooperatewithotherLoRAmodules
#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图像
###definetheinputIDimages
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)forbasenameinimage_basename_list])
input_id_images=[]
forimage_pathinimage_path_list:input_id_images.append(load_image(image_path))
·生成
#Notethatthetriggerword`img`mustfollowtheclasswordforpersonalization
prompt="ahalf-bodyportraitofamanimgwearingthesunglassesinIronmansuit,bestquality"
negative_prompt="(asymmetry,worstquality,lowquality,illustration,3d,2d,painting,cartoons,sketch),openmouth,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')
启动一个本地gradio演示
运行以下命令:
pythongradio_demo/app.py
使用提示
上传更多要定制的人物的照片,以提高ID忠实度。如果输入是亚洲面孔,可以考虑在类别词前加上“亚洲”,例如,亚洲女性图像。
在进行风格化时,生成的面孔如果看起来太真实了,调整风格强度到30-50,数字越大,ID忠实度越低,但风格化能力会更好。你也可以尝试使用其他基础模型或具有良好风格化效果的LoRAs。
减少生成的图像数量和采样步骤可以加快速度。然而,减少采样步骤可能会影响ID忠实度。
项目链接
PhotoMaker:腾讯最新开源,根据照片生成该人物各种风格图片,项目可落地!