Downloads · 30 days
4
8% of all-time downloads
olaverse/prism-upscaler-max
prism-upscaler-max is a image-to-image model from olaverse. Use it when you need one image transformed into another. The card lists the license as apache-2.0.
Downloads · 30 days
4
8% of all-time downloads
All-time downloads
50
Public
Repo size
18.9 MB
Likes
0
Public
Click a slice to open those files.
.pt18.9 MB · 100%
From the Hugging Face model README

prism models
prism-upscaler-max upscales images to any continuous target resolution — not just fixed multipliers like 2x or 4x. Built on LIIF (Local Implicit Image Function): an RRDB encoder extracts features, and an implicit MLP decoder predicts RGB values at arbitrary continuous coordinates, with 3x3 feature unfolding and 4-corner local ensembling for artifact-free reconstruction at any scale.
Production-usable when you need to hit an exact target resolution (e.g. fitting a specific output size) rather than a fixed multiplier — the tradeoff for that flexibility is somewhat higher inference cost per output pixel compared to the fixed-scale prism-upscaler-2x/4x models.
[BEFORE / AFTER IMAGE HERE]
| Architecture | LIIF: RRDB encoder (6 blocks) + implicit MLP decoder, local ensembling |
| Feature dimension | 64 |
| Scale factor | Any (continuous, not limited to integers) |
| Input | RGB image, any resolution |
| Training data | PD12M, pxhere, cc0-textures, ambientcg (Apache/CC0-licensed) |
| Training | Mixed precision, second-order realistic degradation, random scale sampling per step |
Unlike a normal forward(x) call, this model needs a target coordinate grid and cell size, not just an input image:
from huggingface_hub import hf_hub_download
import torch, importlib.util, json
from PIL import Image
import torchvision.transforms.functional as TF
model_file = hf_hub_download(repo_id="olaverse/prism-upscaler-max", filename="model.py")
ckpt_file = hf_hub_download(repo_id="olaverse/prism-upscaler-max", filename="pytorch_model.pt")
config_file = hf_hub_download(repo_id="olaverse/prism-upscaler-max", filename="config.json")
spec = importlib.util.spec_from_file_location("model", model_file)
model_module = importlib.util.module_from_spec(spec)
spec.loader.exec_module(model_module)
config = json.load(open(config_file))
model = model_module.LIIF(**config)
model.load_state_dict(torch.load(ckpt_file, map_location="cpu"))
model.eval()
img = Image.open("input.jpg").convert("RGB")
lr_tensor = TF.to_tensor(img)
out_h, out_w = 1024, 1024 # any target resolution you want
with torch.no_grad():
feat = model.gen_feat(lr_tensor.unsqueeze(0))
coord = model_module.make_coord((out_h, out_w), device="cpu").view(1, -1, 2)
cell = torch.tensor([2.0 / out_h, 2.0 / out_w]).view(1, 1, 2).repeat(1, coord.shape[1], 1)
pred = model.query_rgb(feat, coord, cell) # chunk this loop for very large outputs
output = pred.view(1, out_h, out_w, 3).permute(0, 3, 1, 2).clamp(0, 1)
TF.to_pil_image(output[0]).save("output.jpg")
Qualitative comparison against bicubic and the fixed-scale Prism models under realistic degradation: consistently the sharpest reconstruction across tested scales, with the best texture recovery and closest visual resemblance to ground truth among all methods compared, particularly at larger scale factors where the gap over both bicubic and the fixed-scale models widens. Informal single-image testing, not a scored benchmark against a standard academic test set (Set5/Set14/etc).
Trained on PD12M (Spawning/PD12M, CDLA-Permissive-2.0), pxhere (nyuuzyou/pxhere, CC0), cc0-textures (nyuuzyou/cc0-textures, CC0), and ambientcg (nyuuzyou/ambientcg, CC0). Released under Apache-2.0.
@misc{prism-upscaler-max,
title = {prism-upscaler-max},
author = {Olaverse},
year = {2026},
url = {https://huggingface.co/olaverse/prism-upscaler-max}
}