I built this workflow because I wanted to have consistent characters in terms of both face and body.
The technique consists of using PuLID to determine the character's face and IpAdapter together with ClipVision (in UnClipConditioning) at maximum power to determine the body.
You can test it in your own way to get your results, I recommend using a portrait photo so that the "Prep Image to ClipVision" crop only the body for it, you can also modify and load the face and body separately if it makes things easier for you.
The requirements are:
Chroma GGUF:
https://huggingface.co/silveroxides/Chroma-GGUF/tree/main
Lora - Hyper Chroma Low Step:
t5xxl_fp16:
https://huggingface.co/comfyanonymous/flux_text_encoders/blob/main/t5xxl_fp16.safetensors
IpAdapter:
https://huggingface.co/XLabs-AI/flux-ip-adapter/blob/main/ip_adapter.safetensors
IpAdapter ClipVision:
https://huggingface.co/openai/clip-vit-large-patch14/blob/main/model.safetensors
ClipVision to AdvancedVision (google/siglip2-so400m-patch16-512):
https://huggingface.co/google/siglip2-so400m-patch16-512/blob/main/model.safetensors
Pulid: (v0.9.0 return better results):
https://huggingface.co/guozinan/PuLID/blob/main/pulid_flux_v0.9.0.safetensors
Nodes:
ComfyUI-easy-use:
https://github.com/yolain/ComfyUI-Easy-Use
ComfyUI-MultiGPU:
https://github.com/pollockjj/ComfyUI-MultiGPU
ComfyUI-TinyTerraNodes:
https://github.com/TinyTerra/ComfyUI_tinyterraNodes
X-Flux-ComfyUI:
https://github.com/XLabs-AI/x-flux-comfyui
PuLID-Flux-Chroma:
https://github.com/PaoloC68/ComfyUI-PuLID-Flux-Chroma
ComfyUI_ipadapter_plus_v2:
https://github.com/chflame163/ComfyUI_IPAdapter_plus_V2
Advanced Vision:
Description
FAQ
Comments (91)
Got this error:
ApplyPulidFlux
ApplyPulidFlux.apply_pulid_flux() got an unexpected keyword argument 'prior_image'
I added a print to the images, check node by node if you have the correct node.
same
@deestovel Check the print when I posted now in images.
@jeankassiocheib813 shit dont work bro. wtf is prior image?
In the ComfyUI Manager I disabled "ComfyUl_PuLID_Flux_II" and "ComfyUl-PuLID-Flux-Enhanced" nodes. They were conflicting with the new "ComfyUI-PuLID-Flux-Chroma" node. Then the workflow worked fine.
@deestovel Image to trainer
jeankassiocheib813 I downloaded the json file and when I ran it, this was the same error I saw. I am using a fresh Comfyui portable and only have ComfyUI-PuLID-Flux-Chroma this PuLID node installed. How to fix it? Thanks
@fmod nice! worked for me
Resemblance is zero. What a waste of time, and bandwidth downloading the models, your workflow, and researching the PulID problem. Have some decency.
If you don't know how to use ComfyUI, it's not my fault
Don't just download things, READ the tutorial I wrote, the links I left to download and, most importantly, check that everything is correct. Everyone who has used it so far has succeeded, many people were impressed because they knew how to use it. Before criticizing, check that it's not you who is doing everything wrong.
@jeankassiocheib813 I criticized because I used your workflow without change. I used your exact method. The final result was a completely different person. You said consistent character, for your information, a simpler Flux PulID workflow yields close to 95% likeness. Your workflow, using your exact settings yielded 0% likeness. The workflow including models and settings were exactly yours, no change made to it, and the result was 0% likeness. I apologize for saying "have some decency", I admit, I was furious and should not have said that, you did put effort that instead should be thanked for. Maybe your work environment is different than mine, or that your version of ComfyUI yields different results. I'll read other comments and see what others did to make the results come out perfect as you said. But just to be clear, I used your exact workflow, exact models, exact settings, and the image that appeared in the last node, was a different person, I don't know how else to stress my point.
@jeankassiocheib813 I must point out that I've been using ComfyUI since about it came out. I think I do know who to use it. I create my own custom nodes, and just published one ComfyUI community use. I also shared many workflows on OpenArt, and they all are about character consistencies. Much simpler workflows, that actually work and yield close to 100% face likeness. What draw my attention to your workflow is that you said it also yields body likeness, mimicking the work of a LoRA, that was the attraction point for me. I have made many LoRAs for the sole purpose of body likeness. Your workflow - had it worked - would have been great, but it didn't.
How to solve this error?
ApplyPulidFlux
ApplyPulidFlux.apply_pulid_flux() got an unexpected keyword argument 'prior_image'
go through your nodes list and disable every flux one except the ones he showed you.
I only have the nodes he listed. Still this error showed up. Any ideas?
What solved it for me was going into the custom nodes folder and renaming every folder with the strings Pulid and Flux. Actually I cut and pasted them in a differnt location.
Error in SamplerCustomAdvanced
'Chroma' object has no attribute 'time_in'
Disable the others flux and ipadapters, it has conflited
@jeankassiocheib813 tried, but same error.
@jeankassiocheib813 Nice looking flow, but hitting this same issue, are you suggesting we bypass the "Load Flux IPAdapter" and the "Apply Advanced Flux IPAdapter"? If so, disabling this does not resolve the issue in my case. Same with the inverse (disabling all PuLID nodes and leaving the IPAdapter nodes enabled).
Solution: ComfyUI points to "ComfyUI-PuLID-Flux-Enhanced" by default to fulfill the custom_node dependency. If you hit this issue, make sure you delete ComfyUI-PuLID-Flux-Enhanced, and manually install ComfyUI-PuLID-Flux-Chroma
@Daxamur I only have the nodes he listed. I'm still facing the same error. Any ideas?
What solved it for me was going into the custom nodes folder and renaming every folder with the strings Pulid and Flux. Actually I cut and pasted them in a differnt location.
Keep getting this error when trying to apply PulID?
"FutureWarning: rcond parameter will change to the default of machine precision times ``max(M, N)`` where M and N are the input matrix dimensions.
To use the future default and silence this warning we advise to pass rcond=None, to keep using the old, explicitly pass rcond=-1.
P = np.linalg.lstsq(X_homo, Y)[0].T # Affine matrix. 3 x 4"
This error never occurred to me, first time I see it, it may probably be having a conflict with some other node that you installed.
@jeankassiocheib813 It shows conflict in the manager but with nodes that have also been installed with this workflow (that I never had before) so what gives? I disabled one of the clashing nodes and it gave me the error above, I disabled the other one and then it gives me the 'prior_image' error, i disable them both and it gives me an error that those nodes are completely missing?
ComfyUI_PuLID_Flux_ll and ComfyUI-PuLID-Flux-Enhanced are both clashing with each other, remove one it gives one error, remove the other i get another error, remove both, the nodes are missing from the workflow ... or do i need to do more than just disable and actually remove them? (I am of course restarting the Ui each time I toggle their enable/disable status)
@beepbopbip You have to disable these two and install what I put in the project description here on Civitai.
@jeankassiocheib813 Ok thanks, got it generating now! I'm wondering if one wants to use it with Flux is it as simple as changing what options are set to chroma, to flux and then going back to the old nodes?
Also I notice a low step lora in the chain yet the default steps you have set are 50? Is that an error and we should lower it?
Thanks.
@beepbopbip This Lora can work with 12~20 steps, but for more realistic results, Chroma requires 28+ steps. I left 50 steps because they were my best results.
@jeankassiocheib813 Ok thanks what about the Flux? How easy would it be to use Flux with this workflow? What would need to be changed or do you by any chance happen to have a Flux workflow like this?
Thanks
I have models right from the list yet I get this error:
"The size of tensor a (196) must match the size of tensor b (1024) at non-singleton dimension 1".
I'm stuck. Help-
check my post, I had the same issue at one point(can't recall what caused it as i had multiple errors), make sure you've installed everything in the post, disable both the flux nodes and you should have the chroma needs appearing in the workflow
@beepbopbip I did what you had in your post. Uninstalled 2 modules and installed one provided. Unfortunately I have still same problem. Nonetheless thank you for trying :)
@jasonfly I can assure you it is possible to get it working, make sure you have the right models loaded, I had ended up making a mess of it somehow and ended up loading the original workflow from here back in after double checking I had all the nodes installed and the models in the right folders, please double check everything, I think I had tried to skip downloading one of the clips because I thought I could use one i already had etc, not saying you've done this but just checking to make sure you've got all the parts.
I remember having that specific error but it was when I had changed a specific thing but it didn't last long as I undid what I had done.
What part of the workflow is red or does the proecss stop at when the error shows up?
I don't think this is what caused it for me but I didn't have the upscaler in the workflow so it wasn't loading and for some reason I thought it would still generate but it didn't, It's the only thing i used a different upscaler with but once I had picked the upscaler it worked and I had been struggling to find the upscaler box but it was but its on the hard right of the work flow. Not sure if that's what it could be but make sure you have a model selected.
@jasonfly Some of the custom nodes conflict with other nodes, so it is important to disable the others.
Check which ipadapter and clipvision models are being loaded, if they are the same as the ones I demonstrate here.
Or if you want to wait, in the next few days I will release a new version, using PuLID and InfiniteYou
great job man, thanks for your effort. Appreciated a lot
Thanks
for most people that had to disconnect the Comfy Pulid Flux 2 for this to work, how did your generations come out? Mine is like 60% resemblance, and for the OP can you fix the conflicting Apply Flux Pulid node?
Is it possible to convert this to be used with Flux if and if so what would need to be done, is it just a case of replacing the pulid nodes with the flux nodes and all chroma related settings to flux?
I like this workflow and what it does, all the Flux workflows I've found don't seem to be as advanced and I'm kind of a comfy noob so I'd rather attempt to try and modify this than add everything manually to another workflow but what do you think would be the easier way?
Thanks.
Also if you can advise, what is the best way to learn comfy, there are so many nodes and every workflow creator tends to use different nodes for the same thing..is it better to just reverse engineer workflows? copy and paste elements from workflows into your own (I tried this but like I mentioned people are often using incompatible nodes that often don't line up with other nodes) ..ahh i digress
Any advice appreciated, thanks. I want to learn. How long did it take you to learn to make a workflow like this?
For anyone struggling to make it work with the Pulid nodes - You got to delete the flux pulid node from your custom_nodes folder and download the chroma pulid node linked in the description
Could there be a possibility that I could add flux loras to futher enhance the images, I also don't seem to get good results, body and face doesn't match to image uploaded
I will soon release version 2, which will fix some things and make it easier
It says AdvancedVisionLoader is missing. I did git https://github.com/ostris/ComfyUI-Advanced-Vision to custom_nodes. What am I missing? Thanks!
[Edit] Sorry. I was testing it on an older Comfyui. The latest Comfyui doesn't have this issue.
I do have the latest comfy and I'm still facing the same issue. 🤷
The latest stable version, I mean.
Edit: I solved it by installing in the manager from the git url.
@PepitoPalotes Now, I'm facing
ApplyPulidFlux.apply_pulid_flux() got an unexpected keyword argument 'prior_image'
I'm testing it in a fresh latest Comfyui portable.
Same issue. Latest version. AdvancedVisionLoader doesn't exist. Downloaded via git and when I look for it in search on comfy, it doesn't even show up.
Failed to validate prompt for output 433:
* LoadFluxIPAdapter 421:
- Value not in list: ipadatper: 'ip_adapter.safetensors' not in []
Output will be ignored
Failed to validate prompt for output 178:
Output will be ignored
Prompt executed in 0.01 seconds
put it in models/xlabs/ipadapters
colin544 thanks it worked for me!
Is the sampler extremely slow for anyone else? I am getting ~6 seconds/iteration on a 5090 so each generation takes around 5 min.
EDIT: I tried setting the virtual_vram_gb to 0 in the unet loader and that brought it down to 1 min generations.
I noticed the "prepare image for ClipVision V2" node resizes the image to 224x224, however, that
Google siglip2 vision model can handle 512x512. That might give an improvement.
I think that will be a definite improvement in the output quality.
Hi and thanks, I get this error:
AttributeError: 'Chroma' object has no attribute 'time_in'. Did you mean: 'img_in'?
Don't change the "Apply PuLID Flux" node. Install custom node "PuLID-Flux-Chroma".
Disable custom nodes: ComfyUI_PuLID_Flux_ll, ComfyUI-PuLID-Flux-Enhanced, ...
Open custom nodes manager, search for PuLID, disable those with conflicts.
Hello
Can you tell which chroma gguf you used to do it?
ApplyPulidFlux.apply_pulid_flux() got an unexpected keyword argument 'prior_image'
Has anyone encountered the same issue?
Same Error -.-
Change the Apply PuLID Flux Node. Prior Image is not aviable. Next Problem Chroma :D
zorrox Hi, did you mean that I would need to change the node in the workflow? How did you fix it? Can you please let me know? Thanks
earlsansbury Next Problem is the SamplerCustomAdvanced "KeyError: 'transformer_options'"
zorrox change it with what?
Thanks in advanced!
aurasquad1 Apply PuLID Flux with the new version of Apply PuLID Flux Node. Double Klick and search "Apply PuLID Flux" change.
Don't change the "Apply PuLID Flux" node. Install custom node "PuLID-Flux-Chroma".
Disable custom nodes: ComfyUI_PuLID_Flux_ll, ComfyUI-PuLID-Flux-Enhanced, ...
Open custom nodes manager, search for PuLID, disable those with conflicts.
Nefli Thank You
Nefli appreciate that!
Don't change the "Apply PuLID Flux" node. Install custom node "PuLID-Flux-Chroma".
Disable custom nodes: ComfyUI_PuLID_Flux_ll, ComfyUI-PuLID-Flux-Enhanced, ...
Open custom nodes manager, search for PuLID, disable those with conflicts.
is there a reason I dont see PuLID-Flux-Chroma in custom node manager
cannot find PuLID-Flux-Chroma in the custom node manager neither the link do download anywhere else
PuLID-Flux-Chrome is one of the hyperlinks listed above: https://github.com/PaoloC68/ComfyUI-PuLID-Flux-Chroma
You are a legend
For those who are not getting similarity in this workflow, try bypassing ip_adapter related nodes would help
Got it working after a little troubleshooting, thanks to everyone in the comments!
Helloo I m having an issue with face and body consistency , the only thing that I did different was using chroma detailled v48 instead of 37 like in the workflow you provided, I did try to bypass the idapter node like someone mentionned and it does seem to work a bit better . I can definitly see some similarities but it s still far off , ant tips would be great , thanks !
UnetLoaderGGUFAdvancedDisTorchMultiGPU missing nod what do i do ?
I am a newbie in comfy i did all there is to do follow the tutorial but the image is stuck at preview and dont generate further
COuld you do a pip list for me? I have everything setup just like you(besides that Lora that doesnt exist anymore) but I get non identical results to my input image. It has to be some dependency that's funky on my side.
It seems like the link for Hyper-Chroma-low-step-LoRA.safetensors doesn't work anymore. do you have another alternative place to download it? I've been searching and it seems like the author removed that link. Thanks!
NVM. found one. fortunately, someone backed it up. Here's the link to the file. Hyper-Chroma-low-step-LoRA.safetensors · Vinzou/Chroma-LoRA-Experiments at main
Here's the comment that confirms it is the same Hyper-Chroma-low-step-Lora from Silveroxides: https://huggingface.co/lodestones/Chroma1-Flash/discussions/2#68d8b9358d7a8657b5a927d5
IPadapter doesnt work for chroma for me. When it gets to the xflux nodes I get "ApplyAdvancedFluxIPAdapter
'DoubleStreamBlock' object has no attribute 'img_mod'"
did you find a fix?
@YoSomeoneGTD no
you need to fix ComfyUI\custom_nodes\x-flux-comfyui-main\utils.py , https://drive.google.com/drive/folders/14BXhRIYQu3jZqRyi_OosQrUVsgXjxGt6?usp=drive_link Here's a modification I made
I get "SamplerCustomAdvanced
too many values to unpack (expected 4)"
could anyone help?
one after another, issues coming. now at SamplerCustomAdvanced 'Chroma' object has no attribute 'time_in'. I wish Developer would kindly make a simple guide with this workflow with red note
solved now.
how did you solve it?
Thanks for the great work. Both the workflow developer and the community support and tips
the workflow is dead, I tested it on 24 ram and 84 vram, the same result, it doesn't work. thanks for the time wasted
I finally got the workflow to work, but honestly, the output face doesn't really look like the input face (after several tries).





