论文阅读:Differentiable Compound Optics and Processing Pipeline Optimization for End-to-end Camera Desig

这是一篇发表在 2021 年 ACM TOG 上的文章,TOG 是图形学领域的顶刊,不过也会经常发表一些关于计算成像相关的文章,这篇文章的作者之一是 Felix Heide,普林斯顿大学的一名教授,也是计算成像领域的一个大牛,这个老师主要做一些计算成像相关的工作,尤其是软硬件联合优化这块,这篇文章算是这个老师早期的一个研究工作。

绝大部分现代的成像系统,不管是直接给人眼看的,还是给后端机器视觉用的,都会用到光学镜头,这些光学镜头一般都由多片镜片组成,这些光学镜头需要在像差,制造约束,公差,成本之间取得某种平衡。虽然光学设计与后端任务之间存在复杂的关联性,不过目前的光学镜头都是独立设计的,现有的光学设计工具都是为了最大程度的减小像差,而不是为了最大程度的减小某些任务的损失函数,这种相互独立的设计方式,阻碍了前端硬件设计与后端算法的联合优化,使得系统无法达到联合最优。这篇文章提出了一种优化方法去解决这些限制,文章提出的方法可以将整个光学系统,硬件 ISP 系统以及下游的神经网络,用特定任务的损失函数进行一起优化。为了实现这个目的,文章作者提出一种可学的,可微可导的光学系统,以及交替优化的方式去处理复合函数下不同的待优化变量,包括光学系统,硬件 ISP 以及神经网络的参数。文章提出的方法可以无缝地与现有的光学设计软件比如 Zemax 结合。文章在多个不同的任务上进行了验证,包括自动驾驶中的目标检测任务以及与人眼感知相关的任务,都超越了现有的方法的效果。

这篇文章总结了以下几点贡献:

  • 提出了一个联合端到端的优化框架,这个框架包括了前端的光学系统,真实的芯片系统,ISP 系统以及 CNN 计算机视觉的任务,文章作者借助特定任务的损失函数,对这些系统中的参数进行联合优化。
  • 这个框架与传统的光学设计软件可以很好的结合
  • 文章将现有的光线追迹方法与深度学习结合,构建一个准确的可微的光学系统,这个光学系统不仅仅对小视场有效
  • 文章对光学系统及图像处理系统在人眼感知与下游分析任务做了仿真分析
  • 文章作者基于这个优化框架,构建了 5 个真实的镜头原型,并且在真实的充满挑战的自动驾驶数据集上做了验证

3 Imaging Pipeling Stages

文章将整个成像过程分成 5 个部分,分别是场景,光学系统,sensor,ISP 系统以及下游任务,如下图所示:

  • 整个成像流程

在这里插入图片描述

3.1 Scene representation

文章将 scene 的表示用一个全对焦的 RGB 图像表示

3.2 Compound camera optics

光学系统一般是由多个镜片构成,由特定的参数进行表示,文章假设光学系统的参数为 P o p t i c \mathcal{P}_{optic} Poptic,包括每个镜片的厚度,间距,折射率,面型参数等,文章中假设 f f f 数是固定的,后焦距也是固定的。

  • 一个光学镜头的样例

在这里插入图片描述

假设场景从无限远处发出光线,到达光学系统,这些光线可以认为是平行光入射,入射角为 θ \theta θ,一个理想的光学系统会将 wavefront 转化成一个球面波,一个焦距为 F F F 的光学系统,在像面 r = F tan ⁡ θ r = F\tan{\theta} r=Ftanθ 处光线会汇聚,这些光线的光程差可以表示成有关出瞳面位置 p \mathbf{p} p,像面坐标 r \mathbf{r} r,波长 λ \lambda λ 以及光学系统 P o p t i c \mathcal{P}_{optic} Poptic 的函数 f o p d ( p , r , λ ; P o p t i c ) f_{opd}(\mathbf{p}, \mathbf{r}, \lambda; \mathcal{P}_{optic}) fopd(p,r,λ;Poptic)

系统的 PSF 可以表示为:

