Skip to main content

DeepLens: differentiable optical lens simulator for end-to-end cameras.

Project description

DocsTutorialsCommunity

DeepLens is a differentiable optical lens simulator. It is developed for (1) differentiable optical design, (2) end-to-end optics-vision co-design, and (3) photorealistic image simulation. DeepLens helps researchers build custom differentiable optical systems and computational imaging pipelines with minimal effort.

Mission

  1. Next-generation optical design software enhanced by differentiable optimization.
  2. Next-generation computational cameras integrating optical encoding with deep learning decoding.

Features

  1. Differentiable Optics. DeepLens leverages gradient backpropagation and differentiable optimization, demonstrating outstanding optimization power compared to classical optical design.
  2. Automated Lens Design. Enables automated lens design using curriculum learning, optical regularization losses, and GPU acceleration.
  3. Hybrid Refractive-Diffractive Optics. Supports accurate simulation and optimization of hybrid refractive-diffractive lenses (e.g., DOEs, metasurfaces).
  4. Accurate Image Simulation. Delivers photorealistic, spatially-varying image simulations, verified against commercial software and real-world experiments.
  5. Optics-Vision Co-Design. Supports end-to-end differentiability from optics, sensor, and ISP to vision algorithms, enabling comprehensive optics-vision co-design.

Additional features (available via collaboration):

  1. Polarization Ray Tracing. Provides polarization ray tracing and differentiable optimization of coating films.
  2. Non-Sequential Ray Tracing. Includes a differentiable non-sequential ray tracing model for stray light analysis and optimization.
  3. Kernel Acceleration. Achieves >10x speedup and >90% GPU memory reduction with custom GPU kernels across NVIDIA and AMD platforms.
  4. Distributed Optimization. Supports distributed simulation and optimization for billions of rays and high-resolution (>100k x 100k) diffractive computations.

Applications

1. Automated lens design

Fully automated lens design from scratch. Try it with AutoLens!

paper quickstart

AutoLens AutoLens

2. End-to-End lens design

Lens-network co-design from scratch using final images (or classification/detection/segmentation) as objective.

paper

End2End

3. Implicit Lens Representation

A surrogate network for fast (aberration + defocus) image simulation.

paper link

Implicit

4. Hybrid Refractive-Difractive Lens Model

Design hybrid refractive-diffractive lenses with a new ray-wave model.

report

Implicit

Installation

Clone this repo:

git clone https://github.com/singer-yang/DeepLens
cd DeepLens

Create a conda environment:

conda create -n deeplens_env python=3.12
conda activate deeplens_env

# Linux and Mac
pip install torch torchvision
# Windows
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu128

pip install -r requirements.txt

or

conda env create -f environment.yml -n deeplens_env

Run the demo code:

python 0_hello_deeplens.py

DeepLens repo is structured as follows:

DeepLens/
│
├── deeplens/
│   ├── optics/ (optics simulation)
|   ├── sensor/ (sensor simulation)
|   ├── network/ (network architectures)
|   ├── ...
|   ├── geolens.py (refractive lens with ray tracing model)
|   ├── diffraclens.py (diffractive lens with wave optics model)
|   └── your_own_optical_system.py (your own optical lens)
│
├── 0_hello_deeplens.py (code tutorials)
├── ...
└── write_your_own_code.py

Community

Join our Slack workspace and WeChat Group (singeryang1999) to connect with our core contributors, receive the latest industry updates, and be part of our community. For any inquiries, contact Xinge Yang (xinge.yang@kaust.edu.sa).

Contribution

We welcome all contributions. To get started, please read our Contributing Guide or check out open questions. All project participants are expected to adhere to our Code of Conduct. A list of contributors can be viewed in Contributors and below:

Citation

If you use DeepLens in your research, please cite the paper. See more in History of DeepLens.

@article{yang2024curriculum,
  title={Curriculum learning for ab initio deep learned refractive optics},
  author={Yang, Xinge and Fu, Qiang and Heidrich, Wolfgang},
  journal={Nature communications},
  volume={15},
  number={1},
  pages={6572},
  year={2024},
  publisher={Nature Publishing Group UK London}
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

deeplens_core-1.3.0.tar.gz (374.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

deeplens_core-1.3.0-py3-none-any.whl (449.5 kB view details)

Uploaded Python 3

File details

Details for the file deeplens_core-1.3.0.tar.gz.

File metadata

  • Download URL: deeplens_core-1.3.0.tar.gz
  • Upload date:
  • Size: 374.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.16

File hashes

Hashes for deeplens_core-1.3.0.tar.gz
Algorithm Hash digest
SHA256 6ddd100163e956e2fc41517bf7169cbc4a193498b76d4b32044c8cb9c06a4c35
MD5 7a1cd2165e69415407eec142d3fa27b5
BLAKE2b-256 e995d6b3cad5d0fbb9cddfa2b4b5b73a4883ba8581d0b72805c07eff6accffaa

See more details on using hashes here.

File details

Details for the file deeplens_core-1.3.0-py3-none-any.whl.

File metadata

  • Download URL: deeplens_core-1.3.0-py3-none-any.whl
  • Upload date:
  • Size: 449.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.16

File hashes

Hashes for deeplens_core-1.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 386236ac24a34ff0e2b2fe06f9694affc503db13853f707553c289a6bedbe8d7
MD5 e815ce8262e67b9a719d9d0b540e67e3
BLAKE2b-256 9f20b6b2d18cdf2b424453acd716fb28d8b7cb82ef6ef8dd80e178b1924d6e52

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page