
1. 项目概述当光学设计遇上深度学习在计算成像领域我们一直在追求一个终极目标如何让相机“看得更清、看得更远、看得更智能”。传统的光学设计比如设计一个手机镜头或显微镜物镜是一个高度依赖专家经验和反复试错的过程。工程师们使用Zemax、Code V这类专业软件通过光线追踪模拟成千上万条光线穿过透镜组后的落点然后手动调整镜片的曲率、厚度、材料等参数以最小化像差比如球差、彗差、场曲最终得到一个“足够好”的设计方案。这个过程专业、严谨但也相对封闭和缓慢设计空间受限于工程师的经验和软件的优化算法。与此同时在图像处理的另一端深度学习已经彻底改变了我们处理图像的方式。一个训练好的神经网络可以轻松完成去噪、去模糊、超分辨率、高动态范围合成等任务效果惊人。于是一个自然而然的想法出现了我们能否将光学硬件的“前端”和图像处理的“后端”看作一个整体用数据驱动的方式进行端到端的联合优化这就是“深度镜头”Deep Lens或“计算成像系统端到端设计”的核心思想。想象一下我们不再孤立地追求镜头本身的完美成像而是设计一个“故意”产生某种特定类型模糊或畸变的镜头这种模糊恰好能被后端的一个专用神经网络完美地纠正回来。这样整体的成像质量可能远超传统单独优化的镜头。然而这个美好的愿景面临一个根本性的技术障碍梯度无法传递。深度学习的训练依赖于反向传播算法它需要计算损失函数相对于网络中每一个可调参数的梯度。在端到端设计中“网络”的第一层就是物理光学系统。要优化镜头参数我们必须能够计算“最终图像质量”相对于“镜头曲率”的梯度。这就要求整个光线追踪过程必须是“可微分”的——即光线如何与透镜表面相交、如何折射这些物理过程的微小变化必须能以数学上连续、可计算的方式影响到最终在传感器上形成的像素值。dODiffOptics正是为了解决这一核心挑战而诞生的。它不是一个简单的概念验证而是一个完整的、基于PyTorch构建的可微分光线追踪引擎。它的目标是为计算成像社区提供一个强大的工具使得研究人员和工程师能够像训练神经网络一样“训练”出一个光学系统。本文将深入拆解dO的工作原理、关键技术突破、具体实现方法以及其广阔的应用场景为你揭示下一代智能成像系统的设计方法论。2. 核心原理可微分光线追踪的数学与工程实现要理解dO首先要打破一个固有观念光线追踪是一个“黑盒”过程。在传统软件中你输入一组参数它输出一个像质评价结果如点列图RMS半径但你不知道这个结果是如何随着每个参数细微变化而变化的。dO的核心贡献就是把这个黑盒变成了一个透明的、梯度可导的计算图。2.1 从设计参数到评价函数一条可微分的链条整个优化问题的数学表述非常清晰。设我们的镜头系统由一组n维的设计参数向量 θ 描述例如所有镜面的曲率、圆锥系数、非球面系数、间距等。通过光线追踪我们得到m条采样光线在像面上的交点坐标集合 p(θ)。定义一个评价函数 ε(p(θ))用来衡量当前设计的性能例如点列图与理想点的均方误差。我们的目标就是找到最优参数 θ*最小化这个误差θ* arg min θ ε(p(θ))问题的关键在于计算梯度 ∂ε/∂θ。根据链式法则这可以分解为∂ε/∂θ (∂p/∂θ) * (∂ε/∂p)这里∂p/∂θ 是像面交点位置相对于设计参数的雅可比矩阵它完全由光线追踪的物理过程决定∂ε/∂p 是评价函数相对于交点位置的梯度这通常是一个简单的数学操作如最小二乘的梯度。dO的使命就是高效、准确地计算出 ∂p/∂θ。2.2 内存之殇为什么传统自动微分行不通最直接的想法是利用现代深度学习框架如PyTorch、TensorFlow的自动微分AD功能。我们将整个光线追踪过程从光源发出光线到与每个表面求交、折射最终到达传感器用一系列可微分的运算写出来然后让框架自动构建计算图并计算梯度。这被称为“直接反向传播”。然而这条路在复杂光学系统面前会立刻碰壁内存爆炸。为了渲染一张百万像素的图片可能需要追踪数千万甚至上亿条光线。每条光线与每个光学表面求交都需要进行迭代求解例如牛顿法。如果使用自动微分“展开”这些迭代步骤每一个中间变量迭代过程中的交点坐标、法向量等都需要被存储在计算图中以供反向传播时使用。这对于GPU内存来说是灾难性的。之前的一些工作如引用[13]就受限于此不得不减少每像素采样光线数或者将传感器图像分块处理这导致了梯度估计噪声大、优化不稳定的问题。注意这里的内存瓶颈与训练大型神经网络不同。神经网络的中间激活值虽然也大但可以通过梯度检查点等技术缓解。而光线追踪中的中间状态数量与光线数、表面数、迭代次数三者乘积相关规模极易失控且这些状态是动态生成的难以静态优化。2.3 dO的双重内存优化策略dO的巧妙之处在于它没有蛮干而是针对光线追踪的特殊性提出了两项关键的内存高效技术精准地命中了瓶颈。2.3.1 技术一可微分光线-表面求交这是解决单次求交内存问题的关键。光线与参数化表面如非球面、XY多项式曲面、B样条曲面的交点x需要求解方程f(o t*d; θ) 0其中f是表面的隐函数o和d是光线的起点和方向t是步进距离。传统可微分做法用自动微分实现牛顿迭代法。每次迭代t_{k1} t_k - f(t_k)/f(t_k)都作为计算图的一部分。这需要保存所有中间迭代的t_k和函数值。dO的做法无梯度前向求解首先使用普通的牛顿法不记录梯度快速求解出最终的交点参数t*。这个过程不构建计算图内存消耗极低。单步可微分修正得到t*后我们利用一个关键的数学洞察在解t*的邻域内函数关系是平滑的。我们执行一次且仅一次可微分的牛顿迭代t t* - f(o t* d; θ) / (d · ∇f(o t* d; θ))这里的t就是一个具有完整梯度信息相对于θ,o,d的变量。这一步在计算图中只引入一个节点内存开销微乎其微。为什么这样做是有效的因为牛顿法本身具有二次收敛性。当无梯度求解器已经找到真解t*时f(o t* d; θ)的残差已经接近机器零。那么这一次可微分迭代的修正量几乎为零t将无限接近t*并且其梯度计算也是正确的。这相当于把整个迭代求解过程的“历史”压缩成了最终状态的一个函数从而实现了内存的极致节省。实测中这种方法将求交操作的内存占用降低了约6倍。2.3.2 技术二伴随反向传播这是解决整个系统特别是结合神经网络时内存问题的策略。当评价函数 ε 是基于渲染图像I(p(θ))时例如与目标图像的MSE损失梯度公式变为∂ε/∂θ (∂p/∂θ) * (∂I/∂p) * (∂ε/∂I)直接对整个链条做反向传播需要同时保存光线追踪和图像渲染的所有中间变量内存压力巨大。dO采用的策略是“伴随法”将计算拆解为三个阶段无梯度前向渲染仅运行光线追踪和渲染生成图像I。不保存任何用于梯度计算的中介状态。图像空间梯度计算固定I计算损失函数 ε 对图像I的梯度得到“梯度图像”ΔI (∂ε/∂I)^T。这一步只涉及图像和神经网络内存可控。光学系统梯度反传将上一步得到的“梯度图像”ΔI作为“伴随光源”从传感器平面反向传播回光学系统。这个过程需要重新进行光线追踪但此时目标明确计算(∂p/∂θ)^T ΔI可以利用更高效的算法并且由于ΔI是二维的其传播过程的内存消耗远小于保存所有光线的完整历史。这种“化整为零”的策略使得dO能够处理需要海量光线采样用于高质量图像渲染的端到端优化任务而这是先前工作难以企及的。3. 引擎架构与关键实现细节dO选择PyTorch作为实现框架这带来了巨大的便利性和灵活性。研究人员可以直接将光学系统作为一个PyTorch模块嵌入到现有的深度学习训练流程中利用其成熟的自动微分、优化器如Adam和GPU加速生态。3.1 光学系统建模dO采用序列模式光线追踪这是镜头设计的标准模式。光线按照预设的表面顺序物面 - 表面1 - 表面2 - … - 像面传播每个表面只相交一次。这简化了求交计算因为不需要判断光线与哪个表面最先相交。核心流程如下光线生成根据分析需求如不同视场、不同孔径坐标在物方或像方生成光线束。顺序传播对于每条光线依次与序列中的每个光学表面进行可微分求交采用上述技术。折射计算在交点处根据斯涅尔定律计算折射方向。dO实现了考虑色散的柯西公式n(λ) A B/λ^2支持多波长仿真。折射计算本身是可微分的向量运算。光线终止光线被遮挡或发生全反射时标记为无效。3.2 两种追踪模式与图像合成dO支持两种光线追踪模式以适应不同应用场景前向模式从物平面向像平面追踪。这是镜头像差分析如生成点列图、光斑图的首选方式。光线采样可以精确控制以分析特定视场和孔径下的性能。后向模式从像平面传感器的每个像素向物平面反向追踪。这是计算机图形学中渲染真实感图像的高效方法。它通过蒙特卡洛积分来模拟复杂场景的光线传输是端到端设计中生成训练图像数据的关键。图像合成在前向模式中为了保持可微分性dO使用双线性插值将连续的光线交点p分配到离散的像素上。这确保了像素值对交点位置的微小变化是平滑、可导的。在后向模式中dO集成了一个蒙特卡洛积分器用于从复杂场景中渲染物理正确的图像支持全局光照等效果虽然论文中未重点展示但架构支持。3.3 入瞳/出瞳计算实际光学系统中存在渐晕效应即边缘视场的光线可能被镜框遮挡。dO没有采用近轴近似而是通过实际光线追踪来精确计算每个视场角下的入瞳形状和位置。具体做法是在第一片透镜表面覆盖一个高分辨率采样网格如1024x1024测试哪些采样点发出的光线能最终到达像面。这些点的集合就定义了该视场的有效入瞳。这保证了光线采样的准确性特别是在大视场和复杂光阑系统中。3.4 优化流程集成dO本身提供梯度计算而将优化算法的选择权交给用户。对于变量较少n 20的经典镜头优化问题可以采用阻尼最小二乘法它利用梯度信息构建海森矩阵的近似收敛速度快。对于变量众多的复杂问题如自由曲面优化系数可达上千个则可以采用深度学习中常用的随机梯度下降或Adam优化器。这种灵活性是传统光学设计软件所不具备的。4. 应用场景展示从经典优化到前沿探索dO的通用性使其能够应用于从传统光学设计到前沿计算成像的广泛领域。以下通过几个典型例子看看它如何解决实际问题。4.1 经典镜头设计优化案例双高斯镜头优化双高斯结构是摄影镜头中经典的设计。dO可以从一个初始的全球面设计开始将部分镜面的曲率和非球面系数设为可优化变量θ。以前向模式追踪多个视场如0°, 14°, 20°, 28°和多波长如F, d, C光的光线计算点列图的RMS半径作为评价函数 ε。 通过反向传播得到 ∂ε/∂θdO可以自动调整这些参数在数十次迭代内显著降低RMS误差达到与专业软件如Zemax优化结果相当的性能。图9的对比验证了dO光线追踪和像质评价的准确性。实操心得变量选择不要一开始就将所有参数设为变量。应先优化对像差敏感的曲率再逐步引入非球面系数来校正高阶像差。约束处理dO支持在损失函数中添加约束项如正空气间隔、最小中心厚度。对于边界约束如曲率半径不能小于某个值更简单的做法是在优化器更新参数后进行数值裁剪clipping确保物理可实现性。4.2 灵敏度分析与公差分配在镜头量产前需要进行公差分析以确定每个加工和装配误差如透镜厚度、偏心、倾斜对最终成像质量的影响程度。传统方法需要进行大量的蒙特卡洛仿真或扰动分析耗时巨大。dO为此提供了“天生”的支持。灵敏度矩阵S ∂ε/∂θ直接就是优化过程中计算的梯度矩阵的转置。S的第i行第j列元素就表示第j个制造误差参数微小变化时第i个视场评价函数的变化率。工程师可以基于此矩阵快速识别出对系统最敏感的公差项从而制定经济合理的加工精度和装配流程。4.3 自由曲面设计与焦散工程自由曲面光学是前沿方向用于产生特定的光照分布焦散。传统方法需要复杂的优化算法。dO将其转化为一个可微分渲染问题。流程参数化用B样条曲面表示自由曲面控制点系数作为优化变量θ。目标定义在目标平面上定义期望的光照图案I_target如一个LOGO。前向渲染使用平行光源照射自由曲面dO通过光线追踪计算其在目标平面产生的实际光照I(θ)。优化以MSE(I(θ), I_target)为损失函数利用dO计算梯度 ∂MSE/∂θ使用Adam等优化器更新B样条系数。 图14展示了优化过程自由曲面逐渐变形最终将平行光折射成目标图案。dO的梯度驱动优化比传统的“试错”或基于变换的方法更加直接和通用。4.4 端到端计算成像系统设计这是dO最能体现其价值的场景。我们以扩展景深成像为例问题普通镜头景深有限。波前编码技术通过在光路中加入一个三次相位板使点扩散函数PSF在一定的深度范围内保持形状不变从而后期通过数字算法恢复全焦段清晰图像。传统局限相位板的设计如三次相位系数和去卷积算法是分开优化的。且PSF计算常使用近轴近似忽略了其空间变化的特性。dO的端到端方案硬件建模在dO中建立包含相位板的光学系统模型相位板的相位分布用XY多项式描述其系数θ_optics是可优化变量。软件建模将一个U-Net神经网络作为图像复原算法其权重θ_net也是可优化变量。联合训练生成一个包含不同深度目标的训练数据集。前向传播用当前光学参数θ_optics渲染出模糊的原始传感器图像I_raw。软件处理用当前神经网络参数θ_net处理I_raw得到复原图像I_restored。计算损失计算I_restored与清晰目标图像I_target的损失如MSE损失 基于VGG的特征损失。反向传播损失值通过神经网络反向传播得到 ∂Loss/∂θ_net同时通过dO引擎继续反向传播得到 ∂Loss/∂θ_optics。参数更新同时更新光学参数θ_optics和网络参数θ_net。通过这种联合优化dO自动找到了一个相位板设计和一个与之匹配的去模糊网络使得整个系统在扩展景深范围内的综合成像效果最优。图15展示了优化后的相位板结构与经典三次相位板相似但有所改进以及网络对模糊图像的出色复原能力。4.5 系统失准标定与逆向工程这是一个非常实用的“反向”应用。在实验光学系统中元件的位置x, y, z和角度倾斜、偏心难免存在微小误差导致实验测量结果与仿真不符。手动调整仿真参数去匹配实验图像极其繁琐。dO可以将此转化为一个优化问题参数化将实验系统中未知的失准参数如透镜的XYZ位置、倾斜角设为待优化变量θ。前向仿真在dO中建立理想系统模型用当前θ渲染仿真图像I_sim(θ)。目标匹配以实验拍摄的真实图像I_real为目标最小化MSE(I_sim(θ), I_real)。优化求解利用dO的梯度信息自动调整θ使仿真图像不断逼近真实图像。图17展示了这一过程。对于一个略有离焦和倾斜的透镜成像光斑dO成功反演出了透镜的精确位姿参数使得仿真光斑与实验光斑高度一致。这为光学系统的自动标定和装调提供了强大的新工具。5. 局限、挑战与未来展望尽管dO功能强大但作为一项新兴技术它也存在一些固有的局限和挑战。5.1 理论基础局限几何光学近似dO基于光线追踪属于几何光学范畴忽略了光的波动性衍射效应。因此它目前不适合用于设计衍射极限系统如极高分辨率的光刻物镜、天文望远镜或共聚焦显微镜的物镜。这些系统需要基于物理光学如矢量衍射理论的仿真和优化。局部优化dO依赖于梯度下降类算法本质上是一种局部优化方法。优化结果严重依赖于初始值。如果初始设计离全局最优解太远很容易陷入局部最优。这需要结合全局优化策略如遗传算法、模拟退火或更好的初始点选择方法。5.2 工程实现挑战速度虽然利用了GPU加速但可微分光线追踪相比传统非可微分追踪如Zemax的快速光线追迹仍然慢得多。每次迭代都需要完整的前向和反向传播。对于超多变量如数万个自由曲面控制点的问题训练时间可能很长。内存瓶颈缓解而非消除伴随反向传播技术大大降低了内存峰值但渲染高分辨率图像仍需追踪海量光线整体内存消耗依然可观限制了可优化的系统复杂度和图像分辨率的上限。功能完备性目前dO专注于序列模式下的折射光线追踪。未来的扩展可以包括更多表面类型衍射光学元件、光栅、菲涅尔透镜、微透镜阵列等。更多物理效应偏振光线追踪、薄膜涂层、散射与杂散光分析。非序列模式对于照明系统、光导管等设计至关重要。5.3 未来的发展方向dO为代表的可微分光学设计正在打开一扇新的大门与生成式AI结合利用大型镜头数据库训练生成模型如扩散模型、GAN直接生成高质量的初始设计再由dO进行局部精细化优化解决初始化敏感问题。跨层级设计将光学设计、机械结构、热分析、制造成本等多个领域的仿真模型全部“可微分化”实现真正意义上的多物理场协同优化。新型计算成像系统探索为之前难以手工设计的复杂系统如超构表面透镜、光场相机、非视域成像系统提供自动化的设计工具加速其从概念到原型的进程。“智能”光学元件库构建一个由dO优化过的、针对特定算法如特定神经网络特化的光学元件库供系统工程师快速选型和集成。在我个人看来dO最大的价值在于它降低了计算成像系统设计的门槛并提升了探索的上限。它将光学设计从一个依赖“直觉和经验”的工艺部分转变为了一个“数据驱动、目标导向”的工程优化问题。即使你并非资深光学设计师只要你能清晰定义“想要什么样的图像”并准备好相应的数据和算法dO就有可能帮你找到一个意想不到的硬件解决方案。当然这并不意味着光学知识不再重要。相反如何设置合理的优化目标、约束、参数化方式以及如何解释和验证优化结果仍然需要深厚的物理和工程洞察力。dO是一个强大的“引擎”而工程师则是掌握方向的“驾驶员”。两者的结合必将驶向计算成像更广阔的未来。