Comparing JoyAI Image Edit Plus (Patreon)
Downloads
Content
Video: https://youtu.be/I8ccEfJS_9M
Overview
ComfyUI now supports both JoyAI Image Edit and JoyAI Image Edit Plus, so I figured why not add that one in and see how it does against some others? Personally, I've gone for the INT8 models, as the full-size versions are rather large at over 30GB each!
On top of that, I found a Flux Klein 4b INT8-ConvRot version which is nice and fast to compare with. If you're OK with non-free models, then the larger 9b model could also be used.
One BIG problem with JoyAI is the resolutions it can handle - which for the most part is only 1024x1024 for precise edits. Go outside that resolution and you'll get image shifts, but using masks can help. If you're not doing precise edits and don't mind things shifting around, you're still generally limited to 1k sizes. There also isn't a distilled version yet, so the 30+ steps at CFG4 can take quite a while!
That being said, JoyAI Image Edit Plus can roughly equal Qwen Image Edit, or maybe even do a bit better sometimes.
3 Image Example:
Along with the prompt:
"Edit Image 1. Remove the trees in the background (behind the wall) in Image 1 and replace them with the ocean scene from Image 2. Attach the sign from Image 3 to the white wall behind the woman, below her arm and to the right, but remove the fingers from the sign. Keep the photographic style of Image 1."
Then JoyAI follows the prompt quite well:
For Qwen with the 8-step Lightning LoRA, enabling CFGNorm + PreCFG and changing to CFG1.5 does a good job of both the sign and the coastline, with only a slight "softening/blurring" of the unedited regions:
Workflow Information
Being a workflow rather than any special coding, you can use any models ComfyUI's nodes support - such as BF16, MXFP8 or INT8-ConvRot. I'm using the INT8s because they quickly provide high quality results on my 3090.
To load the workflow, drag the .json file into Comfy, or use File -> Open.
Shortcuts are also available:
Model Files
Comfy has most of these files, but a couple are from non-Comfy sources:
The JoyAI Image Edit Plus models come from the original developer's Huggingface page, with the Flux-2-Klein-4b-int8-convrot simply being one of a number of conversions I found on Huggingface (though a number of them didn't actually work, whereas this one did). If Comfy eventually do their own version, that would be a great option too!
Custom Nodes
Fewer custom nodes than last week, as a recent Comfy update broke NegPIP ;) As usual custom nodes for ComfyUI can be installed using Manager or the normal git clone commands:
A standard local install of ComfyUI is suggested, and you'll need the very latest version for the current level of node support:
Do NOT enable the Nodes 2 Beta as ComfyUI doesn't work well in that mode... yet!
Model Loaders
The model loaders have various model-specific nodes and options such as LoRA loaders, CFGNorm, etc:
Select which model you'd like to use first:
There are now 5 models to choose from, including 3 "Editing" options. This makes it super easy to compare and contrast the various models. Krea-2 is great for text, styles and refiners/upscaling, whilst Qwen Image Edit can use canny / pose / depth, for example.
The "Engine" now has a couple of groups to handle Flux Klein, because every model wants to do things differently...
Klein has 2 groups and its own scheduler too. I've wired in two images for Klein, but you can just rinse and repeat if you want 3 (or more) images:
There is also a size calculator, because the Klein scheduler needs those details...
... with the scheduler itself being in the Ksampler group:
Flip the "Use Flux2Scheduler?" switch to TRUE if you want to use it. Results are fairly similar to the beta scheduler, but generally it is the best option for Klein. Feel free to try it with other models too (though it doesn't work too well with Krea)!
Control Panel
The control Panel is where you can easily enable or disable the various groups:
Note that some options only work with some models - such as the "Krea-2 Conditioning Rebalancing. For Klein, the image encoding is done via the "Klein Images" group bypass:
When using JoyAI, it is best to enable BOTH Pos(itive) and Neg(itive) encode options. If you don't the image will look kinda over-sharp.
Check the in-workflow notes for more information.
Image Loading
You can load up to 3 images (though Klein is only wired for 2 by default):
Resize your images as you'd like using the Resize Image V2 node - it has a lot of options!
Qwen Image Edit can use things such as pose, depth and canny images which can be created via the All-In-One Aux Preprocessor options.
Klein can sort of handle preprocessed images too, but not like Qwen Image Edit can do and it needs different prompts.
For example:
Qwen:
"A female cyberpunk warrior relaxing at home, cinematic film still style."
Klein:
"A female cyberpunk warrior relaxing at home, cinematic film still style. *Use the structure, lines, and layout of image1 as a composition guide*."
JoyAI can't handle them at all.
If you want to use Automated rather than Manual masks, flip the switch and enter your auto-mask prompt. The threshold and iterations values can be adjusted too in the SAM3 Detect node.
Prompting
Positive and negative prompt options are available:
JoyAI isn't a distilled model, and so uses the negative prompt by default.
KSampler
The KSampler features Detail Daemon for some fine-tuning goodness, notes for JoyAI, and the Flux2Scheduler option.
With the detail_amount at 0 it is basically disabled, so increase or decrease that value as you desire.
JoyAI don't have distilled models yet, so CFG4 30+ steps there. Yes - it takes a while... It may also be better with the normal scheduler over simple.
Klein 4b is good at 4 steps.
Output
The output section features 3 options, the main one being the standard, default VAE output:
If using Qwen, Krea or JoyAI, then you can get a 2x upscale via the 2x VAE output:
Or, for 1-step 4x output, the INT8 version of SeedVR2 is the 3rd option:
Refiners
Refiners 1 & 2 give you your choice of model for the upscale / refiner passes:
Change the Ksampler settings for either refiner to your favourite settings:
The default values are very light, keeping images similar to the original result. Different models also work differently given the step count, sampler, scheduler and denoise values.
Refiners also feature automated detection for the same model being used:
This means if you use Qwen Image Edit to start with, and then you also choose Qwen Image Edit again in either refiner, the original conditioning will be used in order to maintain likenesses, poses etc from your initial result. This can be especially handy if Refiner 1 uses a different model, as Refiner 2 can then use the original conditioning again (along with any input images).
Note that JoyAI isn't good at high (read: anything other than 1024x1024) resolutions!
Re-Prompter
If you started with an Edit model, such as Qwen, then you may wish to use the Re-Prompter:
For the most part, even if you have an editing prompt such as "Remove the cat on the left" then low denoise and low step refiner passes will still work OK. If you find your editing prompt causes problems with your chosen refiner settings, the Re-Prompter can be enabled and hopefully that will work better!
Ultimate Upscale
If you're looking to do some minimal refining, then the Ultimate Upscale group is great:
Image Compare
Compare images to more easily see any differences. As with any group, you can change the inputs in the GET nodes.
Enjoy! :)