OUTPUT · model INPUT · raw scan
← All work

Computer Vision · Custom Model

schillyCL — Image Restoration Model

Year2026
TypeSelf-directed tool
RoleML Engineer

Overview

schillyCL is a custom restoration model that cleans degraded scans — removing paper grain, yellowing and halftone artifacts while restoring black ink lines, without a general-purpose upscaler smearing away the detail that matters. The scan above is the model: a scan line sweeps the frame, raw input on one side, restored output on the other.

It's fine-tuned on the Real-ESRGAN / RRDBNet architecture and trained on real scan-to-digital pairs aligned by feature matching.

What I built

I wrote a custom weighted L1 loss that punishes incorrect black-pixel output three times harder than standard L1 — the failure mode that wrecks line detail and causes "line drift" in pure GAN models. For full-resolution images I built tiled inference with Gaussian blending so tiles merge with no visible seams, and a residual-diff diagnostic (a heatmap of exactly what was removed) to prove the model is doing surgery, not hallucination.

First usable results came within a week. It's in active production use for restoration work today.

RRDBNet

Real-ESRGAN backbone, 23 blocks / 64 features

×3 dark

weighted L1 prioritising correct black-ink reconstruction

Tiled

inference with Gaussian blending — seamless full-res

~1 week

from start to first in-production results

How it sees · a kernel sweep

Restoration starts with the most basic move in computer vision: a small kernel slides across the image, and at every stop it reads the pixels beneath it and weighs them into a single number. Watch the window roll — the samples fluctuate, collapse to one value, and write into a feature map on the right. Stack that idea deep enough and the network learns to tell ink from grain.

SOURCE · luminance FEATURE MAP · Σ K·X

Before / after

Degraded scan inputINPUT
Restored model outputOUTPUT

Sensor readout · luminance → glyph

Before a model restores anything, an image is just luminance, sampled. This panel renders a live scene by mapping brightness to characters — the same first step the network sees. It's the imaging idea, made literal.

GRID— × —
RAMP" .:-=+*#%@"

      
      
    
“This is amazing.”
— TCB Scans
View on GitHub ↗
Computer VisionPyTorchReal-ESRGANOpenCVPython