Comprehensive Method Comparison
Six restoration methods, one grid, one honest report
- image
- comparison_grid
- best_result
- detailed_report
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, orallfor 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-1for enhancement only,2–4for 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.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| methods_to_compare | STRING | scunet,swinir,real_esrgan,wavelet | Comma-separated list of methods: scunet, swinir, real_esrgan, wavelet, frequency, bilateral Or 'all' for complete comparison |
| comparison_scale | COMBO | 2 | Upscaling factor for comparison: • 1: Enhancement only • 2-4: Super-resolution comparison |
| enable_metricsopt | BOOLEAN | true | Calculate quantitative comparison metrics |
| time_analysisopt | BOOLEAN | true | Include processing time analysis |
| create_gridopt | BOOLEAN | true | Create comparison grid image |
| device_preferenceopt | COMBO | auto | Processing device preference |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| comparison_grid | IMAGE | — |
| best_result | IMAGE | — |
| detailed_report | STRING | — |