P S F λ ( x , r ; P o p t i c ) = ∣ ∫ A ( p ) e i f o p d ( p , r , λ ; P o p t i c ) e i 2 π p x d p ∣ 2 = f o p t i c ( r , P o p t i c ) (1) PSF_{\lambda}(\mathbf{x}, \mathbf{r}; \mathcal{P}_{optic}) = \left | \int A(\mathbf{p}) e^{i f_{opd}(\mathbf{p}, \mathbf{r}, \lambda; \mathcal{P}_{optic}) } e^{i 2 \pi \mathbf{p} \mathbf{x}} d\mathbf{p} \right |^{2} = f_{optic}(\mathbf{r}, \mathcal{P}_{optic}) \tag{1} PSFλ(x,r;Poptic)= A(p)eifopd(p,r,λ;Poptic)ei2πpxdp 2=foptic(r,Poptic)(1)

x \mathbf{x} x 表示 PSF 的空间坐标,PSF 是和空间位置有关的一个量,给定一个场景图像 I s c e n e \mathbf{I}_{scene} Iscene,通过光学系统后的图像可以表示为:

I o p t i c ( x , y ) = I s c e n e ( x , y ) ∗ f o p t i c ( x 2 + y 2 , P o p t i c ) (2) \mathbf{I}_{optic}(x, y) = \mathbf{I}_{scene}(x, y) \ast f_{optic}(\sqrt{x^2+y^2}, \mathcal{P}_{optic}) \tag{2} Ioptic(x,y)=Iscene(x,y)foptic(x2+y2 ,Poptic)(2)

如果每个像素点都用这种卷积的方式计算,那运算量会很大,所以实际建模的时候,会把图像分成若干个 patch,每个 patch 内的 PSF 可以认为是类似的,这样的卷积运算量会小很多。

3.3 Sensor model
  • sensor 光电转换过程

在这里插入图片描述

文章中的 sensor 模型依赖于一个可微可导的对 color filter arrays (CFA) 的近似,通过光学系统的图像为 I o p t i c \mathbf{I}_{optic} Ioptic,通过 sensor 模型之后,得到 sensor RAW 图 I r a w \mathbf{I}_{raw} Iraw,文章中用一个广泛采用的 EMVA1288 模型对 sensor 进行仿真建模,文章首先通过二次插值的方法将一个 RGB 三通道的 I o p t i c \mathbf{I}_{optic} Ioptic 图像插值成一个 50 通道的 I m s \mathbf{I}_{ms} Ims 多光谱图像,然后利用泊松分布对每个光谱到达 sensor 的光子进行建模:

μ p ( x , y , λ ) = I m s ( x , y , λ ) ⋅ π A t λ 2 h c ( 1 + ( 2 N ) 2 ) (3) \mu_{p}(x, y, \lambda) = \mathbf{I}_{ms}(x, y, \lambda) \cdot \frac{\pi A t \lambda^{2}}{hc(1+(2N)^2)} \tag{3} μp(x,y,λ)=Ims(x,y,λ)hc(1+(2N)2)πAtλ2(3)

其中, A A A 是像素面积, t t t 是曝光时间, N N N 是 F-number, h h h 是普朗克常数, c c c 是真空中的光速。

光子到达 sensor 之后,会进行光电转换,光电转换可以由光电转换效率表示, η ( x , y , λ ) = e ( x , y , λ ) / p ( x , y , λ ) \eta(x, y, \lambda) = e(x, y, \lambda)/p(x,y,\lambda) η(x,y,λ)=e(x,y,λ)/p(x,y,λ) e ( x , y , λ ) e(x,y,\lambda) e(x,y,λ) 表示数量为 p ( x , y , λ ) p(x,y,\lambda) p(x,y,λ) 的光子到达 sensor 的时候,转换成电子的数量。除了入射光子引起的光电转换,sensor 内部也有电子产生,包括暗噪声 n d ∼ N ( μ d , σ d ) n_{d} \sim \mathcal{N}(\mu_{d}, \sigma_{d}) ndN(μd,σd),以及暗电流引起的电子,暗电流与温度有关,分布满足如下关系:

μ I = μ I , r e f ⋅ 2 ( T − T r e f ) / T d ⋅ t e x p (4) \mu{I} = \mu_{I,ref} \cdot 2^{(T-T_{ref})/T_d} \cdot t_{exp} \tag{4} μI=μI,ref2(TTref)/Tdtexp(4)

