neural restore
Apply AI-powered restoration to selected images: raw denoise, RGB denoise, and 2x / 4x upscaling. Available in both the lighttable and darkroom views as a panel with a tabbed task picker, an interactive before/after preview, and a process button that runs the chosen task on every selected image. Outputs go to a new file β the original image is never modified.
The AI features this module drives are configured in AI preferences; see the AI features overview for what these tasks do and don’t do.
Neural restore can be significantly sped up with GPU acceleration.
πprerequisites
Before you can use this module:
- Enable AI features in AI preferences. The master switch is off in a fresh install.
- Activate a model for each task you want to use. In the same preferences tab, tick the enabled column for one model per task β
rawdenoisefor the raw denoise tab,denoisefor the denoise tab,upscalefor the upscale tab. If no model is enabled for the current tab, the preview area shows model not available and the process button refuses to run.
Switching tabs without an active model for the new task is harmless β the module just disables itself for that tab until you enable one.
πtabs
The notebook at the top of the module selects the task to run.
- raw denoise
- AI denoise applied early in the raw pipeline. The exact stage depends on the sensor:
-
- Bayer sensors are denoised directly on the CFA mosaic, with denoise and demosaic combined into a single inference pass. The result is saved as a Bayer CFA DNG.
- X-Trans sensors (and any other non-Bayer colour CFA the Bayer model can’t handle) are demosaicked first by darktable’s pipeline, then the AI denoiser operates on the resulting linear Rec.2020 RGB image. The result is saved as a LinearRaw DNG.
-
Either output can be re-imported into darktable as a regular raw β downstream darkroom processing is unchanged.
-
Limitations. Monochrome sensors are not currently supported β the available raw-denoise models are trained on colour-CFA data and have no monochrome equivalent yet. Use denoise in neural restore module on a monochrome image instead.
-
- strength β linear blend between the source raw (0%) and the AI-denoised output (100%) at the raw sensor level. Lower values let some of the original noise back in, in direct proportion.
- denoise
- Machine-learning RGB denoise applied to the already-demosaicked and mostly-edited image; writes a TIFF.
-
- strength β at 100% the output is the full AI model result. Lower values do not just blend back the source β the difference between source and denoised is decomposed into wavelet (DWT) detail bands and the higher-frequency texture is brought back selectively, so you recover grain and surface detail without re-introducing the colour noise the model removed.
- upscale
- Super-resolution to 2x or 4x the input pixel dimensions. Writes a TIFF at the upscaled size. 4x on a high-resolution image is memory-hungry; tile processing is enabled automatically to keep peak memory bounded, at the cost of some extra processing time.
-
- scale β output magnification factor (2x or 4x). Larger factors are slower and need more GPU memory.
πwhere the tasks sit in your workflow
raw denoise and denoise both remove sensor noise β the difference is at which point in the workflow you decide to apply them, and you normally use one or the other, not both:
- reach for raw denoise when you already know the shot is noisy (high ISO, deep push, low light) and haven’t started editing. It removes noise at the source, on the raw data, which is where a model can remove it most cleanly β so it gives the strongest result on difficult captures. You commit to it up front and then edit the cleaned DNG.
- reach for denoise when you have already developed an image and noise is bothering you in the result. It cleans the noise you can actually see in your finished edit, without making you redo that edit.
- raw denoise β before darkroom editing
- Operates on the source raw (Bayer CFA, or X-Trans / non-Bayer demosaicked to linear Rec.2020) and writes a DNG. The intended workflow is:
-
- select the noisy raw in lighttable;
- run raw denoise β the output DNG is grouped with the source;
- open the new DNG and edit it normally.
-
As it works with the original sensor data it removes noise most cleanly, before demosaic spreads it across the colour channels. It is the AI counterpart to the classical raw denoise module β both operate on the raw CFA data before demosaic. The original raw file stays untouched.
- denoise β late in the workflow, after darkroom editing
- Exports your image through the full darkroom pipeline (every active module is applied) and then runs the AI denoiser on the result, writing a TIFF. The intended workflow is:
-
- develop the image up to and including the step that switches the pipeline from scene-referred to display-referred space (filmic rgb, sigmoid or AgX) and any display-referred colour grading β the point where the noise visible to the viewer has emerged;
- run denoise β the output is a TIFF with the edit so far baked in, plus noise cleaned up;
- continue editing the TIFF if you want to add sharpening, local adjustments, output sizing, etc., or deliver it directly.
-
This cleans exactly the noise visible in your finished edit, without redoing any work β your edit is baked into the TIFF and you carry on from there. The trade-off: the noise is already shaped by the whole pipeline, so on a very noisy capture raw denoise gives a cleaner result. The TIFF is fully editable β a clean midpoint, not necessarily the last stop.
- upscale β last step before delivery
- Runs the full darkroom pipeline, then enlarges the result 2x or 4x and writes a TIFF. The intended workflow is:
-
- finish your edit, including any sharpening and grading;
- run upscale at the chosen factor β the output is a TIFF at the upscaled size;
- use the output for print or large-format display.
-
Don’t upscale early in the workflow: any subsequent denoise, sharpening or grading would then operate on the synthesised pixels rather than the originals, and the output quality suffers. Typical uses are enlarging a small crop for a large print, or pulling a low-resolution source up to web-deliverable size.
πpreview
Below the tab controls is a split before/after preview of a small patch of the currently-displayed image. Drag the divider to wipe between the original (left) and the AI-restored output (right). The preview is generated on demand by clicking the preview area; it uses the same model and settings the process button would use, so it’s a faithful guide to what the final output will look like.
To choose a different patch of the image, click the picker button (to the right of process) and then click within the preview widget β the preview re-generates centred on the point you clicked.
Hover over the preview to get a 2x magnified tooltip view, useful for evaluating per-pixel noise / detail behaviour.
πprocess
The process button runs the active task on every currently-selected image, in turn. Progress is reported in the status bar; each finished image lands in the output folder and (if add to the current collection is enabled) is imported into the database automatically.
If no model is active for the current task, the button refuses to run (the preview shows model not available). If the model is active but its execution provider fails to initialise β or fails on one specific image at runtime β the affected image is skipped with a message in the status bar, and the rest of the batch continues.
πoutput parameters
The collapsible output parameters section controls how the result is written to disk. Settings apply to whichever task is currently active.
- bit depth (denoise and upscale only)
- Bit depth of the output TIFF (8 bit, 16 bit, 32 bit (float)). profile (denoise and upscale only)
- Colour profile embedded in the output TIFF. image settings uses the working profile of the source image. The other entries match the standard export dialog.
- preserve wide-gamut colors (denoise only)
- When on, pixels whose colour falls outside sRGB gamut pass through the model unchanged β wide-gamut colours are preserved exactly, but those specific pixels are not denoised. When off, every pixel is denoised but wide-gamut colours may be clipped to sRGB.
- add to the current collection
- Import the output into darktable automatically when it’s written. The new image is grouped with the source image so they appear together in darktable.
- output folder
- Where the output file is written. Supports darktable variables β
$(FILE_FOLDER)(the default) writes next to the source image. Use the folder-icon button to pick a directory.
πperformance
Processing time depends on the AI acceleration backend, the image resolution, and the task. Raw denoise and 4x upscale are the most demanding. The first inference run after starting darktable also pays a one-time graph-compilation cost β see GPU acceleration, how AI works, and performance notes for the details.