Nodes/Eric_Image_Processing_Nodes/Comprehensive Method Comparison
ComfyUI Node

Comprehensive Method Comparison

Six restoration methods, one grid, one honest report

By EricRollei·Created 9 months ago·Updated 8 months ago· 9
Comprehensive Method Comparison
  • image
  • comparison_grid
  • best_result
  • detailed_report
methods_to_comparescunet,swinir,real_esrgan,wavelet
comparison_scale2
enable_metricstrue
time_analysistrue
create_gridtrue
device_preferenceauto

Rather than guess which restoration method suits your image, this node runs several of them at once - SCUNet, SwinIR, Real-ESRGAN, wavelet denoising, frequency-domain enhancement, and bilateral filtering - and hands you a comparison grid, PSNR/SSIM numbers, processing-time breakdown, and a recommendation. It's a benchmarking tool as much as a restoration node, and it earns its keep specifically when you're deciding what to reach for, not when you already know.

What it's actually comparing

Read the method list carefully, because it splits cleanly into two groups with very different reliability. Wavelet, frequency, and bilateral are classical algorithms with zero setup requirements - they always run, and their results in the comparison are exactly what you'd get from them standalone. SCUNet, SwinIR, and Real-ESRGAN are neural methods that depend on pretrained weights being present in the pack's models/ folder; none of them auto-download in the current code. If those weights aren't there, the comparison still runs - it just silently scores an untrained network against the classical methods, and an untrained network losing badly to wavelet denoising on PSNR isn't a fair fight, it's a missing-file problem wearing a benchmark's clothing.

That matters because _select_best_result picks a winner by SSIM score when metrics are enabled, and falls back to a fixed preference order (SwinIR, Real-ESRGAN, SCUNet, frequency, wavelet, bilateral) when they aren't. If your neural methods are running unweighted, that preference order can hand you a "best result" that's actually the worst-performing option in the set, just because it's a name higher on a hardcoded list.

Inputs and outputs that matter

  • methods_to_compare - comma-separated: scunet,swinir,real_esrgan,wavelet,frequency,bilateral, or all for every method. Trim this to just what you have working weights for, or just the classical trio, if you want a fair comparison.
  • comparison_scale - 1 for enhancement only, 24 for upscaling comparison.
  • enable_metrics (default on) - computes PSNR/SSIM against an upscaled reference; leave this on, it's the whole point.
  • create_grid (default on) - builds a labeled visual comparison image.

Outputs: comparison_grid (IMAGE), best_result (IMAGE, the metric-selected or preference-ordered winner), and detailed_report (STRING) with per-method success/failure, metrics, timing, and recommendations.

Installing it

Through ComfyUI Manager, search Eric's Image Processing Nodes. By hand:

cd ComfyUI/custom_nodes
git clone https://github.com/EricRollei/Eric_Image_Processing_Nodes
cd Eric_Image_Processing_Nodes
pip install -r requirements.txt

Restart ComfyUI. Wavelet, frequency, and bilateral work immediately. SCUNet and SwinIR need their .pth weights manually sourced and placed in models/ - see this pack's SCUNet and SwinIR articles for exact filenames and download links - and Real-ESRGAN needs its own model file the same way.

Where people get burned

The single biggest trap: running the full all comparison on a fresh install, seeing SwinIR or SCUNet flagged as the winner, and trusting it without checking detailed_report for whether that method's PSNR/SSIM actually beat the classical methods by a believable margin. If a neural method "wins" with metrics barely better (or worse) than wavelet denoising, that's your signal its weights probably aren't loaded - a properly-weighted SCUNet or SwinIR should visibly outperform bilateral filtering on anything but the cleanest source image.

Practical fix: run the comparison first with methods_to_compare set to just wavelet,frequency,bilateral to get a fair classical baseline, confirm your neural weights are in place separately (run SCUNet or SwinIR standalone once and check the console log for load confirmation), then re-run the full comparison once you trust every entrant is actually competing on equal footing.

CategoryEric's Image Processing

Inputs (7)

NameTypeDefaultDescription
imageIMAGE
methods_to_compareSTRINGscunet,swinir,real_esrgan,waveletComma-separated list of methods: scunet, swinir, real_esrgan, wavelet, frequency, bilateral Or 'all' for complete comparison
comparison_scaleCOMBO2Upscaling factor for comparison: • 1: Enhancement only • 2-4: Super-resolution comparison
enable_metricsoptBOOLEANtrueCalculate quantitative comparison metrics
time_analysisoptBOOLEANtrueInclude processing time analysis
create_gridoptBOOLEANtrueCreate comparison grid image
device_preferenceoptCOMBOautoProcessing device preference

Outputs (3)

NameTypeDescription
comparison_gridIMAGE
best_resultIMAGE
detailed_reportSTRING