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.

ItemValue
Model size4.9 MB
Scale factor
Input sizeFixed 128×128; larger images are split into tiles
LicenseBSD-3-Clause (model weights)
ONNX exportQualcomm 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:

VersionWhen to use itSize
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
In most cases you don't need to choose manually. The app picks the right version based on device capabilities. You only need to switch by hand if you know exactly what you're doing — for example, forcing a specific version on a machine without WebGPU.

Technical details

ItemValue
Input sizeFixed 512×512, whole image in one pass (no tiling)
Input tensor nameinput_image
Output tensor nameoutput_image
Output formUnactivated logits; sigmoid is applied to get a 0–1 alpha
PreprocessingDirect resize to 512×512 (no letterbox), ImageNet mean/std normalization
LicenseMIT

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.

The output tensor name was a gotcha. BiRefNet has multiple ONNX exports, and different exporters name the output differently. Testing confirmed both revisions here use 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

ModelSource
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.