ONNX Model Zoo

SebRincon/nafnet-realestate

By SebRincon · ↓ 0 · ♥ 0 · Updated 2025-12-14

What's in this repo

This page lists the files in SebRincon/nafnet-realestate, including nafnet_realestate.onnx, nafnet_realestate_colorft_3h_fp16.onnx, nafnet_realestate_colorft_3h_fp32.onnx.

  • 3 ONNX models (.onnx files)
  • 123 files, including 114 .jpg, 3 .onnx, 2 .pth, 2 .data, 1 .md
  • Last updated 2025-12-14

ONNX files

File Size Download
nafnet_realestate.onnx — Download
nafnet_realestate_colorft_3h_fp16.onnx — Download
nafnet_realestate_colorft_3h_fp32.onnx — Download

How to use

These ONNX files can be loaded with ONNX Runtime. To inspect a model graph, upload the file to the Netron viewer. Download links point to the original files on Hugging Face.

README

NAFNet Real Estate Enhancement

A fine-tuned NAFNet model for enhancing real estate photography. Trained on 577 before/after image pairs to improve lighting, color, and overall image quality.

Model Details

Metric Value
Architecture NAFNet (width=32)
Parameters 29.2 million
Model Size 111 MB (FP32) / 56 MB (FP16)
Training Time 5 hours
Training Images 577 pairs
Final PSNR 21.69 dB
Final SSIM 0.8968

Available Formats

Format File Size Use Case
PyTorch nafnet_realestate.pth 117 MB Training, fine-tuning
ONNX nafnet_realestate.onnx 117 MB Cross-platform deployment
Core ML Convert from ONNX ~56 MB iOS/macOS apps

Performance Benchmarks

Tested on 100 high-resolution real estate images (avg 7.25 megapixels):

Timing

Metric Value
Average per image 4.0 seconds
Throughput 0.25 images/second
Megapixels/second 1.81 MP/s

Memory Usage

Resource Usage
RAM 581 MB total
GPU VRAM 8.3 GB peak

Scaling by Resolution

Resolution RAM GPU Time
1080p (2.1 MP) 150-250 MB ~2.5 GB ~1.2s
1440p (3.7 MP) 250-400 MB ~4.3 GB ~2.0s
3K (7.3 MP) 500-800 MB ~8.3 GB ~4.0s
4K (8.3 MP) 600-900 MB ~9.5 GB ~4.6s

Usage

PyTorch

import torch
from PIL import Image
import numpy as np

# Load model
model = NAFNet(img_channel=3, width=32, middle_blk_num=12,
               enc_blk_nums=[2, 2, 4, 8], dec_blk_nums=[2, 2, 2, 2])
checkpoint = torch.load("nafnet_realestate.pth", map_location="cpu")
model.load_state_dict(checkpoint["params"])
model.eval()

# Process image
img = Image.open("input.jpg")
img_tensor = torch.from_numpy(np.array(img)).permute(2, 0, 1).unsqueeze(0).float() / 255.0

with torch.no_grad():
    output = model(img_tensor)

output_img = (output.squeeze(0).permute(1, 2, 0).numpy() * 255).astype(np.uint8)
Image.fromarray(output_img).save("enhanced.jpg")

ONNX Runtime

import onnxruntime as ort
import numpy as np
from PIL import Image

sess = ort.InferenceSession("nafnet_realestate.onnx")
img = np.array(Image.open("input.jpg")).astype(np.float32) / 255.0
img = img.transpose(2, 0, 1)[np.newaxis, ...]

output = sess.run(None, {"input": img})[0]
output_img = (output[0].transpose(1, 2, 0) * 255).astype(np.uint8)
Image.fromarray(output_img).save("enhanced.jpg")

Mobile Deployment (iOS)

All resolutions fit within typical mobile RAM budgets (3-4 GB):

  1. Convert ONNX to Core ML on macOS:
pip install coremltools
python convert_on_mac.py
  1. Add .mlpackage to Xcode project
  2. Use Vision framework for inference

Training

  • Framework: BasicSR + PyTorch
  • Base Model: NAFNet-SIDD-width32 (pretrained on denoising)
  • Loss: L1 + Perceptual (VGG19)
  • Optimizer: AdamW (lr=1e-3)
  • Iterations: 12,000

License

Apache 2.0

Citation

@article{chen2022simple,
  title={Simple Baselines for Image Restoration},
  author={Chen, Liangyu and Chu, Xiaojie and Zhang, Xiangyu and Sun, Jian},
  journal={arXiv preprint arXiv:2204.04676},
  year={2022}
}

Links

Model info

image-to-image pytorch
pytorch onnx image-enhancement real-estate photo-enhancement nafnet image-restoration coreml ios image-to-image en dataset:custom
↓ 0 ♥ 0

Created: 2025-12-13

Updated: 2025-12-14

View on Hugging Face

Files (123)

