Kotojima Junichi's Workflow
Have you ever tried a new ComfyUI workflow, only to find yourself falling deeper and deeper into the rabbit hole, looking for custom nodes and models? No? Only me, then? All right...
If you use and like this workflow and would like to help me, select it as a resource you used when uploading an image to the site!
The general idea of the simple workflow:
first pass
(optional 2nd pass)
-> upscale latent
-> second pass
-> upscale image (optional)For the extended version:
prompt enhancement (optional)
-> first pass
(optional 2nd pass)
-> upscale latent
-> second pass
-> face detailer (optional)
-> upscale image (optional)Simple Version
The simple version was designed to be plug-and-play:
Zero custom nodes.
Small amount of nodes, laid out in a fairly left-to-right linear fashion: execution flow will not move to the left.
Subgraphs allow whole portions of the workflow to be safely bypassed.
Optional enhancer LoRA. (Krea 2 Turbo only)
4-step lightning LoRA included by default for Qwen Image 2512.
8-step turbo LoRA included by default for Anima.
Optional SeedVR upscaler.
Extended Version
The extended version was designed to require a few custom nodes, but to provide a few extras:
Simple prompt enhancement.
Face detailer.
General Notes
I ended up using sub-graphs as a way to hide the samplers, as these might be considered "implementation details." This is a bit of a compromise, but it allows the extended version to be a bit more user-friendly. I used the built-in KSampler under the hood, for simplicity, and chose not to expose its parameters, because these can vary wildly from sampler to sampler. If you take a look at the parameters exposed by KSampler, KSampler (Advanced), the built-ins, and different sampler/scheduler configurations, such as ClownsharKSampler, or using FlowMatch Euler Discrete Scheduler, you'll quickly realize that even though these essentially perform the same job, they are very, very different, and have very different knobs to tune, so I chose to just "blackbox" the sampler; though perhaps it would be more accurate to say I chose to "graybox" the sampler, because these parameters can still be accessed and tuned, but you'll have to dive a bit deeper in the sub-graphs.
Custom Nodes
Additional Models
How to use the extended version
This is how I use the updated version of the extended workflow:
Project title. Set the title of the project in the "Project" node. This setup will save everything to a directory with this name, with a sub-directories named "draft", for the output of the first sampling pass, "face_detailer", and "upscaled", and will also use different names for the images created by the face detailer and upscaler. Don't worry too much about the name; I once called a project
doves, because I wanted it to feature doves, but I removed the doves in the end, so yeah... lol.Exploration phase. Get a fixed seed. I generally just start with seed 0. Work on the prompt first, getting a different seed won't help you at this point. You may want to set a smaller size at this point, and/or lower the number of steps, if you want to iterate fast. Don't enable the second pass right now, as it will mostly be a waste of time. This is the right time to experiment with different aspect ratios, models and LoRAs, as they will change things significantly further down the line; if you want to generate a lot of pictures, and would like them to have somewhat of a coherent identity, changing LoRAs or models later is probably not a good idea. At this point you may also choose whether you'd like to have the prompt enhanced, or even written completely by writing some instructions in the
system_promptinput of thePrompt Enhancementnode. Bear in mind that including that in the normal run will take some additional time; with a fixed seed this will always result in the same text, so running it once and copying it back to thePromptnode is probably a good idea; you can do this by turning its bypass off and using the partial execution feature so that only the prompt enhancement will run, by selecting thePreview as Textnode under thePrompt Enhancementnode, and clicking the blue play button. If you choose to do this as a one-off thing, remember to bypass prompt enhancement when running the whole workflow later. At this stage you're not really worried about the finer details, just the overall picture. Once you are satisfied with what you see, you can go to the next step.Drafting phase. At this point you can increase the number of steps to 8+, and set the size to 1+ mega-pixels for the first pass; bear in mind that each model has its ideal range of generation, and if you exceed it the results are likely to degrade. Krea 2 Turbo, for instance, has an optimal range between 1024-2048 for each side, and you should probably not exceed that in any sampling process, for better results. Now you will look at the finer details. At this point you probably should not change your prompt any more. Changing the aspect ratio of the image is also likely to result in a very different image. This is the right time to change the seed. If the image is consistently different from what you've expected, I would recommend you to go back to the previous step. One thing you can do at this step is to set the batch count a bit higher, to 4-8-16, do a bigger run, and select the resulting image you liked best.
Second pass. Decide whether your image would benefit from a second pass. If you're aiming for realism, this is generally the case. If you're creating an illustration, or using a simpler art style, there's a fair chance that a second pass won't be needed. The most important parameter for the second pass is
denoise. A denoise of 0.0 basically means "do nothing", and 1.0 means "redraw from scratch"; both extremes are kind of meaningless for a second pass, so I would recommend you to experiment with values that are in the 0.25-0.50 range. The lower the value, the more the final image will look like the output of the first pass. You can grab the seed from an image made in the previous step, and run it again through the whole process, or just enable the second pass and use the partial execution feature on the "Compare images" to the right of the "Save Image" node in green, in the middle of the workflow.Face detailer. Will the image need face detailing? If there are no humans in the image, the answer is more obviously "no". If the person's face is "close to the camera" (i.e., it occupies a large portion of the image), and particularly if it doesn't look "wrong" or awkward in some way, you may skip this step. For one particular image, the model kept creating a green "aura" around the subject's eyes, instead of properly giving them green eyes, because they weren't very close to the camera, so I had to "fix" this by using the face detailer.
Upscaling. Will the image need upscaling? If you'd like to have a bigger image, you can turn the bypass off on the upscaling nodes, and use the partial execution on the "Compare images" node in this group. If you run out of memory, try lowering the
target_lengthparameter. Bear in mind that the upscaler will actually downscale your image iftarget_lengthis less than the longer side of your image.
Notes
Designed with Nodes 2.0 in mind.
Peek at the draft, the output of the first stage: don't like it? Cancel the run, get another seed or rewrite the prompt.
Latent upscaling: upscaling the latent rather than an image allows the model to add some richer detail that will adhere a bit more closely to its "style."
Single seed: both samplers use the same seed. Although not strictly necessary, it does make things a bit easier to reproduce.
Simplifying assumptions: the two passes use the same parameters. The only exception is
denoise, passed exclusively to the second pass. (Simple version only)Denoise for the second pass: this goes from 0.0 to 1.0, where 0.0 basically means "do nothing", and 1.0 means "redraw it from scratch". I have found that values around 0.5 are generally optimal, though that might change depending on what you're working on. The closer to 0.0 you get, the more the second pass will look like the draft, but it won't add as much detail; the closer to 1.0 you get, the more the second pass will be a completely different image.
Upscaling the final image:
target_lengthsetup: set the desired length for the longest edge of the upscaled image.Quantized/GGUF models: Most consumer graphics cards can't load whole models, as most cards have 4/6/8 GB VRAM, and models are easily larger than that. If you don't have enough VRAM to load the models completely, they will be offloaded to system RAM, and if you don't have a lot of system RAM this may mean you are simply unable to generate images. One alternative that alleviates this is using quantized models. Quantization is a process in which you transform a more precise weight number that needs more storage, and therefore more memory, into a less precise number that will therefore need less storage and RAM. You can think of it like "bucketing" a more precise number into a wider bucket. Quantized models lose a bit of quality; but the best ones can still produce generally great quality images. I have been experimenting with a Krea 2 Turbo Q3 K M model, and the results have been very good. Give it a try! I have included a recommendation for a custom node to load quantized GGUF models, Molbal's ComfyUI-GGUF nodes, and I recommend using the dynamic VRAM versions of these nodes.
General notes on Krea 2 Turbo
This model has been documented as using CFG 1.0, which roughly means that negative prompts wouldn't work. Using a CFG++ sampler such as euler_ancestral_cfg_pp and setting CFG to 1.2 allows us to have a negative prompt, but bear in mind that this model is different from SD/SDXL, and won't generally work very well with high weights. CFG greater than 1.2-ish is likely to result in images looking "overcooked," and setting weights greater than 1.2-ish ((thin eyebrows:2.0)) probably will not get you good results. I would generally advise you to stick to the positive prompt, and try to describe things in as many detail as you can, and avoid creating a long tag-like negative prompt. Or you can just ignore this, go for it, and report back that you had great success. I don't know, I'm not the boss of you.
What can come next?
Possible next steps to improve the workflow:
Prompt enhancement (Extended)
Face detailer (Extended)
General detailer (Maybe for a future version of Extended, or an alternative workflow)
If you have any suggestions, feel free to ask!
Tested with
Versions
ComfyUI: 0.33.3
Frontend: 1.49.6
Templates: 0.11.44
Python: 3.14.7
PyTorch: 2.13.0+cu130
Description
V1: 2-Pass Image generation with optional SeedVR2 upscaling
FAQ
Comments (1)
yes, I do this all the time!!!

