Show HN: Torch Lens Maker – PyTorch 기반 미분 가능한 기하 광학
요약
PyTorch를 기반으로 미분 가능한 기하 광학을 구현한 오픈 소스 Python 라이브러리 Torch Lens Maker를 소개합니다. 광학 요소를 신경망의 레이어처럼 취급하여 자동 미분과 수치 최적화를 통해 최적의 렌즈 및 거울 형상을 설계할 수 있습니다.
핵심 포인트
- PyTorch의 자동 미분을 활용한 미분 가능한 광학 시뮬레이션 제공
- 광학 시스템을 신경망 레이어 구조와 유사하게 설계 가능
- GPU 가속 및 최첨단 수치 최적화 알고리즘 적용 가능
- 렌즈 설계 과정을 신경망 학습 과정과 동일한 메커니즘으로 처리
Appearance
Torch Lens Maker
Torch Lens Maker에 오신 것을 환영합니다. 이 라이브러리는 PyTorch를 기반으로 하는 미분 가능한 기하 광학 (differentiable geometric optics)을 위한 오픈 소스 Python 라이브러리입니다. 현재 매우 실험적인 프로젝트 단계이며, 목표는 현대적인 컴퓨터 코드와 최첨단 수치 최적화 (numerical optimization)를 사용하여 복잡한 실제 광학 시스템 (렌즈, 거울 등)을 설계할 수 있도록 하는 것입니다.
python
import torchlensmaker as tlm
optics = tlm.Sequential(
tlm.ObjectAtInfinity(beam_diameter=10, angular_size=20),
...
이 프로젝트의 핵심은 *미분 가능한 기하 광학 (differentiable geometric optics)*입니다. 즉, 3D 충돌 감지 (collision detection)와 광학 법칙이 PyTorch로 구현되어 있습니다. PyTorch는 세계적인 수준의 자동 미분 (automatic differentiation)을 제공하며, GPU 지원을 갖춘 최첨단 수치 최적화 알고리즘에 접근할 수 있게 해줍니다.
핵심 아이디어는 신경망 (neural network)의 레이어 (layer)와 소위 순차적 (sequential) 광학 시스템의 광학 요소 (optical elements) 사이에 강력한 유사성이 존재한다는 것입니다. 일련의 렌즈, 거울 등으로 구성된 복합 광학 시스템이 있다면, 각 광학 요소를 신경망의 레이어처럼 취급할 수 있습니다. 이 네트워크를 통해 흐르는 데이터는 이미지, 소리, 또는 텍스트가 아니라 빛의 광선 (rays of light)입니다. 각 레이어는 내부 파라미터 (표면 형상, 굴절 물질 등)에 따라, 그리고 매우 비선형적인 스넬의 법칙 (Snell's law)을 따라 광선에 영향을 미칩니다. 추론 (Inference), 즉 순방향 모델 (forward model)은 주어진 입력 광에 대해 시스템의 출력 광을 계산하는 광학 시뮬레이션입니다. 학습 (Training), 즉 최적화 (optimization)는 우리가 원하는 곳에 빛을 모으기 위한 렌즈의 최적 형상을 찾는 과정입니다.
| 신경망 (Neural Network) | 광학 시스템 (Optical system) |
|---|---|
| 데이터 (Data) | 이미지, 텍스트, 오디오 |
| 레이어 (Layers) | Conv2d, Linear, ReLU |
| 손실 함수 (Loss Function) | 레이블된 예시에 대한 예측 오차 |
놀라운 점은 우리가 torch.nn과 nn.Module을 거의 직접적으로 사용할 수 있다는 것입니다. 마치 Conv2d나 ReLU를 쌓는 것처럼 렌즈와 거울을 쌓을 수 있습니다.
그런 다음, 전체 시스템을 표준 PyTorch의 optimize()에 통과시켜 매개변수화된 표면(parametric surfaces)의 최적값을 찾습니다. 렌즈를 설계하는 과정은 놀랍게도 신경망 (Neural Network)을 학습시키는 것과 매우 유사합니다! 일단 이것이 구현되면, 자동 미분 (Automatic Differentiation), 최적화 알고리즘 (Optimization Algorithms), 합성 가능성 (Composability), GPU 학습 (GPU Training), 분산 학습 (Distributed Training) 등 현대 오픈 소스 머신러닝 도구들의 강력한 기능을 '공짜로' 얻게 됩니다.
게다가 build123이나 OpenSCAD 같은 소프트웨어를 사용해 본 결과, 코드를 작성하는 것이 기계적 3D 시스템을 설계하는 매우 강력한 방법이라고 굳게 믿게 되었습니다. 이 프로젝트는 광학 시스템 (Optical Systems)을 대상으로 그 가능성을 탐구하는 작업입니다.
준비가 되셨다면, 언제든 들어와서 예제들을 살펴보시기 바랍니다.
코드 작성을 시작하려면 '시작하기 (getting started)'를 참조하세요.
실험적인 프로젝트입니다!
이 프로젝트는 매우 초기 단계에 있습니다. API는 안정적이지 않으며 예고 없이 변경될 것입니다. 안정적인 릴리스는 아직 먼 미래의 일입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 HN Design Systems의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기