.gitattributes
README.md
eval/colorft_3h_latest_val_triptychs/0000_0000.jpg
eval/colorft_3h_latest_val_triptychs/0001_0001.jpg
eval/colorft_3h_latest_val_triptychs/0002_0002.jpg
eval/colorft_3h_latest_val_triptychs/0003_0003.jpg
eval/colorft_3h_latest_val_triptychs/0004_0004.jpg
eval/colorft_3h_latest_val_triptychs/0005_0005.jpg
eval/colorft_3h_latest_val_triptychs/0006_0006.jpg
eval/colorft_3h_latest_val_triptychs/0007_0007.jpg
eval/colorft_3h_latest_val_triptychs/0008_0008.jpg
eval/colorft_3h_latest_val_triptychs/0009_0009.jpg
eval/colorft_3h_latest_val_triptychs/0010_0010.jpg
eval/colorft_3h_latest_val_triptychs/0011_0011.jpg
eval/colorft_3h_latest_val_triptychs/0012_0012.jpg
eval/colorft_3h_latest_val_triptychs/0013_0013.jpg
eval/colorft_3h_latest_val_triptychs/0014_0014.jpg
eval/colorft_3h_latest_val_triptychs/0015_0015.jpg
eval/colorft_3h_latest_val_triptychs/0016_0016.jpg
eval/colorft_3h_latest_val_triptychs/0017_0017.jpg
eval/colorft_3h_latest_val_triptychs/0018_0018.jpg
eval/colorft_3h_latest_val_triptychs/0019_0019.jpg
eval/colorft_3h_latest_val_triptychs/0020_0020.jpg
eval/colorft_3h_latest_val_triptychs/0021_0021.jpg
eval/colorft_3h_latest_val_triptychs/0022_0022.jpg
eval/colorft_3h_latest_val_triptychs/0023_0023.jpg
eval/colorft_3h_latest_val_triptychs/0024_0024.jpg
eval/colorft_3h_latest_val_triptychs/0025_0025.jpg
eval/colorft_3h_latest_val_triptychs/0026_0026.jpg
eval/colorft_3h_latest_val_triptychs/0027_0027.jpg
eval/colorft_3h_latest_val_triptychs/0028_0028.jpg
eval/colorft_3h_latest_val_triptychs/0029_0029.jpg
eval/colorft_3h_latest_val_triptychs/0030_0030.jpg
eval/colorft_3h_latest_val_triptychs/0031_0031.jpg
eval/colorft_3h_latest_val_triptychs/0032_0032.jpg
eval/colorft_3h_latest_val_triptychs/0033_0033.jpg
eval/colorft_3h_latest_val_triptychs/0034_0034.jpg
eval/colorft_3h_latest_val_triptychs/0035_0035.jpg
eval/colorft_3h_latest_val_triptychs/0036_0036.jpg
eval/colorft_3h_latest_val_triptychs/0037_0037.jpg
eval/colorft_3h_latest_val_triptychs/0038_0038.jpg
eval/colorft_3h_latest_val_triptychs/0039_0039.jpg
eval/colorft_3h_latest_val_triptychs/0040_0040.jpg
eval/colorft_3h_latest_val_triptychs/0041_0041.jpg
eval/colorft_3h_latest_val_triptychs/0042_0042.jpg
eval/colorft_3h_latest_val_triptychs/0043_0043.jpg
eval/colorft_3h_latest_val_triptychs/0044_0044.jpg
eval/colorft_3h_latest_val_triptychs/0045_0045.jpg
eval/colorft_3h_latest_val_triptychs/0046_0046.jpg
eval/colorft_3h_latest_val_triptychs/0047_0047.jpg
eval/colorft_3h_latest_val_triptychs/0048_0048.jpg
eval/colorft_3h_latest_val_triptychs/0049_0049.jpg
eval/colorft_3h_latest_val_triptychs/0050_0050.jpg
eval/colorft_3h_latest_val_triptychs/0051_0051.jpg
eval/colorft_3h_latest_val_triptychs/0052_0052.jpg
eval/colorft_3h_latest_val_triptychs/0053_0053.jpg
eval/colorft_3h_latest_val_triptychs/0054_0054.jpg
eval/colorft_3h_latest_val_triptychs/0055_0055.jpg
eval/colorft_3h_latest_val_triptychs/0056_0056.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0000_0000.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0001_0001.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0002_0002.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0003_0003.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0004_0004.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0005_0005.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0006_0006.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0007_0007.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0008_0008.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0009_0009.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0010_0010.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0011_0011.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0012_0012.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0013_0013.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0014_0014.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0015_0015.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0016_0016.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0017_0017.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0018_0018.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0019_0019.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0020_0020.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0021_0021.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0022_0022.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0023_0023.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0024_0024.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0025_0025.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0026_0026.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0027_0027.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0028_0028.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0029_0029.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0030_0030.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0031_0031.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0032_0032.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0033_0033.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0034_0034.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0035_0035.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0036_0036.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0037_0037.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0038_0038.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0039_0039.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0040_0040.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0041_0041.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0042_0042.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0043_0043.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0044_0044.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0045_0045.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0046_0046.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0047_0047.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0048_0048.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0049_0049.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0050_0050.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0051_0051.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0052_0052.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0053_0053.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0054_0054.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0055_0055.jpg
eval/quadtych_colorft_3h_latest_vs_baseline_val/0056_0056.jpg
nafnet_realestate.onnx ONNX
nafnet_realestate.pth
nafnet_realestate_colorft_3h.pth
nafnet_realestate_colorft_3h_fp16.onnx ONNX
nafnet_realestate_colorft_3h_fp16.onnx.data
nafnet_realestate_colorft_3h_fp32.onnx ONNX
nafnet_realestate_colorft_3h_fp32.onnx.data

Related models