
* first attempt at updating to photomaker v2 * continue adding photomaker v2 modules * finishing the last few pieces for photomaker v2; id_embeds need to be done by a manual step and pass as an input file * added a name converter for Photomaker V2; build ok * more debugging underway * failing at cuda mat_mul * updated chunk_half to be more efficient; redo feedforward * fixed a bug: carefully using ggml_view_4d to get chunks of a tensor; strides need to be recalculated or set properly; still failing at soft_max cuda op * redo weight calculation and weight*v * fixed a bug now Photomaker V2 kinds of working * add python script for face detection (Photomaker V2 needs) * updated readme for photomaker * fixed a bug causing PMV1 crashing; both V1 and V2 work * fixed clean_input_ids for PMV2 * fixed a double counting bug in tokenize_with_trigger_token * updated photomaker readme * removed some commented code * improved reconstructing class word free prompt * changed reading id_embed to raw binary using existing load tensor function; this is more efficient than using model load and also makes it easier to work with sd server * minor clean up --------- Co-authored-by: bssrdf <bssrdf@gmail.com>
2.9 KiB
Using PhotoMaker to personalize image generation
You can use PhotoMaker to personalize generated images with your own ID.
NOTE, currently PhotoMaker ONLY works with SDXL (any SDXL model files will work).
Download PhotoMaker model file (in safetensor format) here. The official release of the model file (in .bin format) does not work with stablediffusion.cpp
.
- Specify the PhotoMaker model path using the
--stacked-id-embd-dir PATH
parameter. - Specify the input images path using the
--input-id-images-dir PATH
parameter.- input images must have the same width and height for preprocessing (to be improved)
In prompt, make sure you have a class word followed by the trigger word "img"
(hard-coded for now). The class word could be one of "man, woman, girl, boy"
. If input ID images contain asian faces, add Asian
before the class
word.
Another PhotoMaker specific parameter:
--style-ratio (0-100)%
: default is 20 and 10-20 typically gets good results. Lower ratio means more faithfully following input ID (not necessarily better quality).
Other parameters recommended for running Photomaker:
--cfg-scale 5.0
-H 1024
-W 1024
If on low memory GPUs (<= 8GB), recommend running with --vae-on-cpu
option to get artifact free images.
Example:
bin/sd -m ../models/sdxlUnstableDiffusers_v11.safetensors --vae ../models/sdxl_vae.safetensors --stacked-id-embd-dir ../models/photomaker-v1.safetensors --input-id-images-dir ../assets/photomaker_examples/scarletthead_woman -p "a girl img, retro futurism, retro game art style but extremely beautiful, intricate details, masterpiece, best quality, space-themed, cosmic, celestial, stars, galaxies, nebulas, planets, science fiction, highly detailed" -n "realistic, photo-realistic, worst quality, greyscale, bad anatomy, bad hands, error, text" --cfg-scale 5.0 --sampling-method euler -H 1024 -W 1024 --style-ratio 10 --vae-on-cpu -o output.png
PhotoMaker Version 2
PhotoMaker Version 2 (PMV2) has some key improvements. Unfortunately it has a very heavy dependency which makes running it a bit involved in SD.cpp
.
Running PMV2 is now a two-step process:
- Run a python script
face_detect.py
to obtain id_embeds for the given input images
python face_detect.py input_image_dir
An id_embeds.safetensors
file will be generated in input_images_dir
Note: this step is only needed to run once; the same id_embeds
can be reused
-
Run the same command as in version 1 but replacing
photomaker-v1.safetensors
withphotomaker-v2.safetensors
.You can download
photomaker-v2.safetensors
from here -
All the command line parameters from Version 1 remain the same for Version 2