Photorealistic Upscaling: Frequency Separation & Workflows
A practical guide to two-stage upscaling, frequency separation for relighting, Ultra-HD prompts, and upscaler comparison.
On this page
Photorealistic Upscaling: Frequency Separation & Workflows
TL;DR:
- Two-stage workflow: ControlNet Tile re-sample → dedicated upscaler (NMKD Superscale/SeedVR2) to avoid VRAM walls and preserve texture.
- Frequency separation nodes (Powered_JJ) preserve text and fine details during product relighting by decoupling high-frequency detail.
- Skin vs. fabric have distinct upscaling demands; no published benchmarks exist for pore preservation or weave fidelity.
Why Two-Stage Upscaling?
The RLY photorealism workflow splits the upscale into two stages: an initial re-sample pass using Xinsir ControlNet Tile with high denoise, followed by a dedicated model pass with SeedVR2 or a tile-based upscaler 1. The workflow author specifies ControlNet conditioning at strength 0.5 (start 0.35, end 0.95) with denoise 0.55 across 16 Karras steps, which preserves subject structure while allowing freedom to refine detail 1. The second stage upsamples the result — in the RLY attachment, SeedVR2 is applied to single frames at up to 4096×4096 1.
Tiled VAE encoding (tile size 512, overlap 64, batch 8) is used at both stages to stay within VRAM limits 1. The first stage also scales the image down by 0.36× with Lanczos before re-encoding, a choice the author documents but does not explain 1. The workflow notes suggest adjusting denoise and ControlNet strength in opposite directions: lower denoise plus higher ControlNet strength keeps the subject intact; higher denoise plus lower ControlNet strength gives the model more freedom to add detail 1.
Frequency Separation in Relighting
The Product Photography Relight v3 workflow uses custom ComfyUI nodes developed by Reddit user Powered_JJ to implement frequency separation natively 2. The pipeline: generate or load a product photo, segment the subject via SAM (sam_vit_b_01ec64.pth) and GroundingDINO (GroundingDINO_SwinT_OGC), generate a new background, blend the original product on top, then relight through a mask 2. The frequency separation step — a series of nodes operating at different spatial frequencies — is reported to keep finer details such as text intact after relighting 2. The pipeline was tested with epicrealism_naturalSinRC1VAE (SD 1.5) at CFG 2–3 and IC-Light conditioning at 0.15 2.
The author describes the technique as decomposing the image into a low-frequency layer (tone, lighting) and a high-frequency layer (texture, edges, fine detail), processing them separately, and recompositing 2. The IC-Light multiplier value of 0.15 appears in the workflow 2; however, no independent technical documentation verifies the optimal range for these nodes. For skin and fabric, the author states that this separation means relighting changes to tone and shadow do not overwrite the pore structure or weave pattern stored in the high-frequency layer 2; this mechanism has not been independently verified.
Ultra-HD-Details Prompt Variants
A community author tested four Ultra-HD prompt variants and documented their effects 3. The core token, "Ultra-HD-details," produced unexpectedly realistic results on an anime checkpoint that had never generated real-looking photographs before 3. Two companion variants were identified: "Ultra-HD-detailed," which the author says focuses on character directly and generates "the best possible character-graphic," and "Ultra-HD-realistic," which does what the name implies 3. Combining all three as (((Ultra-HD-details, Ultra-HD-detailed, Ultra-HD-realistic))) produced "awesome" results on anime checkpoints when paired with a LoRA, but the author warns it "kills every anime-style completely" and also "kills anime-style" on realistic checkpoints 3. The author reports all three tokens work across SD, SDXL, and Apps the same way 3. Two additional variants, "epic-Ultra-HD-details" and "epic-Ultra-HD-highlights," produced an "over-excessive overload of details" more pronounced on anime checkpoints 3.
The prompts are community-reported observations, not benchmarked or peer-verified claims. The author notes that a specific checkpoint called "something" generated futuristic artifacts; the fix was adding "changing-human:2" in the negative and "reallife-lifelike-likenes" in the positive 3.
Choosing an Upscaler Model for Skin and Fabric
The choice of upscaler model has materially different outcomes for skin versus fabric. The AbdallahAlswa80 upscaler guide categorizes models by use case 4: RealESRGAN works for general-purpose 2×–8× upscaling on real-world and synthetic images; BSRGAN handles noisy or blurry inputs better; 4x-UltraSharp is optimized for sharpness 4. SwinIR is reported to preserve fine texture details better than ESRGAN but runs slower; NMKD Superscale targets ultra-high-quality 4×–8× output but requires more VRAM 4. For ComfyUI specifically, the recommended options are Ultimate SD Upscale (Tiled Diffusion + ControlNet Tile, using ESRGAN/RealESRGAN under the hood), 4x_NMKD-Superscale for ultra-sharp results, and SwinIR-Large for fine detail 4. Commercial options include Topaz Gigapixel AI (paid, $99, reported best-in-class for faces and textures), Adobe Super Resolution (2× only, integrated into Photoshop), and Waifu2x (struggles with photorealistic images) 4.
Skin. Community-published guidance identifies Topaz Gigapixel AI as best-in-class for faces; RealESRGAN is the free alternative 4. No published comparison exists between these models specifically on pore-level skin texture preservation — the AbdallahAlswa80 guide contains no benchmarks or skin-specific test crops 4.
Fabric. No source in the research compares upscalers on textile weave fidelity. The general observation that SwinIR preserves "high-detail restoration, especially textures" 4 applies to fabric in principle, but this has not been independently verified for fabric weave patterns.
| Model | Upscale Range | Strengths | Limitations |
|---|---|---|---|
| RealESRGAN | 2×–8× | General-purpose, free, widely supported | Can introduce artifacts if overused |
| BSRGAN | 2×–8× | Better than ESRGAN on noisy/blurry images | Same category as ESRGAN 4 |
| 4x-UltraSharp | 2×–8× | Optimized for sharpness | Same category as ESRGAN 4 |
| SwinIR | Varies | Better fine-detail preservation than ESRGAN 4 | Slower than ESRGAN 4 |
| NMKD Superscale | 4×–8× | Works well with SD outputs 4 | Requires more VRAM 4 |
| Topaz Gigapixel AI | 6× | Best-in-class for faces and textures 4 | Paid ($99), closed-source 4 |
| Ultimate SD Upscale (Tiled Diffusion) | 2×–8× | Tiled processing avoids VRAM issues; works with SD 1.5/SDXL 4 | Slower than ESRGAN 4 |
Common Errors and Fixes
| Problem | What the source reports | Reported fix |
|---|---|---|
| Futuristic/sci-fi artifacts with Ultra-HD-details | Checkpoint "something" over-interprets UHD tokens | Add ["changing-human:2"] negative + ["reallife-lifelike-likenes"] positive 3 |
Monstrous faces on anime checkpoints using "realistic" | Token conflict between "realistic" and anime latent space | Avoid "realistic" prompt word; use Ultra-HD variants instead 3 |
| Good hands with no negative prompt | With "viewer's-attention" in negative, only 2/10 images had perfect hands; removing it raised the rate to 6–7/10 3 | Remove "viewer's-attention" from negative prompt 3 |
| "epic" word rendered literally in images | Token "epic" gets decoded as visible text | Add ["epic"] to negative prompt string 3 |
| Anime checkpoints generate photo frames/polaroids | Ultra-HD-realistic triggers framing concepts | Add ["photo-frame"], ["polaroid"], or ["polaroid-photo"] to negative 3 |
| Character LoRAs with few training images collapse | Undertrained LoRAs cannot stabilize on the subject | Use only well-trained LoRAs; lower LoRA weight if needed 3 |
| Children's hand LoRAs malform adult hands | LoRA trained on child anatomy conflicts with adult hand prior | Lower children's-hand LoRA weights; adult hands are less affected 3 |
FAQ
What is frequency separation in ComfyUI? A pipeline of custom nodes developed by Reddit user Powered_JJ that decomposes an image into frequency layers for separate processing 2. It allows relighting and background replacement without overwriting high-frequency detail such as text or pore structure 2.
Which upscaler is best for photorealistic skin? Topaz Gigapixel AI is identified in the community guide as best-in-class for faces and textures, but no published benchmark exists specifically for skin pore preservation 4. RealESRGAN is the free alternative recommended for real-world photos 4.
Do Ultra-HD-details prompts work on SDXL? The source author reports all three Ultra-HD variants (details, detailed, realistic) work across SD, SDXL, and Apps the same way 3. This is an unverified, single-source community claim.
Why use tiled VAE encode/decode? Tiled processing breaks the image into smaller tiles (the RLY workflow uses 512-pixel tiles with 64-pixel overlap and batch 8) to stay within VRAM limits 1. This is a standard approach in ComfyUI for large images.
Can I use SeedVR2 for single-image upscaling? The RLY workflow feeds single frames to SeedVR2VideoUpscaler at up to 4096×4096 1. The model is designed as a video upscaler (DiT architecture), and no documentation confirms optimal behaviour on static single-image input. The author uses it as a second stage after ControlNet Tile re-sampling.
What negative prompt prevents "epic" from appearing as text? The community author recommends adding ["epic"] as a word in the negative prompt to prevent the tokenizer from generating the word "epic" visibly on images 3.
Which checkpoint works best with Ultra-HD-details? The source author tested on anime checkpoints and reports consistent "awesome realistic images" results 3. On the checkpoint they call "something," the same prompt added futuristic elements unless corrected with "changing-human:2" in negative 3.
Sources
| Source | What it contributed |
|---|---|
| https://civitai.com/articles/23466 | RLY two-stage upscale workflow, model links (NMKD, Xinsir CN Tile, Lustify Endgame, SeedVR2, JoyTag) |
| https://civitai.com/articles/5393 | Product Photorelight v3 pipeline (SAM + GroundingDINO, IC-Light, frequency separation nodes by Powered_JJ) |
| https://civitai.com/articles/3538 | Ultra-HD-details prompt variants, negative prompt fixes, checkpoint-specific behavior |
| https://civitai.com/articles/13452 | Categorized upscaler guide with model recommendations and ComfyUI workflow advice |
| https://huggingface.co/xinsir/controlnet-tile-sdxl-1.0 | Xinsir ControlNet Tile model card and SDXL Tile super-resolution documentation |
| https://huggingface.co/lllyasviel/ic-light | IC-Light model page with GitHub link for foreground/background relighting |
| https://huggingface.co/fancyfeast/joytag | JoyTag image-classification model page (task: image-classification per model card) |
| https://civitai.com/models/1467390/upscalers | Curated upscaler model collection, 35+ models, 2.22 GB archive |