其中, μ I , r e f \mu_{I,ref} μI,ref 表示某个标准参考温度下测量得到的平均电流, t e x p t_{exp} texp 表示曝光时间,所有的电子会经过模数转换,量化得到最终的数字信号,这个过程需要考虑量化误差 n q n_{q} nq,sensor 的满阱容量 e s a t e_{sat} esat 还有增益放大系数 K K K
最终的 sensor RAW 图可以表示成:

I r a w ( x , y ) = b + n q + K min ⁡ ( e s a t , n d + n I + ∑ λ p ( x , y , λ ) μ ( x , y , λ ) ) (5) \mathbf{I}_{raw}(x, y) = b + n_{q} + K \min(e_{sat}, n_d + n_{I} + \sum_{\lambda} p(x, y, \lambda)\mu(x,y,\lambda)) \tag{5} Iraw(x,y)=b+nq+Kmin(esat,nd+nI+λp(x,y,λ)μ(x,y,λ))(5)

3.4 Hardware imaging pipeline stages

得到 I r a w \mathbf{I}_{raw} Iraw 之后,会经过一个 ISP 系统,文章中用到的硬化的 ISP 系统是一个商用公开的传统流程,ARM Mali C71,一般的模块,包括 AWB, 去马赛克,降噪,tone-mapping,颜色转换等都包括。

3.5 Software image processing and analysis

如果是软件的图像处理或者分析模型,现在基本都是用深度学习来实现。

4 Compound Optics Pipeline Optimization

接下来,文章介绍如何将光学系统与其他模块进行联合优化

4.1 Compound optics modeling

首先是光学系统的建模,传统的光学成像都是基于光线追迹的方式,这篇文章利用一个深度神经网络作为代理模型,来替代复杂的光线追迹过程:

( φ ~ ( r ) , υ ~ ( r ) ) = f ~ o p t i c ( r , P o p t i c ; W o p t i c ) (6) (\tilde{\varphi}(r), \tilde{\upsilon}(r)) = \tilde{f}_{optic}(r, \mathcal{P}_{optic}; \mathcal{W}_{optic}) \tag{6} (φ~(r),υ~(r))=f~optic(r,Poptic;Woptic)(6)

φ ~ ( r ) , υ ~ ( r ) \tilde{\varphi}(r), \tilde{\upsilon}(r) φ~(r),υ~(r) 分别表示估计的 PSF 和渐晕系数,这个神经网络如下图所示,包括了几层全连接层 MLP 以及若干卷积层。

  • 代理网络结构
    在这里插入图片描述

网络会分别输出一个 RGB 三通道的 PSF 以及对应的通道渐晕系数,三通道的 PSF 已经做了归一化,最终实际的 PSF 是由归一化的 PSF 乘以对应的渐晕系数,整个网络的优化目标为:

W ^ o p t i c = arg min ⁡ W o p t i c ∑ i , j M , K L o p t i c ( f ~ o p t i c ( r j , P o p t i c i ; W o p t i c ) , O ( i , j ) ) (7) \hat{\mathcal{W}}_{optic} = \argmin_{\mathcal{W}_{optic}} \sum_{i,j}^{M, K}\mathcal{L}_{optic}(\tilde{f}_{optic}(r^{j}, \mathcal{P}_{optic}^{i}; \mathcal{W}_{optic}), \mathbf{O}^{(i,j)}) \tag{7} W^optic=Wopticargmini,jM,KLoptic(f~optic(rj,Poptici;Woptic),O(i,j))(7)

M = 5.5 × 1 0 4 M = 5.5 \times 10^{4} M=5.5×104 表示光学设计的数量, K = 13 K=13 K=13 表示每个光学设计需要考察的 PSF 数量,也就是对应视场的 PSF。为了构造训练数据,文章作者借助了商业光学设计软件 Zemax,为了提升光学设计的公差鲁棒性,文章利用 Zemax 进行公差敏感度分析,然后找到合理的公差范围,在这个范围内生成数千个光学结构,所以网络结构的输入是光学结构参数和视场的极坐标,输出是预测的 PSF 以及渐晕系数,最终的损失函数为:

