Hello Everyone!
Have you ever created an image, and a face, or hand just came out wrong? You need a workflow that can address that. Ever make an image that had multiple characters, but when you tried to assign them the correct eye color or expression, the checkpoint got confused, and you had to play generation roulette? You need a workflow that lets you decide whose face has just came out like what.
That is what this workflow, used properly, will allow you to do.
This workflow is my daily driver T2I workflow for checkpoints based in SDXL, Illustrious and Pony. It is based upon my Img2Img SDXL Workflow + META, which I was only able to create thanks to bits taken from other workflows, particularly those of Legendaer and Yukichan_, and advice from Lonecatone23. I am keeping these two workflows separate but similar in design, so that if you like one, you can quickly take to the other.
New with 2.0:
Raise CFG without crushing the image
Upscaler with a third save node
Somehow resists LoRA bleed, whether it's the scheduler / sampler combo or what I'd love to know. It's not perfect though!
Preview KSampler - a game changer for skipping unsatisfactory seeds. Use it!
You will need to download an upscaler model if you don't have one already.
New with 2.1:
Detailer moved to the back of the order, after upscale, to ensure that full control over expressions remains with you, the artist. I'm very happy with this workflow in its current form, although there might be new versions or changes down the line.
New with 2.2:
Added toggles for including the workflow in the image's metadata.
Added a means by which you can bypass the upscaler and still send the image (directly from phase 1 gen/hires fix) to the detailer, rather than being forced to use upscaler in order to access the detailer.
Color Matching directly following Upscaler - I have found that some models have noticeable drift in color tone and this corrects that, works beautifully.
Features:
✦ Create Images from Text Prompts - Any SDXL/Illustrious/Pony checkpoint
✦ rgthree quick bypass — the standard in toggle control, we love it
✦ Metadata saving included — CivitAI ready. You can also embed the entire workflow into your images, by default this is turned off.
✦ Per-face prompt control — up to 5 faces
✦ Per-hand prompt control — up to 5 hands -- adding more is pretty straightforward
✦ Dedicated detailer LoRA slot perfect place for beautify, hand detailer, or whatever else, ensuring that's the LoRA that affects the face. You can chain LoRAs too or use your favorite LoRA loader instead.
✦ SEGS previews — See exactly what the bbox detector is targeting before committing — catch missed or false detections before they waste a generation.
✦ Simple and reliable — Enter your prompt, hit run, let the segs previews populate, freeze the gen seed, and fill in prompts and run it again. That's it.
How this Workflow Came to Be
I was using one of these massive workflows with all the bells and whistles and I ran into a snag. A LoRA was confounding the hand detailer and the hands were all coming out like macaroni alfredo. So, I turned off that LoRA. I was also running into a common problem: when two characters are in the frame, they end up with the same eye or hair color. The tags were blending across character BREAKs which is ultra common, and detailers that handle all bboxs in order cannot be instructed on each bbox individually. That's something that my I2I workflow was designed to do, and the mega huge T2I workflow with all its heft didn't have detailer separation as a feature.
I don't think I could add to such a complex workflow without tripping up and it end up taking 2 hours. I thought if I'm going to modify a workflow it might as well be my own. It would keep things simple with only nodes I know I have, I'd finish in under 30 minutes, and then I would have complete control over faces.
Saving the metadata is important too, however somehow in converting things and removing things that get concatenated (such as the natural language prompt), the metadata portion got a little scrambulated, and don't worry I fixed it -- but 30 minutes turned into a several hour affair. Under nine hours though, I'm pretty sure. The latter part was mostly testing and tweaking. I ended up making some changes to the detailer modules so that they don't spam the image feed, and upgraded that module to V1.1.
During testing, I started with one figure, then two, and I soon discovered that this workflow is absolutely a beast at ensuring your faces all look great. Whether you have one face in the image or five, the detailer can make each one pop with high aesthetic quality and unique expressions, and the SEGS previewer keeps you in control.
The hand detailer gives you per-segs control over hands although sometimes bad hands are going to happen, particularly when there are many in one image. Fingers in AI is always a little trickier, but the workflow allows you to add a hand detailer LoRA directly to the detailer, upping your chances of success dramatically. Do it. At the same time, that LoRA will be blocking other LoRAs that could create havoc on delicate fingers. I haven't seen this approach elsewhere, curious whether it holds up in your experience. Please let me know in the comments what you think about my LoRA blocker, if you have any aspects you think ought to be changed, bug fixes, etc. This is just version 1, it's bound to evolve.
Requirements
You will need a face bbox detector - like this one
You will needs a hands bbox detector - like this one
You might decide to add or replace a bbox detector for face or hands with one for eyes, or add another bbox array. For eyes, try this one
In ComfyUI you may need to turn some safety features off to use pickletensors. Consult AI if you run into problems.
Custom Nodes Used:
rgthree-comfy Bookmark, Fast Groups Bypasser, Image Comparer, Label, Seed
ComfyUI Impact Pack BboxDetectorSEGS, DetailerForEach, ImpactSEGSOrderedFilter, ImpactWildcardProcessor, SEGSPreview, UltralyticsDetectorProvider
ComfyUI Impact Subpack
ComfyUI Easy Use easy ckptNames, easy cleanGpuUsed, easy clearCacheAll, easy float, easy hiresFix, easy int, easy showAnything
LoraManager Lora Loader, TriggerWord Toggle
ComfyUI Image Saver Image Saver, Input Parameters (Image Saver)
ComfyUI Essentials GetImageSize+, SDXLEmptyLatentSizePicker+
cg use everywhere Anything Everywhere
New / additional required packs for v2.0:
dynamic thresholding
Comfyui_Mira
Skimmed_cfg
efficiency Nodes KSampler (with preview)

