RRDBNet for Low-Light Denoising + 4x Super-Resolution

An RRDBNet (ESRGAN backbone) fine-tuned for joint denoising and 4x super-resolution of low-light images. Initialized from Real-ESRGAN's RealESRNet_x4plus weights and trained with pure Charbonnier loss (no adversarial/perceptual loss) to optimize for PSNR rather than perceptual sharpness.

Model Details

  • Architecture: RRDBNet, 23 RRDB blocks, 64 features, growth channel 32
  • Scale factor: 4x
  • Loss: Charbonnier loss (eps=1e-3)
  • Training: EMA weights (decay=0.999), Adam + cosine LR schedule, 200 epochs
  • Validation PSNR: 39.58 dB

Usage

import torch
from safetensors.torch import load_file
from modeling_rrdbnet import RRDBNet
import numpy as np
from PIL import Image

model = RRDBNet(nf=64, nb=23, scale=4)
state_dict = load_file("model.safetensors")
model.load_state_dict(state_dict)
model.eval()

img = Image.open("low_light_input.png").convert("RGB")
arr = torch.from_numpy(np.array(img, dtype=np.float32) / 255.0).permute(2, 0, 1).unsqueeze(0)

with torch.no_grad():
    output = model(arr).clamp(0, 1)

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

Training Data

Trained on paired low-light noisy (LR) and clean (HR) image pairs for a joint denoising + 4x super-resolution task.

Limitations

Trained on a specific low-light dataset with compressed dynamic range (~[19,138]/255 pixel values); performance may not generalize to differently-lit or differently-exposed images without fine-tuning.

Downloads last month
-
Safetensors
Model size
16.9M params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support