APISR Upscale
The anime-only upscaler nobody talks about (and why it's still around)
- images
- images
APISR Upscale is the ComfyUI front end for APISR - "Anime Production Inspired Real-World Anime Super-Resolution" - and if you've never heard of it, you're normal. It's a 2024 research upscaler, from the paper's authors, that does exactly one thing: restore and enlarge anime. Not photos, not real video, anime. If that's your job, it's the specialist nobody else covers; if it isn't, you can close this tab.
Here's the wider picture. The upscaling ladder has three rungs, and APISR lives in the "more detail / repair damage" one but with a mono-culture training diet. Generic anime ESRGAN models like RealESRGAN_x4plus_anime_6B just add pixels - they can't fix a compressed screencap, they can only sharpen it. SeedVR2 and friends repair anything but are general-purpose and heavy. APISR was trained on genuinely degraded anime frames, so it's the model that knows what old anime artifacts look like and rebuilds around them.
The node itself is a thin wrapper, about as thin as wrappers get. One class, four inputs, one output. And despite the name being kijai's, it's worth saying who that is: kijai is one of the most prolific ComfyUI node authors out there (WanVideoWrapper, KJNodes, the GGUF loader everyone uses). The pack's last commit is from April 2024 and it's basically dormant - it works, it just isn't being developed. That's the honest framing, not a bug.
How it works
Feed it an image, it loads the checkpoint you pick and runs it. The mechanism detail that matters: the scale isn't an input - it's baked into which model file you select. The node reads the filename and branches: anything with "RRDB" in the name loads the 2x RRDB generator (Real-ESRGAN lineage), anything with "GRL" loads the 4x GRL transformer from the paper. That's the trap most people hit. Rename 4x_APISR_GRL_GAN_generator.pth to myupscale.pth and the node matches neither branch, loads nothing, and you get a crash with zero explanation. Keep the stock filenames.
Under the hood it caches the loaded model in memory keyed to the checkpoint and dtype, floors your input dimensions to a multiple of 8 (and silently resamples if they aren't), runs in torch autocast, and shoves the model back to CPU after each run to free VRAM.
The inputs that matter
- ckpt_name - pick from your
upscale_modelsfolder. This is also your scale selector, as above. - images - any IMAGE tensor; batch processing is fine.
- per_batch (default 16) - how many images are pushed through at once. Lower it if you're on a small card, raise it if you're impatient.
- dtype -
fp32orfp16, defaultfp32. fp16 is roughly half the memory at output quality you'd have to stare hard at.
Output is a single images tensor, ready to feed into a save node or further processing.
Installing it
Manager, or the manual route:
cd ComfyUI/custom_nodes
git clone https://github.com/kijai/ComfyUI-APISR-KJ
then restart ComfyUI. Dependencies are light - numpy, scipy, omegaconf, timm>=0.9.7 - no torch reinstall, no CUDA extensions. The actual model weights come from the original APISR repo, not kijai's, and they go in the standard upscale folder:
cd ComfyUI/models/upscale_models
wget https://github.com/Kiteretsu77/APISR/releases/download/v0.1.0/2x_APISR_RRDB_GAN_generator.pth
wget https://github.com/Kiteretsu77/APISR/releases/download/v0.1.0/4x_APISR_GRL_GAN_generator.pth
Gotchas worth knowing
The pack author's own README is blunt that GRL, the paper's flagship, is memory-hungry and slow for a transformer - the RRDB 2x is the practical everyday pick. GRL only supports 4x; RRDB here only does 2x. And since the model only knows anime, pointing it at a photo is a fast way to get a very confident wrong answer - that's the rung distinction from the upscaling KB biting you. For actual anime restoration it's still one of the few real options; just don't expect anyone on Reddit to be discussing it, because in the whole community corpus it shows up in about four threads.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| ckpt_name | COMBO | 0 options: | |
| images | IMAGE | — | |
| per_batch | INT | 161–4096 | — |
| dtype | COMBO | fp32 | 2 options: fp32, fp16 |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |