An extension for Forge Neo and ComfyUI

Local image generation,
minus the busywork.

Image Bench cuts the corners of the standard Stable Diffusion WebUI workflows. Batches, model comparisons, picking the best images, upscales and edits all happen in one window built around your images, and the whole process gets an order of magnitude more fun.

01 — Tour

Twelve tabs, one window.

Image Bench is the window you work in. It runs Forge Neo or ComfyUI in the background, in a tab of its own, and drives it for you. Click through the tabs.

Image Bench — Generate
Image Bench Generate tab
01Generate

The controls you touch most, in one compact screen and synced both ways with Forge Neo or ComfyUI: prompt, model, LoRAs, sampling, size and Hires. fix. Switch between txt2img, img2img and Inpaint, and follow a batch on the session filmstrip.

02 — Workflow

One gallery, two trays and a ring of actions.

A generated still life on an image card
parameters send trays delete generate

The Generated tab

Every image you generate lands here, grouped by batch, with its prompt, seed and model attached. Explorations and upscales get tabs of their own, and every image remembers how it was made. While a batch runs, a filmstrip in the Generate tab follows it too.

The trays

Drag the ones that matter into the Concept tray or the Image tray. Trays persist, take color markings and comments, and are saved with your project.

The action rim

Middle-click any image and a ring of actions opens around it: reuse image parameters, upscale it, send it to img2img, ControlNet or your editor. Hold the button, release it on a sector, and that action runs.

No file manager. No clipboard.

Upscaling one image.

Now multiply by every image you keep.

Six steps → one key.

In the WebUI
  1. 01Find the image in the file system
  2. 02Copy its seed and prompt back into the UI
  3. 03Enable Hires. fix
  4. 04Generate
  5. 05Disable Hires. fix
  6. 06Randomize the seed again
In Image Bench

Press U pointing to the image in a tray.

Or click Upscale on its action rim. Seed, prompt and Hires. fix are handled for you, and the result lands in the Upscaled tab.

Generate with stepsG

Provide a list of step counts and the image is rerun at each, same seed and prompt, to see where more steps stop paying off.

Upscale with denoisingD

Upscale it at several denoising strengths in one go and keep the one that adds detail without redrawing the image.

03 — Prompt history

Compare your prompt with the ones before it.

The Generate tab remembers the last 20 prompts you generated with. Each of them gets a numbered button above the prompt field. Click a number to see that prompt as a diff against the one you have now: removed text is struck through, added text is highlighted.

The prompt field showing an earlier prompt as a diff: a removed phrase struck through in red, the new phrase highlighted in green. Above it are the history buttons, the Variants dropdown and the fork button
1

Generate as usual. Each generation adds its prompt and negative prompt to the list. If you generate with a pair that is already anywhere in the list, that entry moves back to the front.

2

Read the changes by phrase. Prompts are split at commas and line breaks, and phrases are matched with their weights ignored. A phrase you reworded is compared word by word.

3

Go back with the Use button. It copies the selected prompts back into their fields. The list is saved with your project and comes back when you open it.

4

Fork the prompts worth keeping. Older prompts drop off the list. The fork button next to Diff saves the selected one as a named variant, which stays until you remove it. Variants are compared and used just like history entries.

04 — Editors

Built for precision. Your editor draws the masks.

Image Bench has no inpainting brush, on purpose. Masks come only from a real graphics editor: make a selection in Photoshop, Krita or GIMP and send it. The image, mask or reference goes straight into Forge Neo or ComfyUI, and the result comes back as a new layer.

This needs the Image Bench plugin for your editor. Download it from the built-in manual (Library › Manual › Editors) and install it in Photoshop, Krita or GIMP.

PhotoshopKritaGIMP 3
image · mask · reference result as a new layer
Image BenchForge Neo · ComfyUI

Selections become masks

Feather and refine with real tools, at full resolution, and send the selection as the inpaint mask.

Any target

Send to the input image, a reference, a ControlNet unit (preprocessed or as is) or the Compare tab.

Back as layers

Send to Photoshop, Krita or GIMP from any image. Results arrive as layers, ready to blend.

The Mask pane of the Generate tab: the mask with its bounding box dashed and the crop outlined in orange. The factor list is open at ×1.5, and the size reads 608×592
Inpainting · Only masked

Keep the aspect ratio of the inpainting area.

Inpainting with Only masked doesn't regenerate the whole image. The model works on a crop around the mask, enlarged to the generation size, and the result is scaled back into place. If that size has a different shape than the crop, the area you inpaint may end up distorted.

The factor button in the Mask pane sets the generation size from the bounding box of your selection, so the working image has the same aspect ratio as the area around the mask. You only pick how much to enlarge it during the inpainting: at ×1.5, a 400-pixel selection is generated at 600 pixels, rounded to a multiple of 16. In the pane, the dashed box is the mask and the orange one is the padded area that gets regenerated.

05 — Compare

One region, every image.

Draw a region once and it applies to every image in the Compare tab. Zoom and pan stay in sync, even across different resolutions. The crops line up in a grid you can reorder and export as one PNG, so you can tell two samplers or ten LoRA weights apart at a glance.

euler
dpm++ 2m
lora 0.6
lora 1.0
06 — Projects

Save the workspace. Pick it up next week.

A project is a folder that keeps everything an image took: the trays, the generation parameters, the ControlNet inputs, the prompt history and the final image. Save it when you stop, open it when you come back, and the bench is set up as you left it.