L o p t i c ( φ ~ , υ ~ , φ ∗ , υ ∗ ) = L 1 ( φ ~ , φ ∗ ) + L 1 ( F ( φ ~ ) , F ( φ ∗ ) ) + L 1 ( υ ~ , υ ∗ ) + ∑ d L 1 ( ∇ d φ ~ , ∇ d φ ∗ ) (8) \mathcal{L}_{optic}(\tilde{\varphi}, \tilde{\upsilon}, {\varphi}^{*},{\upsilon}^{*}) = \mathcal{L}_{1}(\tilde{\varphi}, {\varphi}^{*}) + \mathcal{L}_{1}(\mathcal{F}(\tilde{\varphi}), \mathcal{F}({\varphi}^{*})) + \mathcal{L}_{1}(\tilde{\upsilon}, {\upsilon}^{*}) + \sum_{d} \mathcal{L}_{1}(\nabla_{d}\tilde{\varphi}, \nabla_{d}{\varphi}^{*}) \tag{8} Loptic(φ~,υ~,φ,υ)=L1(φ~,φ)+L1(F(φ~),F(φ))+L1(υ~,υ)+dL1(dφ~,dφ)(8)

F \mathcal{F} F 表示傅里叶变换, ∇ d \nabla_{d} d 表示差分运算。

4.2 Differentiable sensor and ISP model

接下来是对 sensor 与 ISP 的建模,sensor 建模文章用上面介绍的 sensor 模型表示, I r a w = f s e n s o r ( I o p i t c ) \mathbf{I}_{raw} = f_{sensor}(\mathbf{I}_{opitc}) Iraw=fsensor(Iopitc),得到 I r a w \mathbf{I}_{raw} Iraw 之后,接下来是进入 ISP 流程,文章讨论了两种情况,一种是 hardware ISP,另外一种是 software ISP,hardware ISP 每个模块都已经硬化了,只有模块中的一些超参数可以调节,而 software ISP 一般都是用网络来表示,可以调节的自由度要高很多。

  • Hardware ISPs,对于 hardware ISP,为了实现可微可导,文章也是先用一个代理模型必然 U-Net 去模拟 hardware ISP 的整个流程,同时把可调节的超参作为网络的输入, I i s p = f ~ i s p ( I r a w , P i s p ; W i s p ) \mathbf{I}_{isp} = \tilde{f}_{isp}(\mathbf{I}_{raw}, \mathcal{P}_{isp}; \mathcal{W}_{isp}) Iisp=f~isp(Iraw,Pisp;Wisp) W i s p \mathcal{W}_{isp} Wisp 表示可训练的参数,最终的优化函数可以表示成如下所示:

W ^ i s p = arg min ⁡ W i s p ∑ i = 1 M L i s p ( f ~ i s p ( I i , P i s p i ; W i s p ) , O ( i ) ) (9) \hat{\mathcal{W}}_{isp} = \argmin_{\mathcal{W}_{isp}} \sum_{i=1}^{M}\mathcal{L}_{isp}(\tilde{f}_{isp}(\mathbf{I}^{i}, \mathcal{P}_{isp}^{i}; \mathcal{W}_{isp}), \mathbf{O}^{(i)}) \tag{9} W^isp=Wispargmini=1MLisp(f~isp(Ii,Pispi;Wisp),O(i))(9)

文章用 U-Net 作为代理模型,模型的输入是 RAW 图和各个模块的超参,每个超参最终会变成等大的 feature map 送进网络,训练得到的网络,最终作为整个流程的一部分,集成进 pipeline 中, I i s p = f ~ i s p ( I r a w , P i s p ; W p r o x y ) \mathbf{I}_{isp} = \tilde{f}_{isp}(\mathbf{I}_{raw}, \mathcal{P}_{isp}; \mathcal{W}_{proxy}) Iisp=f~isp(Iraw,Pisp;Wproxy)

  • Software ISPs 如果是一个软仿的 ISP,可以直接用一个网络来拟合整个过程, I n n = f n n ( I r a w , P n n ) \mathbf{I}_{nn} = f_{nn}(I_{raw}, \mathcal{P}_{nn}) Inn=fnn(Iraw,Pnn)

5 Joint Optimization

5.1 Fully differentiable imaging pipeline

最终完整的端到端联合的目标函数可以表示为:

