Deep Analog: Open-Set Film Emulation with Reference-Conditioned 3D LUTs
Organizations: Rochester Institute of Technology Rochester, NY 14623
Abstract
Film emulation reproduces the look of an analog film stock on a new digital photograph. We target its open-set form -- matching any reference film frame from a single example -- with a 3D lookup table (LUT) predicted from that reference. Real-time image enhancement predicts per-image weights over a fixed bank of 3D LUTs and blends them. We show this is a gated mixture of experts and inherits its failure: trained end-to-end against reconstruction, the gate collapses onto a single expert, so a bank of K LUTs delivers the capacity of one. An entropy term, the enhancement-setting analogue of mixture-of-experts load balancing, restores utilization and recovers about 1 dB PSNR. The deeper constraint survives: a fixed LUT basis is closed-set, freezing the achievable looks at training time. We therefore discard the basis and predict a single 3D LUT as a residual from a reference image (StyleLUTNet), trained by self-supervision on procedurally generated color transforms. The conditional design removes the gate and generalizes open-set to unseen film stocks without paired data or retraining. Around this color backbone we build Deep Analog, a film-emulation pipeline that adds histogram-based tone matching and a physics-informed optical renderer -- multi-scale grain and per-channel halation driven by parameters an inverse network regresses from the reference. On 350 self-supervised pairs the color stage reaches 22.05 dB PSNR / 0.925 SSIM and the full pipeline 21.72 dB / 0.923; the color path runs in 5.2 ms at 1080p (192 FPS) and exports a portable .cube LUT for standard editing tools. A second degeneracy in conditional LUT training -- residual-scale collapse -- shares the root cause and yields a general principle: auxiliary regularization must stay subordinate to reconstruction.
Figures & tables
| Metric | V1 | V2 | V3 |
| Test PSNR (dB) | 21.27 | 22.19 | 22.16 |
| Test SSIM | 0.903 | 0.929 | 0.927 |
| Weight Entropy | 0.158 | 1.588 | 1.577 |
| Overfit Gap (dB) | 0.57 | 3.77 | 2.27 |
| Dominant LUT Wt. | 0.947 | 0.208 | 0.263 |
| Data Augmentation | — | — | ✓ |
| Configuration | PSNR | SSIM | Entropy |
|---|---|---|---|
| Full V3 | 22.16 | 0.927 | 1.577 |
| No Perceptual | 21.86 | 0.922 | 1.569 |
| No Entropy Reg. | 20.96 | 0.905 | 0.000 |
| No Diversity | 21.70 | 0.917 | 1.571 |
| L1 Only | 20.89 | 0.905 | 0.000 |
| Configuration | PSNR | SSIM | LPIPS |
|---|---|---|---|
| Naive (no processing) | 21.19 | 0.915 | 0.517 |
| StyleLUT only | 22.05 | 0.925 | 0.308 |
| + Grain | 21.82 | 0.923 | 0.415 |
| + Grain + Halation | 21.76 | 0.923 | 0.416 |
| V6 (E2E, all stages) | 21.72 | 0.923 | 0.416 |
| 1080p | 4K | |||
|---|---|---|---|---|
| Device | StyleLUT | Full | StyleLUT | Full |
| RTX 4060 (CUDA) | 5.2 | 198.9 | 12.0 | 1052.9 |
| Apple MPS | 11.1 | 510.1 | 27.7 | 1803.4 |
| CPU (Apple M-series) | 102.0 | 1783.0 | 359.4 | 6323.7 |
| Method | Params | LUTs | Conditioning | PSNR | SSIM |
|---|---|---|---|---|---|
| 3D LUT [ 1 ] | 594K | 3 33 3 | None (fixed) | 25.28 | 0.926 |
| AdaInt [ 3 ] | 620K | 3 33 3 | None (fixed) | 25.50 | 0.930 |
| SepLUT [ 4 ] | 280K | 3 1D | None (fixed) | — | — |
| StarEnhancer [ 2 ] | — | 3 33 3 | Style embedding | — | — |
| SwinLUT V3 (ours) | 28.3M | 5 33 3 | None (fixed) | 22.16 | 0.927 |
| StyleLUTNet (ours) | 82.6M | 1 33 3 | Ref. image | 22.05 † | 0.925 † |
| Evaluator | Part 1 mean | Part 2 acc. |
|---|---|---|
| E1 | 3.17 | 10/16 |
| E2 | 3.03 | 0 9/16 |
| E3 | 3.60 | 10/16 |
| E4 | 3.23 | 0 9/16 |
| Pooled | 3.26 (SD 0.94) | 38/64 = 59.4% |
Image-to-Image Translation
Image-to-image translation maps images between visual domains or modalities while preserving relevant content, structure, and semantics.
See all 115 papers