Skip to content

Commit e54fc39

Browse files
singer-yangclaude
andcommitted
docs: add per-project Citation pages, SEO metadata, and content refinements
- Add a Citation page to each project (DeepLens, End2endImaging, DiffTMM) as the last left-menu item; move DiffTMM's citation off the Overview. - SEO: inject per-page Open Graph + Twitter Card meta and a WebSite JSON-LD block (overrides/main.html), add unique per-page meta descriptions on the landing pages, a robots.txt referencing the sitemap, and theme.language. - End2endImaging Overview: add Key Features and Advanced Features sections; drop the redundant Architecture heading and keep the pipeline diagram. - DeepLens Overview: reword the use cases (differentiable optics, automated optical design, computational imaging) and relabel the diagram input as a light source. - DiffTMM Overview: add an input/output diagram, placed after the use cases. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1 parent d38c5e1 commit e54fc39

10 files changed

Lines changed: 196 additions & 15 deletions

File tree

docs/deeplens/citation.md

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
# Citation
2+
3+
If you use **DeepLens** in your research, please cite the relevant papers below.
4+
5+
**Differentiable ray tracing** was developed by the [KAUST Computational Imaging Group](https://vccimaging.org/). The first version of the differentiable ray tracer was implemented by [Dr. Congli Wang](https://congliwang.github.io/) on [Mitsuba2](https://github.com/mitsuba-renderer/mitsuba2):
6+
7+
```bibtex
8+
@article{sun2021end,
9+
title={End-to-end complex lens design with differentiable ray tracing},
10+
author={Sun, Qilin and Wang, Congli and Qiang, Fu and Xiong, Dun and Wolfgang, Heidrich},
11+
journal={ACM Trans. Graph},
12+
volume={40},
13+
number={4},
14+
pages={1--13},
15+
year={2021}
16+
}
17+
```
18+
19+
Later, Dr. Congli Wang implemented the first PyTorch version of the differentiable ray tracer ([**dO**](https://github.com/vccimaging/DiffOptics)):
20+
21+
```bibtex
22+
@article{wang2022differentiable,
23+
title={do: A differentiable engine for deep lens design of computational imaging systems},
24+
author={Wang, Congli and Chen, Ni and Heidrich, Wolfgang},
25+
journal={IEEE Transactions on Computational Imaging},
26+
volume={8},
27+
pages={905--916},
28+
year={2022},
29+
publisher={IEEE}
30+
}
31+
```
32+
33+
Currently, [Xinge Yang](https://singer-yang.github.io/) builds and maintains [**DeepLens**](https://github.com/AI4Optics/DeepLens). The automated lens design work demonstrates the capability of differentiable optics compared to classical optical design:
34+
35+
```bibtex
36+
@article{yang2024curriculum,
37+
title={Curriculum learning for ab initio deep learned refractive optics},
38+
author={Yang, Xinge and Fu, Qiang and Heidrich, Wolfgang},
39+
journal={Nature communications},
40+
volume={15},
41+
number={1},
42+
pages={6572},
43+
year={2024},
44+
publisher={Nature Publishing Group UK London}
45+
}
46+
```
47+
48+
A differentiable **ray-wave model** is introduced for simulating and optimizing hybrid refractive-diffractive lenses:
49+
50+
```bibtex
51+
@inproceedings{yang2024end,
52+
title={End-to-end hybrid refractive-diffractive lens design with differentiable ray-wave model},
53+
author={Yang, Xinge and Souza, Matheus and Wang, Kunyi and Chakravarthula, Praneeth and Fu, Qiang and Heidrich, Wolfgang},
54+
booktitle={SIGGRAPH Asia 2024 Conference Papers},
55+
pages={1--11},
56+
year={2024}
57+
}
58+
```
59+
60+
Differentiable **non-sequential** ray tracing and **polarization tracing** are developed in:
61+
62+
```bibtex
63+
@article{yang2026waveguide,
64+
title={End-to-end differentiable design of geometric waveguide displays},
65+
author={Yang, Xinge and Liu, Zhaocheng and Nie, Zhaoyu and Fan, Qingyuan and Shi, Zhimin and Bonar, Jim and Heidrich, Wolfgang},
66+
journal={arXiv preprint arXiv:2601.04370},
67+
year={2026}
68+
}
69+
```

docs/deeplens/index.md

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,21 @@
1+
---
2+
description: DeepLens is a PyTorch differentiable optical lens simulator — geometric ray tracing, diffractive wave optics, PSF computation, automated lens design, and end-to-end computational imaging.
3+
---
4+
15
# DeepLens
26

3-
DeepLens is a PyTorch-based differentiable optical lens simulator for end-to-end computational imaging, supporting multiple optical models — geometric ray tracing, diffractive wave propagation, hybrid ray-wave, and surrogate PSF networks. It can be used for end-to-end optics-algorithm co-design, gradient-based automated optical design, and synthetic dataset generation via image simulation, letting researchers rapidly prototype and optimize custom optical systems.
7+
DeepLens is a PyTorch-based differentiable optical lens simulator for end-to-end computational imaging, supporting multiple optical models — geometric ray tracing, diffractive wave propagation, hybrid ray-wave, and surrogate PSF networks.
8+
9+
DeepLens supports three main use cases:
10+
11+
- **Differentiable optics** — accurate and efficient gradient computation for optical parameters via differentiable simulation and backpropagation.
12+
- **Automated optical design** — fully automated optical design driven by gradient information and advanced optimization algorithms.
13+
- **Computational imaging** — physically accurate image simulation and end-to-end optimization with downstream image reconstruction algorithms.
414

515
DeepLens computes the point spread function (PSF) of an optical lens in a fully differentiable manner:
616

717
```
8-
Point source → [ DeepLens ] → PSF
18+
Light source → [ DeepLens ] → PSF
919
```
1020

1121
DeepLens also serves as the differentiable optics engine in an end-to-end computational imaging pipeline such as [End2endImaging](https://github.com/vccimaging/End2endImaging), where the optics, sensor, and a reconstruction network form a single differentiable graph that can be optimized jointly:

docs/difftmm/citation.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Citation
2+
3+
If you use DiffTMM in your research, please cite the accompanying paper:
4+
5+
> X. Yang, Z. Liu, Z. Nie, Q. Fan, Z. Shi, J. Bonar, and W. Heidrich,
6+
> "End-to-end differentiable design of geometric waveguide displays,"
7+
> *arXiv preprint* [arXiv:2601.04370](https://arxiv.org/abs/2601.04370) (2026).
8+
9+
```bibtex
10+
@article{yang2026waveguide,
11+
title={End-to-end differentiable design of geometric waveguide displays},
12+
author={Yang, Xinge and Liu, Zheng and Nie, Zhanghao and Fan, Qiang and Shi, Zheng and Bonar, James and Heidrich, Wolfgang},
13+
journal={arXiv preprint arXiv:2601.04370},
14+
year={2026}
15+
}
16+
```
17+
18+
DiffTMM is released under the [Apache License 2.0](https://github.com/AI4Optics/DiffTMM/blob/main/LICENSE).

docs/difftmm/index.md

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
---
2+
description: DiffTMM is a differentiable transfer matrix method (TMM) in PyTorch for multi-layer thin-film optics — GPU-batched forward simulation and gradient-based inverse design of optical coatings.
3+
---
4+
15
# DiffTMM
26

37
DiffTMM is a differentiable [Transfer Matrix Method](https://en.wikipedia.org/wiki/Transfer-matrix_method_(optics))
@@ -13,6 +17,12 @@ DiffTMM supports two main use cases:
1317
- **Inverse design** — optimize layer thicknesses (and stack geometry) end-to-end
1418
with PyTorch autograd to match measured or target optical properties.
1519

20+
DiffTMM computes the Fresnel coefficients of a multi-layer thin-film stack in a fully differentiable manner:
21+
22+
```
23+
Incident angle, wavelength → [ DiffTMM ] → Fresnel coefficients (ts, tp, rs, rp)
24+
```
25+
1626
## Why DiffTMM
1727

1828
The transfer matrix method is the standard tool for multi-layer thin-film optics,
@@ -47,6 +57,8 @@ Refractive indices can be plain numbers, complex values (with loss), or real
4757
[material names](api/material.md) (`"N-BK7"`, `"SiO2"`, `"Ag"`, …) resolved to
4858
wavelength-dependent dispersion from bundled catalogs.
4959

60+
See the [Citation](citation.md) page for how to cite DiffTMM.
61+
5062
## Getting Started
5163

5264
<div class="grid cards" markdown>
@@ -92,13 +104,3 @@ wavelength-dependent dispersion from bundled catalogs.
92104
[:octicons-arrow-right-24: See examples](examples/index.md)
93105

94106
</div>
95-
96-
## Citation
97-
98-
If you use DiffTMM in your research, please cite the accompanying paper:
99-
100-
> X. Yang, Z. Liu, Z. Nie, Q. Fan, Z. Shi, J. Bonar, and W. Heidrich,
101-
> "End-to-end differentiable design of geometric waveguide displays,"
102-
> *arXiv preprint* [arXiv:2601.04370](https://arxiv.org/abs/2601.04370) (2026).
103-
104-
DiffTMM is released under the [Apache License 2.0](https://github.com/AI4Optics/DiffTMM/blob/main/LICENSE).

docs/end2endimaging/citation.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# Citation
2+
3+
If you use **End2endImaging** in your research, please cite:
4+
5+
> X. Yang, Q. Fu, and W. Heidrich, "Curriculum learning for ab initio deep
6+
> learned refractive optics," *Nature Communications* **15**(1), 6572 (2024).
7+
> [doi:10.1038/s41467-024-50835-7](https://www.nature.com/articles/s41467-024-50835-7)
8+
9+
```bibtex
10+
@article{yang2024curriculum,
11+
title={Curriculum learning for ab initio deep learned refractive optics},
12+
author={Yang, Xinge and Fu, Qiang and Heidrich, Wolfgang},
13+
journal={Nature communications},
14+
volume={15},
15+
number={1},
16+
pages={6572},
17+
year={2024},
18+
publisher={Nature Publishing Group UK London}
19+
}
20+
```

docs/end2endimaging/index.md

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
---
2+
description: End2endImaging is a PyTorch framework for end-to-end differentiable computational imaging — joint co-design of optics, sensor, ISP, and neural image reconstruction.
3+
---
4+
15
# End2endImaging
26

37
End2endImaging models the full imaging pipeline — optics, sensor, and image processing — as a differentiable computation graph built on PyTorch. This enables gradient-based optimization of camera systems from lens surfaces all the way through neural image reconstruction.
@@ -7,8 +11,6 @@ End2end Imaging targets two main applications:
711
- **High-fidelity image simulation** — physically accurate rendering of camera captures for synthetic dataset generation and physical AI.
812
- **End-to-end optics–algorithm co-design** — joint optimization of lens surfaces and reconstruction algorithms for computational imaging.
913

10-
## Architecture
11-
1214
The imaging pipeline composes three differentiable stages — optics (DeepLens), sensor, and reconstruction network:
1315

1416
```
@@ -21,7 +23,19 @@ Scene Image → [ DeepLens ] → Spectral Image → [ Sensor ] → Raw Image →
2123
PSFNetLens
2224
```
2325

24-
See [Architecture](architecture.md) for the full module breakdown.
26+
## Key Features
27+
28+
- **End-to-End Differentiable Pipeline** — the full camera pipeline (optics, sensor, ISP, and network) as a single differentiable graph. Gradients flow from downstream task losses (reconstruction, detection, classification) back through the network, sensor noise model, and ISP into the optical design parameters, enabling hardware–software co-optimization.
29+
- **Differentiable Optics** — built on [DeepLens](../deeplens/index.md): `GeoLens`, `HybridLens`, `DiffractiveLens`, `PSFNetLens`, and `DefocusLens` for differentiable ray tracing and wave-optics simulation and design.
30+
- **Sensor & ISP Simulation** — physically accurate sensor simulation with a Bayer CFA and a read/shot-noise model, plus a composable, fully differentiable ISP pipeline (black level, white balance, demosaicing, color correction, gamma, tone mapping) where every stage is a `torch.nn.Module`.
31+
- **Neural Networks** — built-in image-reconstruction networks (`NAFNet`, `UNet`, `Restormer`) for restoring clean images from degraded captures, plus PSF surrogate networks (`MLP`, `SIREN`) for fast PSF prediction during training.
32+
33+
## Advanced Features
34+
35+
Additional capabilities, available upon request:
36+
37+
- **GPU Kernel Acceleration** — >10× speedup and >90% GPU memory reduction with custom GPU kernels across NVIDIA and AMD platforms.
38+
- **Distributed Optimization** — distributed simulation and optimization for billions of rays and high-resolution (>100k) diffractive propagation.
2539

2640
## Getting Started
2741

docs/index.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
---
2+
description: AI4Optics is a family of open-source, PyTorch-based differentiable optics tools for optical design and computational imaging — DeepLens lens simulation, End2endImaging, and DiffTMM thin-film TMM.
23
hide:
34
- navigation
45
- toc

docs/robots.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
User-agent: *
2+
Allow: /
3+
4+
Sitemap: https://ai4optics.github.io/AI4Optics-docs/sitemap.xml

mkdocs.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ docs_dir: docs
1515
theme:
1616
name: material
1717
custom_dir: overrides
18+
language: en
1819
favicon: assets/logo.png
1920
icon:
2021
repo: fontawesome/brands/github
@@ -121,6 +122,7 @@ nav:
121122
- Pupil Field: deeplens/examples/pupil_field.md
122123
- Multi-order Diffraction: deeplens/examples/multi_order.md
123124
- Diffractive Surfaces: deeplens/examples/diffractive_surfaces.md
125+
- Citation: deeplens/citation.md
124126
- End2endImaging:
125127
- Overview: end2endimaging/index.md
126128
- Get Started:
@@ -139,6 +141,7 @@ nav:
139141
- Defocus Deblur: end2endimaging/examples/defocus_deblur.md
140142
- End-to-End Lens Design: end2endimaging/examples/end2end_lens_design.md
141143
- Task-Driven Lens Design: end2endimaging/examples/task_driven.md
144+
- Citation: end2endimaging/citation.md
142145
- DiffTMM:
143146
- Overview: difftmm/index.md
144147
- Get Started:
@@ -158,4 +161,5 @@ nav:
158161
- Inverse Design: difftmm/examples/inverse_design.md
159162
- Real Materials: difftmm/examples/real_materials.md
160163
- Incoherent Films: difftmm/examples/incoherent_films.md
164+
- Citation: difftmm/citation.md
161165
- Contribute: contribute.md

overrides/main.html

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
{% extends "base.html" %}
2+
3+
{#-
4+
SEO additions injected into <head> via Material's `extrahead` block:
5+
per-page Open Graph + Twitter Card meta and a WebSite JSON-LD node.
6+
7+
Descriptions come from each page's front-matter `description:` when present,
8+
otherwise the global `site_description`. Title, URL, and image are absolute
9+
(built from `site_url`) so social scrapers and crawlers resolve them. The
10+
JSON-LD values use the `tojson` filter, which emits HTML-safe JSON strings.
11+
-#}
12+
{% block extrahead %}
13+
{% set _title = (page.title ~ " - " ~ config.site_name) if (page and page.title and not page.is_homepage) else config.site_name %}
14+
{% set _desc = page.meta.description if (page and page.meta and page.meta.description) else config.site_description %}
15+
{% set _url = page.canonical_url if (page and page.canonical_url) else config.site_url %}
16+
{% set _image = config.site_url ~ "assets/logo.png" %}
17+
18+
<meta property="og:type" content="website">
19+
<meta property="og:site_name" content="{{ config.site_name }}">
20+
<meta property="og:title" content="{{ _title }}">
21+
<meta property="og:description" content="{{ _desc }}">
22+
<meta property="og:url" content="{{ _url }}">
23+
<meta property="og:image" content="{{ _image }}">
24+
25+
<meta name="twitter:card" content="summary">
26+
<meta name="twitter:title" content="{{ _title }}">
27+
<meta name="twitter:description" content="{{ _desc }}">
28+
<meta name="twitter:image" content="{{ _image }}">
29+
30+
<script type="application/ld+json">
31+
{
32+
"@context": "https://schema.org",
33+
"@type": "WebSite",
34+
"name": {{ config.site_name | tojson }},
35+
"url": {{ config.site_url | tojson }},
36+
"description": {{ config.site_description | tojson }}
37+
}
38+
</script>
39+
{% endblock %}

0 commit comments

Comments
 (0)