O = f ~ i s p ( f s e n s o r ( f ~ o p t i c ( I , P o p i t c ; W o p i t c ) ) , P i s p ; W i s p ) (10) \mathbf{O} = \tilde{f}_{isp}(f_{sensor}(\tilde{f}_{optic}(\mathbf{I}, \mathcal{P}_{opitc}; \mathcal{W}_{opitc})), \mathcal{P}_{isp}; \mathcal{W}_{isp}) \tag{10} O=f~isp(fsensor(f~optic(I,Popitc;Wopitc)),Pisp;Wisp)(10)

其中 I \mathbf{I} I 表示输入的 RGB 图像, O \mathbf{O} O 表示输出图像,如果用 software ISP 代替 Hardware ISP,那么整个联合优化目标函数可以写成:

O = f ~ n n ( f s e n s o r ( f ~ o p t i c ( I , P o p i t c ; W o p i t c ) ) ; P n n ) (11) \mathbf{O} = \tilde{f}_{nn}(f_{sensor}(\tilde{f}_{optic}(\mathbf{I}, \mathcal{P}_{opitc}; \mathcal{W}_{opitc})); \mathcal{P}_{nn}) \tag{11} O=f~nn(fsensor(f~optic(I,Popitc;Wopitc));Pnn)(11)

如果后面再接一个计算机视觉任务,比如目标检测,可以在整个链条最外端再接一个模块,比如目标检测模块,文章给出了如下的示例目标函数:

O = f n n ( f ~ i s p ( f s e n s o r ( f ~ o p t i c ( I , P o p i t c ; W o p i t c ) ) , P i s p ; W i s p ) ; P n n ) (12) \mathbf{O} = f_{nn}( \tilde{f}_{isp}(f_{sensor}(\tilde{f}_{optic}(\mathbf{I}, \mathcal{P}_{opitc}; \mathcal{W}_{opitc})), \mathcal{P}_{isp}; \mathcal{W}_{isp}) ; \mathcal{P}_{nn}) \tag{12} O=fnn(f~isp(fsensor(f~optic(I,Popitc;Wopitc)),Pisp;Wisp);Pnn)(12)

这种情况下, f ~ i s p , f ~ o p t i c \tilde{f}_{isp}, \tilde{f}_{optic} f~isp,f~optic 这两个代理模型是训练过的,代理模型本身的参数 W i s p , W o p i t c \mathcal{W}_{isp}, \mathcal{W}_{opitc} Wisp,Wopitc 是固定的,所需要优化的参数主要是 P o p i t c , P i s p , P n n \mathcal{P}_{opitc}, \mathcal{P}_{isp}, \mathcal{P}_{nn} Popitc,Pisp,Pnn,最终的优化目标可以写成:

{ P o p i t c ∗ , P i s p ∗ , P n n ∗ } = arg min ⁡ P o p i t c , P i s p , P n n ∑ i = 1 M L t a s k ( O i , T i ) (13) \{ \mathcal{P}_{opitc}^{*}, \mathcal{P}_{isp}^{*}, \mathcal{P}_{nn}^{*} \} = \argmin_{\mathcal{P}_{opitc}, \mathcal{P}_{isp}, \mathcal{P}_{nn}} \sum_{i=1}^{M} \mathcal{L}_{task}(\mathbf{O}^{i}, \mathbf{T}^{i}) \tag{13} {Popitc,Pisp,Pnn}=Popitc,Pisp,Pnnargmini=1MLtask(Oi,Ti)(13)

5.2 Proximal Compositional Optimization

涉及多个模块的联合端到端优化是一个非常复杂而且挑战的问题,这篇文章介绍了一种可行的优化方法。

  • Initialization,首先是初始化,文章对不同模块采用了不同的初始化策略,对于光学系统,采用了均匀分布的初始化,对于 hardware ISP 中的优化参数,也是采用均匀分布的随机初始化,对于 software ISP 中的参数,文章先在仿真数据上进行预训练,将预训练的参数作为初始化。

  • Compositional optimization,然后在优化过程中,对每个模块的参数先单独进行优化

  • Proximal regularization,在优化过程中,为了避免某个模块优化太快,导致其它模块难以优化,文章加入了正则项

  • Fine-tuning,最后一步是整体 fine tune,所有模块的参数一起参与优化

  • 优化过程如下所示:

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值