Pixel Anchored Remaster (Nukun)
Remaster your Anima images without the pixel soup
- image
- model
- positive
- negative
- vae
- final_image
- downscaled_image
- remaster_latent
- seed
- settings_report
"Pixel Anchored" is doing a lot of work in this name, and it's the whole idea: instead of the usual upscale-then-redraw, this node downscales your image first, remasters it in the latent, and then blends the remastered result back over the original pixels. The original stays as an anchor, so the remaster adds detail without drifting into a different image. That's a genuinely different answer to "my image is soft, make it better" - and it's tuned specifically for Anima, the Cosmos-based anime model that's famously fussy about artifacts.
The context that matters: Anima (Circlestone's 2B DiT) produces soft, sometimes artifact-heavy outputs, and upscaling Anima the SDXL way - latent upscale then full redraw - tends to smear or hallucinate. This node's approach is to calm the source first: downscale it in pixel space, encode with a tiled VAE, upscale the latent, run a low-denoise pass, and blend. Downscaling before the remaster pass is the same trick the KB's upscaling doc recommends for soft sources - "there is no detail to recover at full resolution; rebuild from a sharper-relative base."
How it works
pixel_scale (default 0.9) downscales the image in pixel space before it ever touches the VAE. Lower values calm artifacts more but drift further from the source. pixel_method chooses the downscale filter - area is the default and is right for this; nearest-exact/bilinear/bicubic/lanczos are there for taste. The downscaled image goes through a tiled VAE encode (vae_tile_size 1024, vae_overlap 64 - the tiling is what keeps a big Anima canvas from OOMing), gets upscaled in the latent (latent_upscale_method, default bislerp), and a low-denoise pass runs - default denoise 0.16, steps 12, cfg 2.5, euler/simple.
use_reference_latent (on by default) attaches the downscaled encoded image as a reference latent for identity/detail stability - this is what stops the remaster from wandering into a different character. Then remaster_blend (0.35) decides how much of the remastered image blends over the original. Lower preserves the input more; this is the "how brave am I" knob.
Outputs: final_image, the downscaled_image (handy for A/B), the remaster_latent if you want to sample further yourself, seed, and a settings_report string. The seed feeds the low-denoise pass and has control-after-generate, so you can reroll the remaster without touching anything else.
Installing it
Standard pack install:
cd ComfyUI/custom_nodes
git clone https://github.com/OnekoSL/Nukun_ComfyUI_Nodes.git
Restart, or use ComfyUI Manager (search "Nukun"). No companion packages - the tiled VAE is ComfyUI core, not Ultimate SD Upscale or TiledKSampler. The pack's requirements.txt (numpy, Pillow, scipy, PyWavelets) covers it.
Common issues
The default denoise of 0.16 is low by design, and people who crank it to 0.5+ immediately lose the point of the node - at high denoise you're not remastering, you're regenerating from a noisy latent, and the blend will fight the anchor. If output looks unchanged, raise remaster_blend rather than denoise. If it looks like a different person, lower pixel_scale toward 1.0 (less drift) and lower denoise. And don't expect this to add fine texture to a genuinely low-res source - the KB's rule applies here too: remastering can't invent detail that wasn't in the source, which is exactly why the node downscales first.
Inputs (18)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| model | MODEL | — | |
| positive | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| vae | VAE | — | |
| seed | INT | 00–18446744073709550000 | Seed used by the low-denoise remaster pass. |
| pixel_scale | FLOAT | 0.900.25–1 | Pixel-space downscale before latent remastering. Lower values calm artifacts more but drift more. |
| pixel_method | COMBO | area | 5 options: area, bicubic, nearest-exact, bilinear, lanczos |
| latent_upscale_method | COMBO | bislerp | 5 options: nearest-exact, bilinear, area, bicubic, bislerp |
| steps | INT | 121–10000 | — |
| cfg | FLOAT | 2.50–100 | — |
| sampler_name | COMBO | euler | 44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38 |
| scheduler | COMBO | simple | 9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3 |
| denoise | FLOAT | 0.160–1 | — |
| remaster_blend | FLOAT | 0.350–1 | Amount of remastered image blended over the original pixel anchor. Lower values preserve the input more. |
| vae_tile_size | INT | 102464–4096 | — |
| vae_overlap | INT | 640–4096 | — |
| use_reference_latent | BOOLEAN | true | Attach the downscaled encoded image as a reference latent for identity/detail stability. |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| final_image | IMAGE | — |
| downscaled_image | IMAGE | — |
| remaster_latent | LATENT | — |
| seed | INT | — |
| settings_report | STRING | — |