Hardware-in-the-loop End-to-end Optimization of Camera Image Processing Pipelines阅读笔记
这篇文章干了啥
作者在abstract中说,
we present a hardware-in-the-loop method that directly optimizes hardware image processing pipelines for end-to-end domain specific losses by solving a nonlinear multi-objective optimization problem with a novel 0th-order stochastic solver directly interfaced with the hardware ISP.
我们提出了一种硬件在环方法,该方法,用一种直接与硬件ISP接口的新型0阶的随机求解器,通过解决一个非线性多目标优化的问题,来直接的优化对于特定的领域的端到端损失(loss)的问题(分割或者检测)
背景介绍
作者说ISP以前都需要人手工的去调的符合人类的视觉,
Traditionally, imaging experts manually tune the hyperparameters of the ISP on a small dataset, using a combination of visual inspection and image quality metrics[9]
但是这种调参的方式可能对于high-level的任务并不适合
作者说直接的去优化ISP内部的参数是非常具有挑战性的,第一个是因为内部含有很多参数,比如一个二值参数,flip之后可能导致完全不同的结果。full grid并不是一种可以选择的方式,这里作者还引用了之前他们单位做的siggraph的一篇文章,说他们siggrraph上的文章是gradient-based method,是需要近似为可微的,作者说这种一阶的方法对于最近的一些isp pipeline很容易陷入到局部最优解。
这篇文章作者说到,可以对某个特定的domin来end to end的来优化ISP的pipeline,提出的硬件在环的优化方法利用了Covariance Matrix Adaption Evolution strategy(CMA-ES),翻译过来是协方差自适应的演化策略。
hyperparameters by solving a multi-objective black box optimization problem with a novel CMA-ES variant with max rank-based multi-objective scalarization and initial search space reduction.
作者说他使用一种基于max-rank的,多目标scalarization(标量)和初始搜索空间reduction的新颖的CMA-EA的变体,通过解决多目标的black box的优化问题来优化ISP的超参数。提出的方法找到了一系列最好的compromise结果,比如帕累托前沿等。作者在一系列任务上对他的方法进行了验证,比如2D目标检测,分割以及人类的视觉感知等。通过这些实验,作者表明这种提出的硬件在环的方法相对于手工调节参数对end-to-end的losses会产生改善
总结一下贡献就是
- 作者提出了一种end to end的ISP的超参优化方法,这种优化方法将硬件集成到优化的步骤中
- 作者对黑盒的单目标或者多目标的ISP优化问题提出了一种新的CMA-ES的策略,这种策略对于参数量化和边界效应具有鲁棒性
- 在一系列实验上进行了实验,对于人工的tuning或者first-order的近似都取得比较好的结果
值得注意的是,作者还说了
In this work, when considering scene understanding on ISP-processed images as downstream tasks, we assume that the hyperparameters and parameters of this higher-level block, e.g., SIFT based [27] or learned detector, have been fine-tuned to ISP outputs manually tuned for human viewing. Although additional fine-tuning of the downstream application module following ISP optimization might further improve the end-to-end performance, in this work, we assume the downstream block to be fixed. The challenging problem of joint optimization of hyperparameters and algorithm parameters along the full vision stack, including the image understanding module and potentially including optical and sensor design parameters, is an exciting area of future research that this work makes a first step towards.
就是在这里作者当考虑到场景理解作为下游任务的时候,后面的网络参数已经在手动调整的,输出符合人类感官的ISP参数上进行了fine tune。尽管在ISP优化之后对下游应用程序模块进行额外的微调可能会进一步提高端到端性能,但是在这项工作中,我们假设下游模块是固定的。...这个工作向这个方向迈出了first step
相关工作
文献[30]最近提出了0阶的白box ISP optimization,但是他们只能优化一小部分参数。具体而言是一次只能优化一个ISP block,而且需要ISP内部的信息。Blockwise的方法对于多个ISP module的 joint optimization并不适合(上面引用的ICIP的一篇文章自己之后看)。
作者在optimization using differentiable approximations中说到,sig那篇文章是rely on一个近似的模型(在hardware上进行训练),而不是依赖硬件本身,其实不太明白这句话
Unlike the proposed hardware-in-the-loop optimization method however, Tseng et al. [35] rely on an approximate model (trained on the hardware) instead of the hardware itself.
ISP问题描述
ISP问题描述如下
由一个raw阵列(I),生成一个含有三个通道的图片(O),其中有(P)个超参(Theta),其变化范围被normalized到单位区间(mathbb{R}_{[0, 1]})。作者还说到,hyperparameters通常都是discrete的,比如{0, 1}为算法分支切换(algorithm branch toggle)和{0, ...., (2^{10})-1}作为noise的threshold。作者这里用affine mapping将其松弛到了continuous的参数。(supplemental material)
端到端的loss函数
作者这里说不同的任务有不同的loss函数,比如对于objection的mAP和mAR等。作者直接使用这些loss函数,并且使用作者提出的(0^{th}-order)的优化方法来优化。对于一个特定的下游任务而言,可能需要一个或者多个metric,所以作者使用多目标来优化(MOO)ISP的参数
其中
为使用同一组ISP的参数(Theta)对(S)个不同的raw图片处理之后输出的结果。目标函数是(L(Theta))向量,其中包含很多不同的end-to-end 的loss分量。
第一,对于(Theta^*)会有很多最优解。其中,参数(Theta^*)和输出的image stack (s(Theta))之间可能存在多对一的关系(nontrivial kernel),进而导致相同的loss函数。这种non-trivial kerl应该被辨别出来,从而有效的减少搜索空间。
一种理想情况是,(s)应该是一对一的关系,至少相近的超参应该给出相近的优化结果,不太确定翻译是否正确
Ideally, s should be one-to-one, at least near hyperparameter settings that give near-optimal results.
第二, MOO 问题常常还有多个解,寻找多个最优解的过程就是寻找pareto front的过程
作者将evalution转换成loss函数,0意味着最好或者足够好。如果对于一个metric (P)落在区间([a, b])就认为足够好的话,则loss可以定义为如下
The proposed method facilitates weighting left distances differently than right distances and the use of other distance metrics than `1.
所提出的方法有利于对左距离的加权与右距离的加权不同,并且有助于使用除(l1)以外的其他距离度量。
并且作者还说ISP的参数,通常能够以一种强耦合的,非线性的甚至是非连续的方式影响到输出的图像。(觉得这句话是比较正确的,至少从直观上来说是这样的)
ISP hyperparameters typically affect the output image in strongly coupled, nonlinear, even discontinuous ways.
因为这个原因,block coordinate-descent[ICIP的方法]优化很容易落到local minima,后面作者会证实这个想法。除此之外,很多重要的度量对于图像的输入是以一种非线性或者非连续的变化的(比如同样对于map,可能gamma一直递增,map并不是线性变化)
所以, 作者说,(L_l(s(Theta)))通常并不会有一个比较好定义的gradients,或者是rugged search landscape。它通常会陷入局部最优,有很多噪声以及不连续性,这事sig这篇文章典型的问题。更有甚者,ISP的内部通常是不透明的,强制黑盒优化,所以常用的solvers对于求解MOO的问题并不充足。(supplemental matrtial)
hardware-in-the-loop optimization
作者说给定一系列raw图片,经过isp处理之后,送到下游任务中。下游网络的输出有特定的一些loss组成,vectorial loss (L)。
作者提出了一个非线性的使用CMA-ES策略的非凸黑盒优化方法。
尽管CMA-ES是一个0阶的随机演化搜索算法,它可以被看作2阶的,因为它估计的是协方差矩阵,这个协方差矩阵和inverse hessian矩阵密切相关;这种性质是的CMA-ES可以处理一些non-separable和一些badly conditioned problems。作者具体的算法如算法文中的算法1
dynamic weight max-rank loss
单一目标的CMA-ES 对每一代的实验根据loss都进行排序。但是对于MOO的问题的时候,暴露给CMA-ES的loss function是加权max-rank loss,一个新的基于rank的加权切比雪夫标量化(chebyshev scalarization)
首先,计算相对于当前和较早几代试验中每个相应损失的每个试验的排序(或者是在所有实验中的顺序)。然后在(t)代,对(Theta_j^{(t)})的加权的max-rank loss可以被计算为:
非负的weight (w_l^{(t)}), 在每一代都固定,被用来建模(L_l)的重要性。这个尺度因子是自适应的:(w_l^t) 在每一代结束的时候会基于这些实验的target loss能达到loss 0的实验的比例来更新。
上面的公式中的(lambda)看起来好像是指代第多少个iter或者代,(rank_{{L_1(Theta^{(0)}, ...,L_l(Theta_lambda^{(t)}))}}(L_l(Theta_j^{(t)})))表示的是,从一开始到当前代,所有的第(l)个loss的一个排序
为了防止ISP参数陷入一个固定的值,每次都会添加高斯噪声,高斯噪声方差的选择能够使得,没有一点改变的实验的比例是和有着正的centroid ((Theta)) 的权重是一样的。
CMA-ES的参数,比如会影响下一代实验的drawing的参数(sigma), 我们依赖于追踪Monte carlo模拟的统计的结果来从随机得到的结果估计它。
warm-starting using search space reduction
作者使用了一种可以减少搜索空间的策略来进行热启动作者提出的算法。这种新的减少搜索空间的方法称为latin hypercude 采样和kolgomorov-smirnov 独立性测试。LHS主要是对于样本进行了预处理,这样对于整个空间采样更加均匀。
搜索空间缩减的主要功能是以如下方式重新映射 (mathbb{R}^P_{[0, 1]}) :对超值范围产生积极影响的超参数范围在搜索超立方体 (mathbb{R}^P_{[0, 1]}) 中占据较大的体积。重要的参数占据比较大的体积,不重要的参数占据比较小的体积。
The primary function of the search space reduction is to remap (mathbb{R}^P_{[0, 1]}) in such a way that hyperparameter ranges which impact positively the values of the losses occupy a larger volume within the search hypercube (mathbb{R}^P_{[0, 1]})
搜索空间的减少,也为算法1提供了一个改进的(Theta^{(0)})。
试验坐标是通过从高斯分布和均匀分布的混合物中绘制而随机生成的,所以超立方体采样自然地可以近似为拉丁。然后对于实验的每个loss分量进行统计分析,每次分析一个ISP的超参。
每个ISP参数与每个loss component之间的相关性通过Kolmogorov-Smirnov独立性检验的p值进行标识,其中观察次数设置为较小的值。
对每一个实验,受到hyperparameter影响的the max rank loss, over loss component (vector中所有的向量) 都会被计算出来。然后将此超参数的目标间隔取为包含q%个试验的所有参数的超参数的最小间隔,并具有最佳对应的最高排名。
这样重复多次,将每个超参数的采样限制在上一阶段的区间内,并将其高斯分量集中在受影响的损失分量上的最大排名(max-rank)的最小值处。
在将结果传递给CMA-ES之前,我们为每个超参数构造一个立方(三次)样条,使最终的区间占据(mathbb{R}_{[0, 1]})的很大的百分比。这个样条用于重映射超参数的值。这个可分离的过程产生了(mathbb{R}^P_{[0, 1]})在自身上的双项映射。由于仍然是可达到整个超立方体的,所以所提出的CMA-ES变体可以从污点统计分析中恢复。
max-rank loss initialization
在搜索空间缩小之后,我们计算所有已知损失的试验的最大等级(max-rank loss)损失(在所有损失分量上),我们将minimizer作为算法1的初始超参数设置(Theta^{(0)})。
pareto front selection
最后的(Theta)并不是最好的,在算法1结束之后,对已知损失的所有试验进行帕累托排序,最后遇到的那个试验被选为冠军
实验
作者选取了三个ISP sensors,在不同的下游任务验证了作者的方法。
- ARM Mali-C71 ISP and SONY IMX249 CMOS sensor with 28 ISP hyperparameters
- OnSemi AP0202AT ISP and AR0231AT CMOS sensor with 12 ISP hyperparameters
- A synthetic (simulated) ISP processing simulated RAW with processing blocks shown in Fig. 2, with 14 ISP hyperparameters.
参数也并不是特别多
下游任务包括
- 自动驾驶的2D检测,
- 8类目标检测
- 实例分割
- 全景分割
- 人眼的图片感知
作者将标记的raw图片分成了optimization set和test set两部分。当使用现成的数据集的时候,比如kitti,作者从train选取optimization set,test set不动。
作者发现,一个相对较小的但是很有代表性的optimization dataset,100张图片就已经足够对ISP的超参进行optimization,对于这个现象,作者解释道,this is unsuprising given that ISPs have orders of magnitudes fewer parameters than higher-level neural networks
之后就是作者首先合成raw数据,看一下结果怎么样。作者提出的方法的结论是,用这种方法虽然对比度或者其他不如边缘不如人工调节的更加明显,但是在下游任务却取得了比较好的结果。这一点和相对于作者通过他的观察意识到了什么东西比较重要,然后通过人为调节发现并不如auto做的比较好
再之后作者在自己拍摄的raw图片进行验证,数据包含了白天和夜晚,主要是用来做检测(supp)
有一个参考的图片,参考的图片是通过增强的,比如经过类似sigmoid的curve来提升对比如,或者是低增益之类的。
之后作者还对比了blockwise的ISP优化方法,the authors optimize the blocks of an ISP sequentially, one group of hyperoarameters at a time, a process ehta assumues ISP blocks to be functionally independent and separately accessible.
以下内容为作者在appendix所解释动机
标量化是将多目标损失向量转换为单一的、标量的损失的过程。因此,标量化可以使单目标优化器处理MOO问题。最常见的标量化是加权凸组合,其中标量损失是向量损失分量的加权和,权重为正。所提出的硬件内环优化方法采用了一种不同的、新颖的标度化:(动态)加权最大等级损失。
2.2.1 动机
回忆一下,试验是一个超参数设置,损失是计算出来的,因此是已知的。还记得当执行MOO时,损失有几个分量,每个分量来自一个或多个特定任务的评价指标。原则上,每一个损失分量都要尽可能的低;然而只是原则上,原因如下。损失分量往往是对立的。首先,如果所有的损失都一致,我们可以只用一个来优化。使用一个以上的评价指标,说明考虑了多种方式的排序结果。事实上,经常使用解决不同的、可能是冲突的性能方面的损失。例如,一个只看到噪声的损失组件很可能与一个只看到纹理的损失组件成反比。一般来说,在优化感知质量时,我们的目标是输出既有低噪声又有大量纹理的图像。没有噪声和没有纹理,或者大量的纹理和大量的噪声,都是不可接受的。精度和召回率是另一个例子:完美的精度但很差的召回率,或者反之,通常被认为是不可接受的。
总结:在执行MOO时,我们通常希望得到 "平衡 "的解决方案;获得某些但并非所有评估指标的良好值通常是不够的。
因此,当执行MOO时,我们的目标是找到一个帕累托点,它是冲突目标之间的良好折中。动态加权的最大等级损失标量化的设计就是为了引导单一目标优化器朝向这样的解决方案。撇开加权的动态方面不谈,加权最大等级损失是将损失分量转换为rank(排名)后计算的加权切比雪夫标度[12]。因为它涉及到排名,进而涉及到其他试验,所以最大rank损失是一种优化手段:对于一个给定的超参数设置,最大等级损失标度化只针对一个群体来定义:进入排名的试验。因此,与典型的损失函数(PSNR、SSIM等)不同,最大等级损失不是一个绝对量:最大等级损失的值是相对于一组试验的损失值而言的。因此,我们把计算排名的一组试验称为参考群体。
由于是基于排序的,所提出的搜索空间reduction和CMA-ES对于损失函数值的严格单调变换都是不变的。这是CMA-ES的一个众所周知的特性。例如,CMA-ES关于RMSE的优化与CMA-ES关于PSNR的优化是一样的。当用这种方法进行单目标优化时,直接就损失进行优化("原样")和就加权最大等级损失进行优化原则上没有区别,因为它们的试验顺序完全相同。(加权不会影响单目标优化,前提是权重在排序中是固定的,而它是固定的,并且权重永远不会为0,这是微不足道的。) 因此,只有当优化器对单调损失值变换不不变时(大多数基于梯度的方法都不不变),切换到max-rank损失才会影响单目标优化。然而,切换到最大秩损失几乎无一例外地影响多目标优化。
使用最大秩标度化来执行MOO,而不是如常用的凸组合标度化。有几个优点。
第一,它为不同的损失提供了一个自然的正常化,也就是说,它消除了不同的损失。需要重新调整损失分量的大小,使其具有相应的响应。如果不换算成rank,则 所需的重新缩放一般取决于捕获条件。此外,这种重新定标通常会被纳入损失权重中 本身。权重就起到了双重作用:将所需的损失成分的相对重要性传达给 solver;并重新调整损失分量,使其相称。这就掩盖了它们的影响。因此, 重新缩放,这不仅需要使数值范围相称,而且需要使它们的变化(它们的 "梯度")相称,通常是指 需要在捕获条件和其他环境细节发生变化时改变。因此,权重经常需要被改变。重新校准,有可能变得脆弱。更糟糕的是,概括了各种不同的相对重要性的权重系数。损失成分,被折合到用于使损失成分及其变化相称的重量因素中。会产生不可预知的副作用。与此相反,将损失分量转化为等级会自动使其数值范围正常化,并在一定程度上使他们的 的变化。将行列与权重相乘,则更有可能引导优化器达到预期的目的。使用最大等级 在所有损失组件中,一个损失组件的小等级乘数意味着,只有在该损失组件的价值达到一定程度时,它才会 "活跃"。相反,一个大等级乘数意味着,相应的损失分量将经常决定最大等级,除非该损失分量经常在参考人群中达到其最好的值(损失分量的最好值得到等级0)。简而言之,无论是否加权,最大等级损失都内置了损失归一化。使用max-rank标度化的第二个优点是,它可以在相互冲突的目标之间取得良好的折衷。换句话说,它倾向于将优化器指向超参数空间内的区域,在这些区域中,没有任何损失分量达到一个 一个非典型的坏值。原因是(为讨论起见,忽略权重),非常低的损失分量的等级是 如果它们以牺牲其他损失成分的高等级为代价,则会受到惩罚。因此,最大等级标度化有效地实现了 向求解器传达一个超参数设置,其中任何一个损失分量是非典型的坏的,它本身就是 不可取。
提及到的问题,为什么不直接用帕累托前沿进行优化?
search space是一开始
如何衡量样本