Call for contributions: raw photos to train Ansel's neural denoiser #1023
Replies: 5 comments 7 replies
|
win11/wsl2/debian "python3 -m venv ansel but still an issue with file path "(ansel) olivier@tt:~/ansel-denoise$ python3 -m ansel_denoise.harvest_library --paths-file ansel-image-ids. |
|
ansel-denoise : les photos de smartphones sont rejetées parce que la procédure ne sait pas lire les données ISO |
|
I found a workaround it reads the existing ISO tag and copies it to Exif ISO |
|
I opened an issue here: aurelienpierreeng/ansel-denoise#19 |
|
You need also monochromatic raw files or just Bayer & x-trans? |

Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Ansel is getting a neural raw denoiser: a small U-Net that works directly on the raw sensor mosaic, before white balance and demosaicing, using the camera noise profiles Ansel already ships. One model covers every profiled camera — Bayer and X-Trans alike — and it's fully documented, reproducible and trained exclusively on data whose provenance is public: design documentation · training repository · integration PR.
Why a neural network at all — this is not AI-FOMO
Fine detail and noise live in the same high frequencies. Any filter that separates them by frequency — blur, median, wavelet thresholding — must destroy one to remove the other; that is not an implementation detail, it is a mathematical dead end. The only escape is to be content- and context-aware: decide from the surrounding image what is signal and what is chance. Photography has walked that road for twenty years — non-local means denoised each patch using every similar patch in the image, then BM3D perfected the idea with collaborative 3D block filtering, and BM3D has been exploited to the maximum of its abilities: it has plateaued for over a decade. A neural network is the continuation of that same lineage — context priors learned from data instead of hand-coded self-similarity — and it is today the only known way to push past the plateau. That is why Ansel trains one: necessity, not fashion.
Why this is unlike any AI denoiser you've used
Every general-purpose AI denoiser — plugins, standalone apps, cloud tools — works on developed images: demosaiced, white-balanced, tone-mapped pixels, several destructive approximations away from what your sensor measured. Ansel's denoiser is built the other way around: it is trained on non-demosaiced sensor data, as close to the actual sensor reading as a raw file allows, and it runs at that exact same point of the pipeline.
Working that early is where the payoff compounds. Noise is removed while it is still the clean, well-understood Poisson-Gaussian process that sensor physics dictates — which is why it can be synthesized exactly from Ansel's measured camera profiles instead of scraped from mismatched photo collections. And every stage downstream inherits the benefit: demosaicing interpolates real detail instead of weaving noise into maze and zipper artifacts, chromatic-aberration correction works on clean edges, and no later module has to fight amplified, correlated noise.
Because the same project controls the pipeline, the training and the deployment point, there is no domain mismatch and no intermediate approximation — the network only has to be excellent at one precisely defined job, under conditions we define. That is a promise no all-purpose denoiser can make.
What limits its quality today is the training corpus — and that's where you come in.
What we need
Clean, base-ISO (≤ 200) raw photographs: sharp, correctly exposed, rich in texture (foliage, fabric, hair, brick, gravel...), and varied. The training never uploads your photos: a local script extracts small raw tiles from them, and noise is synthesized on top from the camera profiles. Diversity is worth more than volume — we accept up to ~1000 images per person (~1.6 GB), because the corpus needs content and camera variability, not bulk from a single library. Images from rare cameras are disproportionately valuable: Fuji X-Trans, Olympus/OM, Pentax, compacts, phones shooting DNG, old CCD bodies — if your gear is unusual, your contribution matters twice.
Everything is scripted — your only real work is curation
The whole pipeline is automated (full guide on the Ansel website); expect about 10 minutes of actual effort:
sh scripts/setup_contributor.shpython3 -m ansel_denoise.harvest_library --paths-file ansel-image-files.txt --out shards/minepython3 scripts/pack_contribution.py shards/mine --handle your-namesh scripts/submit_contribution.sh <bundle.tar.gz> --url <your-link>Privacy, in plain words
The extracted tiles are 256×256 fragments of your photographs — recognizable image content. They are published in the public training corpus, so the selection step is your consent boundary: contribute only images whose content you'd be fine posting publicly. Nothing else leaves your machine — no GPS, no timestamps, no serial numbers, no file paths. The tiles are covered by a purpose-locked license (ATDL-1.1): anyone may use them with the ansel-denoise training stack to audit, reproduce and benchmark the training, or to train their own denoising models — whose weights are theirs, commercial use included — but they must never feed a training stack able to learn anything else than denoising: "style" learning and generative AI are explicitly forbidden. You keep your copyright, and you can request removal at any time.
Every contribution is recorded in a public registry — who contributed what, when — so the provenance of the whole corpus stays auditable, forever.
Questions welcome below. Thank you!
All reactions