Python Tool · DIPL

Deep Image Prior Linear

Denoising with no training data. A randomly-initialized neural network is fitted to your single linear image and stopped at the exact moment it has learned the structure but not yet the noise. Nothing can be hallucinated from a training set that does not exist.

No training data Linear images, photometry preserved CUDA and Apple Silicon MIT, free
Arp 176 · HST ACS/WFC

Before and after

Drag across the image to compare. Two 390 s F606W exposures, 15.5 megapixels, denoised in one full-frame fit. Both sides share the same display stretch, computed on the input. The background galaxies come out of the grain, and the satellite trail crossing the field survives untouched: real structure stays, only the noise goes.

Arp 176 after DIPL denoising Arp 176 linear input before denoising
Input DIPL
The idea

Your photons only

Every AI denoiser you know is a network trained on thousands of images: it denoises your picture with priors learned from other people's pictures. Deep Image Prior (Ulyanov et al. 2018) has no training set at all. The network starts from random weights and is fitted, from scratch, to your single image. Real structure gets learned fast, noise gets learned slow. Stop at the right moment and the noise never makes it in.

The problem

Seven years of failures

On linear astronomical data the textbook method breaks three ways. The loss only sees the bright pixels. The noise is Poisson-Gaussian, not white. And there is no ground truth to tell you when to stop, which with this method is everything. For seven years it only ever worked on stretched images and small crops.

Method

The three fixes, then a blend

1

Stabilize the variance

The loss is computed after a Generalized Anscombe Transform, so faint veils and bright cores weigh the same in the fit.

2

Fit the full frame

No tiles, no seams: the whole image gets one coherent optimization. A 16 Mpx frame needs a datacenter GPU; smaller images run on consumer hardware.

3

Stop without ground truth

ES-WMV (Wang et al. 2023) watches the moving variance of the output itself and detects the structure-to-noise transition, plus a warm-up guard against false early minima.

4

Blend the original back

Pure DIP output looks synthetic. The final image is 0.55*denoised + 0.45*original in linear space: natural grain, photometry safe.

Arp 176 · 1:1 native resolution

The satellite galaxy, pixel for pixel

A 700 px crop at native HST resolution on the clumpy satellite of NGC 4933. The star-forming knots come out of the grain one by one, and the two edge-on background galaxies sharpen up. This field is the hardest of the series: it used the full 25 000-iteration budget.

One honest detail: at 1:1 scale the very faintest stars can fade in the pure DIPL output, because point sources at the noise level are the last thing the network learns. More iterations bring them back, and the final blend re-injects part of them anyway.

Arp 176 satellite galaxy after DIPL denoising, 1:1 crop Arp 176 satellite galaxy before denoising, 1:1 crop
Input DIPL
Arp 70 · 1:1 native resolution

The galaxy core, pixel for pixel

The core of the Arp 70 spiral at native resolution. Spiral arms, dust lanes and HII regions stay exactly where they are; only the grain between them goes. ES-WMV stopped this fit on its own at iteration 23 935.

Nothing here was sharpened or enhanced: the output is the raw linear result of the fit, displayed with the same stretch as the input.

Arp 70 galaxy core after DIPL denoising, 1:1 crop Arp 70 galaxy core before denoising, 1:1 crop
Input DIPL

Real runs, real timings

FieldStop iterationWall time
Arp 7023 935 (early stop)4 h 52
Arp 17625 000 (cap)6 h 10
Arp 18018 124 (early stop)3 h 34
Arp 25514 605 (early stop)5 h 31
Arp 29318 000 (cap)6 h 32

HST ACS/WFC fields around 15 Mpx, one NVIDIA H200. The JSON sidecar of every run (all parameters, the selected iteration, the timings) is published in the repository under docs/runs/.

Honest limits

  • Slow by design: hours per frame at HST scale. A quality tool, not a batch tool.
  • VRAM scales with area, about 9 GB per megapixel at full frame.
  • Mono images; process color channels separately.
  • Very faint stars need iteration budget; see the 1:1 note above.

Run it on linear data after gradient removal (DBE), then blend, then stretch and finish as usual. The device is auto-detected: CUDA, Apple Silicon (MPS) or CPU, no flag to set.

Against the other denoisers

Same field, four strategies

A faint region of Arp 70 at native resolution: no denoising, NoiseXterminator, AstroSURE (a Noise2Noise network trained on HST exposure pairs) and DIPL blended with the original. For a fair comparison every panel is brought to the same photometric frame and displayed with the same stretch, computed on the reference. NoiseXterminator is unbeatable on speed and excellent on ordinary fields. On faint diffuse structure, DIPL is the one I trust: there is nothing it could hallucinate from.

Arp 70 faint region compared across four denoising strategies
Open source

Code, parameters and discussion

The full engine, the exact recipe used on every image of this page, and the run sidecars are on GitHub under an MIT license. The story behind the seven years, and the community discussion, is on Cloudy Nights.

View on GitHub Read the discussion