The Projects tab: the project tree at the left, and the project still-life with its final image of peonies and fruit, the parameter snapshot, notes and the saved concept tray
1 2 3
1

Keep projects in folders. Any folder under your project root, on a local disk or a network share. Find projects by name, prompt, #tag or host.

2

Everything in one place. The final image, a snapshot of the parameters, notes, and the image tray, concept tray and Compare images. Apply to Generate brings only the parameters back.

3

Save when you are done. The project chip in the tab bar shows the open project and its unsaved changes. You can restore parameters or trays only without opening a project first, or merge tray contents to the existing project.

07 — ComfyUI

Drive your ComfyUI workflow from the Generate tab.

Image Bench works with the workflow you have open in ComfyUI. It finds the nodes it needs, sets their widgets and queues the workflow, the same way you would by hand. Where the graph has several candidates for a role, a marker in the node title tells it which one to use.

Load Diffusion Model ib:cp
MODEL
unet_namekrea2_dev.safetensors
weight_dtypedefault
Load CLIP
CLIP
clip_nameqwen_3_4b.safetensors
typeflux2
Load VAE
VAE
vae_nameflux2-vae.safetensors
ib:ref:0
IMAGEMASK
ib:ref:1
IMAGEMASK
Empty Latent
LATENT
width1216
height832
batch_size1
Prompt ib:pp
modelclipMODELCLIPtext
A magazine-quality still life photograph, a glass vase with peonies, oranges and a cut apple on a walnut table…
CLIP Text Encode
cliptextCONDITIONING
Negative ib:np
clipCONDITIONING
blurry, lowres, watermark
Image Stitch
image1image2IMAGE
directionright
VAE Encode
pixelsvaeLATENT
KSamplerSelect
SAMPLER
sampler_nameeuler
Sampler ib:smp
noiseguidersamplersigmaslatent_imageoutputdenoised
CFGGuider
modelpositivenegativeGUIDER
cfg1.0
Reference Latent
conditioninglatentCONDITIONING
RandomNoise
NOISE
noise_seed1048213
BasicScheduler
modelSIGMAS
schedulersimple
steps8
denoise1.00
Upscale Latent By
samplesLATENT
upscale_methodnearest-exact
scale_by1.50
Hires. fix sampler ib:smp:1
modelpositivenegativelatent_imageLATENT
steps8
cfg1.0
denoise0.40
VAE Decode
samplesvaeIMAGE
VAE Decode
samplesvaeIMAGE
Hires. fix ib:hr
on_trueon_falseIMAGE
switchtrue
Save Image
images
filename_prefixComfyUI
The Generate tab, its controls mapped to the marked nodes of the workflow
node found by the marker in its title node found by following the sampler's inputs

Works without markers

A plain txt2img workflow needs no setup. Image Bench uses the first KSampler and the first two text encoders in the graph, then follows the sampler's inputs to the seed, steps, CFG, sampler, schedule and size. This works in KSampler and SamplerCustomAdvanced graphs, and the search passes through Reroutes and subgraphs.

When you need markers

With two samplers or several Load Image nodes in a graph, Image Bench can't tell them apart, so you add a marker such as ib:smp:1 or ib:ref:0 to the node title. The checkpoint list, Hires. fix, img2img and inpaint, references, ControlNet units and LoRA exploration always need their marker. If the workflow has no node for a control, the Generate tab hides that control.

Your graph stays as you built it

Image Bench changes the widget values you would change by hand. It doesn't add nodes or rewire links. Support for a custom loader or sampler goes into node_config.json, and the extension ships example workflows with every node already marked.

ib:cpcheckpoint ib:pp ib:npprompts ib:smpsampler ib:smp:1 ib:hrHires. fix ib:img ib:maskimg2img, inpaint ib:ref:Nreferences ib:cn:NControlNet units ib:loraLoRA exploration
08 — Screens

Made for a small second screen.

Image Bench fits its whole UI into 1200×800. Put it on a small display above your main monitor and give the big screen to your graphics editor. Generate, pick and send images up there, and paint down here.

1200 × 800is all it needs. Dense controls, no wasted space, nothing hidden behind scrolling.
1920 × 1080stays free for Photoshop, Krita or GIMP, where the precision work happens.
one screen?Keep Image Bench in a window next to the editor. It works the same.
Image Bench · 1200 × 800
A still life open in a graphics editor
Image Bench on the small display
your editor · 24″ · 1920 × 1080
09 — Install

Two minutes to set up.

recommended

Install from URL

  1. In Forge Neo, open Extensions › Install from URL.
  2. Paste the repository URL:
https://github.com/GChristensen/sd-webui-image-bench
  1. Press Install, then Extensions › Installed › Apply and restart UI.

Updates come through Extensions › Installed › Check for updates.

Manual clone

Clone it into the extensions folder of Forge Neo and restart it.

$ cd <forge-neo>/extensions
$ git clone https://github.com/GChristensen/sd-webui-image-bench

Update later with git pull in the extension folder. Your settings, trays and presets live in store/ and survive updates.

Then open it with the 🔬 Image Bench button, or go straight to http://<host>/image-bench/app. The full manual is built in under Library › Manual. If you are new to Image Bench, start with the tutorial, which walks through the common workflows with screenshots.

10 — In action

See it in action.

Image generation, use of ControlNet, model exploration, image comparison, inpainting, editing — and the window never switches.

Image Bench — demo · 1:26
11 — Status

Still an experiment.

Image Bench is a work in progress. Features change, the hosts it drives change under it, and things will break now and then. Try it, keep your projects backed up, and stick to the backend version that still works.