LiftHolo: Lifted Amplitude-Guided Deep Learning for Accelerated High-Quality Computer-Generated Holography
LiftHolo is a deep learning framework for holographic image super-resolution and phase-only hologram generation. It combines an efficient amplitude super-resolution branch with complex-valued convolutional networks for phase estimation and refinement, enabling high-quality hologram reconstruction with minimal parameters.
Note: This repository contains the reference implementation accompanying a manuscript currently under peer review. The associated paper has not yet been accepted. Code is provided for reproducibility and community feedback; please cite the preprint or repository if you use this code prior to official publication.
- Ultra-lightweight: ~44K parameters, suitable for real-time applications
- Hybrid architecture: Amplitude SR + complex-valued phase estimation + phase refinement
- End-to-end hologram generation: From low-resolution amplitude to high-resolution phase-only hologram
- Angular Spectrum Method (ASM): Built-in wave propagation simulation
git clone https://github.com/Arcohyp/LiftHolo.git
cd LiftHolo
pip install -r requirements.txtTrain LiftHolo on your own dataset:
python scripts/train.py \
--config configs/default.yaml \
--data-dir /path/to/your/dataset \
--val-dir /path/to/validation/set \
--output-dir ./experiments \
--epochs 30 \
--batch-size 1 \
--lr 0.001Dataset format:
your_dataset/
├── hr/ # High-resolution amplitude images (3840x2160)
│ ├── 0001.png
│ └── ...
└── lr/ # Low-resolution amplitude images (1920x1080 for x2)
├── 0001.png
└── ...
You can use public datasets like DIV2K and downsample them to create LR inputs.
After training, run inference with your checkpoint:
python scripts/inference.py \
--config configs/default.yaml \
--input data/sample.png \
--checkpoint checkpoints/liftholo_best.pth \
--output results/hologram.pngimport torch
from liftHolo import LiftHolo
# Initialize model
model = LiftHolo(scale_factor=2, amp_channels=32)
model.eval()
# Load input
lr_amp = torch.randn(1, 1, 1080, 1920) # Low-resolution amplitude
phase = torch.zeros_like(lr_amp)
# Optical parameters (from paper)
z = 0.15 # Propagation distance (m)
pitch = 3.6e-6 # SLM pixel pitch (m)
wavelength = 532e-9 # Wavelength (m)
# Forward pass
with torch.no_grad():
holophase, sr_amp = model(lr_amp, phase, z, True, pitch, wavelength, None)LiftHolo/
├── liftHolo/ # Core package
│ ├── model.py # LiftHolo model definition
│ ├── complex_layers.py # Embedded complex-valued layers
│ └── utils.py # Utility functions (ASM propagation)
├── scripts/
│ ├── train.py # Training script
│ └── inference.py # Inference script
├── configs/
│ └── default.yaml # Default configuration (paper parameters)
├── results/samples/ # Sample results
└── README.md
The default configuration uses the same optical parameters as the paper:
- Wavelength: 532 nm (green)
- SLM pixel pitch: 3.6 μm
- Propagation distance: 150 mm
- Target resolution: 3840 × 2160 (4K UHD)
- Input resolution: 1920 × 1080 (for x2 super-resolution)
If you use LiftHolo in your research, please cite this repository directly until the associated paper is officially published:
@software{liftholo2026,
title={LiftHolo: Lifted Amplitude-Guided Deep Learning for Accelerated High-Quality Computer-Generated Holography},
author={Cheng, Xirun and Liu, Yong and Wang, Quan and Liu, Xiang and Zhang, Chaofan and Gao, Zhenyu},
year={2026},
url={https://github.com/Arcohyp/LiftHolo}
}Note: A manuscript describing this work is currently under peer review. The BibTeX entry above will be updated with the official publication details once the paper is accepted.
This project is licensed under the MIT License. See LICENSE for details.