Models
The site runs two open-source models. Both use permissive MIT / BSD-style licenses and may be used commercially.
Upscaling: Real-ESRGAN
The upscaler is Real-ESRGAN General x4v3, a 4× super-resolution model. Real-ESRGAN was proposed by Xintao Wang et al. It targets degraded images from the real world — compression artifacts, mild blur, noise — rather than super-resolution under ideal conditions only.
| Item | Value |
|---|---|
| Model size | 4.9 MB |
| Scale factor | 4× |
| Input size | Fixed 128×128; larger images are split into tiles |
| License | BSD-3-Clause (model weights) |
| ONNX export | Qualcomm AI Hub |
Because the input is a fixed 128×128, larger images are cut into 128-pixel tiles, inferred one by one, then stitched back together. The seams need some overlap and blending, otherwise a grid pattern shows up — this is the standard approach in super-resolution apps.
Cutout: BiRefNet
The cutout model is BiRefNet (Bilateral Reference Network), a dichotomous image segmentation model. BiRefNet was proposed by Peng Zheng et al. It does well across several saliency and matting datasets, particularly on high-frequency edges such as hair and fur.
Choosing between the two versions
The UI offers two options, but this is not a difference in quality — it is a difference in compatibility:
| Version | When to use it | Size |
|---|---|---|
| BiRefNet Lite Default |
Use this one normally. It handles hair, fur and other fine detail well — good enough for almost any photo. | 94 MB (fp16) |
| BiRefNet Full Fallback |
Only used when your device has no WebGPU. Results are essentially the same as Lite, but the file is far larger and much slower. | 452 MB |
Technical details
| Item | Value |
|---|---|
| Input size | Fixed 512×512, whole image in one pass (no tiling) |
| Input tensor name | input_image |
| Output tensor name | output_image |
| Output form | Unactivated logits; sigmoid is applied to get a 0–1 alpha |
| Preprocessing | Direct resize to 512×512 (no letterbox), ImageNet mean/std normalization |
| License | MIT |
The mask resolution caps at 512×512. When the source image is larger, edge accuracy is limited by the mask resolution rather than by the model's capability. A note under the result panel explains this.
output_image
(not the more common logits). The code is defensive: if the registry name doesn't match, it falls
back to the sole output or infers it from the shape.
Where the weights come from
| Model | Source |
|---|---|
| Real-ESRGAN x4v3 | Committed under public/models/ and deployed with the site |
| BiRefNet Lite | studioludens/birefnet-lite-512 on HuggingFace |
| BiRefNet Full | naddy24/birefnet-512-webgpu on HuggingFace |
HuggingFace paths are mutable, so the code pins an exact commit revision — the model that works today is still the same model tomorrow. Upgrading a model means changing that revision constant.