Abstract
Machine learning techniques work best when the data
used for training resembles the data used for evaluation.
This holds true for learned single-image denoising algorithms, which are applied to real raw camera sensor readings but, due to practical constraints, are often trained on
synthetic image data. Though it is understood that generalizing from synthetic to real images requires careful consideration of the noise properties of camera sensors, the other
aspects of an image processing pipeline (such as gain, color
correction, and tone mapping) are often overlooked, despite
their significant effect on how raw measurements are transformed into finished images. To address this, we present a
technique to “unprocess” images by inverting each step of
an image processing pipeline, thereby allowing us to synthesize realistic raw sensor measurements from commonly
available Internet photos. We additionally model the relevant components of an image processing pipeline when
evaluating our loss function, which allows training to be
aware of all relevant photometric processing that will occur after denoising. By unprocessing and processing training data and model outputs in this way, we are able to train
a simple convolutional neural network that has 14%-38%
lower error rates and is 9×-18× faster than the previous
state of the art on the Darmstadt Noise Dataset [31], and
generalizes to sensors outside of that dataset as well.