A round-trip through the camera pipeline to fix noisy photos
CycleISP learns the camera pipeline in both directions to synthesize realistic training pairs for denoising, sidestepping the cost of capturing real noisy datasets.

What it does
CycleISP is a learned model of the camera imaging pipeline that runs both directions: an RGB2RAW branch converts clean sRGB images to RAW, and a RAW2RGB branch maps them back. By injecting realistic shot and read noise into the intermediate RAW data, it generates synthetic clean/noisy image pairs for training denoising networks. The authors used this pipeline to train a denoiser that reportedly achieves state-of-the-art results on real benchmarks, using roughly one-fifth the parameters of the prior best RAW denoising method.
The interesting bit
Instead of assuming simple additive white Gaussian noise, the framework models how noise actually propagates through a camera’s signal processing chain. The same bidirectional design also generalizes to unrelated tasks—specifically color matching in stereoscopic cinema—suggesting the learned pipeline captures something fundamental about how cameras transform light.
Key highlights
- Bidirectional
RGB2RAWandRAW2RGBnetwork branches. - Noise injection module adds realistic shot and read noise at the RAW stage.
- Trained denoiser reportedly achieves SOTA on real benchmarks (DND and SIDD).
- Model uses ~5× fewer parameters than the previous best RAW denoising approach.
- Authors also demonstrate use for color matching in stereoscopic cinema.
Caveats
- Dependency stack is pinned to PyTorch 1.1, CUDA 9.0, and Ubuntu 16.04, so modern environments may need coaxing.
- Models, sample images, and full results are distributed through multiple separate Google Drive links rather than a unified package.
Verdict
Researchers building denoisers that must survive contact with real camera sensors should take a look. If you just need a drop-in denoiser and do not care how the training data was synthesized, the authors’ later work—such as Restormer or MIRNet—may be more convenient.
Frequently asked
- What is swz30/CycleISP?
- CycleISP learns the camera pipeline in both directions to synthesize realistic training pairs for denoising, sidestepping the cost of capturing real noisy datasets.
- Is CycleISP open source?
- Yes — swz30/CycleISP is an open-source project tracked on heatdrop.
- What language is CycleISP written in?
- swz30/CycleISP is primarily written in Python.
- How popular is CycleISP?
- swz30/CycleISP has 574 stars on GitHub.
- Where can I find CycleISP?
- swz30/CycleISP is on GitHub at https://github.com/swz30/CycleISP.