深度学习白平衡(Color Constancy,AWB):ICCV2019论文解析
深度学习白平衡(Color Constancy,AWB):ICCV2019论文解析
What Else Can Fool Deep Learning? Addressing Color Constancy Errors on Deep Neural Network Performance
论文链接:
摘要
有针对局部图像处理的积极研究,可以欺骗深层神经网络(DNNs)产生错误的结果。本文研究了一种能产生类似负面影响的全局图像处理方法。具体地说,本文探讨了由于不正确地应用计算色彩恒常性(摄影中称为白平衡(WB))而导致的强烈色彩投射如何对DNN目标图像分割和分类的性能产生负面影响。此外,本文还讨论了现有的图像增强方法如何提高DNNs的鲁棒性不太适合于WB误差建模。针对这一问题,提出了一种新的增广方法,该方法可以模拟精确的颜色恒常性退化。本文还探索了预处理训练和测试图像与最新的WB校正算法,以减少错误的白平衡图像的影响。本文研究了不同数据集上的增强和预处理策略,并展示了对CIFAR-10、CIFAR-100和ADE20K数据集的显著改进。
1. Introduction
人们对局部图像处理有着浓厚的兴趣,它可以用来愚弄深层神经网络(DNNs)产生错误的结果。这种“对抗性攻击”常常导致严重的错误分类。本文研究了一个探索较少的全局图像处理问题,该问题可能会对DNNs的性能产生类似的负面影响。特别是,本文对计算色彩恒常性的作用感兴趣,它构成了数码相机上的白平衡(WB)程序。本文关注计算的颜色恒常性,因为它代表了在真实图像中发现的全局图像错误的一个共同来源。 当WB不正确地应用在相机上时,它会在捕获的图像中产生不希望的颜色投射。具有如此强烈的颜色投射的图像经常被用户丢弃。因此,在线图像数据库和存储库倾向于包含大部分正确的白平衡图像。这是一个隐含的假设,对于由从web和在线抓取的图像组成的数据集是不被承认的。然而,在实际应用中,不可避免的是,在某些情况下,图像会被应用错误的WB捕获。WB不正确的图像在基于白平衡偏压训练图像的dnn上可能有不可预测的结果,如图1所示。
贡献
本文研究与计算颜色恒定性相关的错误如何对侧重于图像分类和语义分割的dnn产生不利影响。此外,本文还发现,用于扩展训练图像变化的图像增强策略不太适合模拟由颜色恒定性误差引起的图像退化类型。为了解决这些问题,本文提出了一种新的增强方法,能够精确地模拟真实感颜色的恒定性退化。本文还研究了一种新的WB校正方法[2]对测试和训练图像进行预处理。在CIFAR-10、CIFAR-100和ADE20K数据集上使用所提出的增强和预处理校正的实验表明,在测试具有颜色恒定性错误的图像输入时,有显著的改进。
2. Related Work
计算色彩恒常性
相机具有机载图像信号处理器(ISP),可将rawRGB传感器值转换为标准RGB输出图像(表示为sRGB图像)[33,47]。计算色彩恒常性,在摄影中常被称为WB,用于模拟人类在任何类型的光照下将物体视为同一颜色的能力。WB用于通过从输入图像(例如,[1、6、7、9、17、25、30、51])估计场景的照明来手动或自动识别场景照明的色温。将WB应用于原始RGB图像之后,ISP进一步应用一些附加的非线性光饰颜色操作来渲染最终sRGB图像[2]。这些照片修饰操作包括但不限于色调/饱和度操作、一般颜色操作和局部/全局色调映射[8、27、33、44、47]。相机通常有多种照片修饰风格,用户可以选择[2,33,34]。
sRGB图像的WB校正后,当WB应用不正确时,会导致sRGB图像具有很强的色彩投射。由于ISP在WB之后应用了非线性光饰操作,因此纠正sRGB图像中的错误是非常重要的[2,45]。目前的解决方案需要元数据,由辐射定标或原始图像重建方法(如[14,34,45])估计,其中包含撤销ISP应用的特定非线性光饰过程所需的信息。通过转换回原始RGB空间,可以使用对角校正矩阵应用正确的WB,然后由ISP重新提交。不幸的是,用于反转相机管道和重新渲染图像的元数据很少可用,特别是对于从web上收集的sRGB图像,就像现有的计算机视觉数据集一样。
最近的研究表明,通过估计一个高次多项式校正矩阵,可以获得白平衡的sRGB图像[2]。文献[2]中的工作,称为sRGB图像的WB(WB-sRGB),介绍了一个数据驱动的框架来估计给定测试图像的多项式矩阵。本文在WB-sRGB[2]的基础上进行扩展,在最终的sRGB图像上模拟WB错误,而不是校正WB。本文还使用WB-sRGB方法[2]来检查对训练和测试图像应用预处理WB校正,以提高DNN模型对错误白平衡图像的性能。
对抗性攻击
DNN模型易受局部图像操纵形式的对抗性攻击(例如,参见[18、26、37、54])。这些图像是通过在原始图像中添加精心制作的不可察觉的扰动层来创建的[26,54]。这种扰动层通常由局部非随机对抗噪声[3,26,41,54,58]或局部空间变换[57]表示。对抗性的例子能够误导预先训练的模型,从而预测某个错误的响应(即,目标攻击)或任何错误的响应(即,非目标攻击)[3,12,40]。虽然不正确的颜色恒常性不是对抗性攻击的明确尝试,但这种全局修改所产生的失败类型与非目标攻击非常相似,并可能对DNNs的性能产生不利影响。
数据扩充
为了克服训练数据的有限性和增加视觉变化,将图像增强技术应用于训练图像。现有的图像增强技术包括:几何变换(例如旋转、平移、剪切)[19、28、28、46]、合成遮挡[60]、像素强度处理(例如均衡、对比度调整、亮度、噪声)[19、56]和颜色处理(例如RGB颜色抖动和基于PCA的移位、HSV抖动、颜色信道丢弃,彩色信道交换)[15,19,23,32,36,38,42,48,49]。传统的增色技术随机改变训练图像的原色,以提高训练模型的泛化性和鲁棒性推理阶段。
然而,现有的色彩增强方法往往产生不现实的色彩,在现实中很少发生(例如,绿色皮肤或紫色草)。更重要的是,如图2所示,现有颜色增强技术的视觉外观不能很好地表示由应用于机载相机的不正确WB产生的颜色投射。如[4,13,22]所示,图像形成对不同计算机视觉任务的准确性有重要影响。最近,一个简化版的摄像机成像管道被用于数据增强[13]。然而,在[13]中的这种增强方法,显然没有考虑由于WB之后应用的后续非线性操作而导致的不正确WB的影响。为了解决这一问题,本文提出了一种基于摄像机的增强技术,可以综合生成具有真实WB设置的图像。
DNN规范化层
规范化层通常用于提高训练过程的效率。这些层将简单的基于统计的移位和缩放操作应用于网络层的激活。移位和比例因子可以从整个小批量(即批量规范化[31])或从每个训练实例(即实例规范化[55])计算。近年来,为了解决训练图像中的样式/纹理问题,在当前任务的基础上,引入了批实例规范化(BIN)[43]。尽管BIN的设计是为了学习在使用简单的基于统计的操作保持或减少原始训练风格变化之间的权衡,但是[43]中的工作并没有提供任何关于错误WB设置的研究。本文工作中提出的增强和预处理方法直接针对训练和测试图像,不需要对DNNs体系结构或训练机制进行任何更改。
3. Effects of WB Errors on Pre-trained DNNs
本文首先研究不正确的白平衡图像对用于图像分类和语义分割的预训练DNN模型的影响。作为动机,图3示出了应用于同一图像的两个不同WB设置。图3示出,通过改变WB设置,DNN对同一场景的注意力显著改变。为了进行定量评估,本文采用了为ImageNet大型视觉识别挑战(ILSVRC)2012[21]和ADE20K场景解析挑战2016[61]训练的几个DNN模型。生成一个由WB不正确的图像组成的全新标记测试集是一项巨大的任务ImageNet分类包括1000个类,像素精确的语义标注需要每幅图像60分钟[50]。代替一个新的测试集,本文应用本文的方法来模拟每个数据集的验证图像的WB错误。本文的方法不久将在Sec. 4中详细介绍。
分类
本文将本文的方法应用于ImageNet的验证集,生成具有五种不同色温和两种不同光饰风格的图像,每个验证图像总共有十种WB变化;此过程中排除了899个灰度图像。本文总共生成了491010张图像。本文研究了以下六个著名的DNN模型,它们是在原始ImageNet训练图像上训练的:AlexNet[36]、VGG-16和VGG-19[52]、GoogLeNet[53]和ResNet-50和ResNet101[29]。表1显示了在本文生成的验证集(即,使用不同的WB和光饰设置)上进行测试时,与原始验证集相比,每个模型的准确度下降。在大多数情况下,准确度下降了10%。图4示出了不正确WB的影响的示例。
语义分割
本文对2000张图片使用了ADE20K验证集,并为每个图片生成了10张具有不同WB/照片修饰设置的图片。最后,本文总共生成了20000张新图像。本文测试了在原始ADE20K训练集上训练的以下两个DNN模型:ExpandDNET[16,59]和Re finenet[39]。表2显示了不正确的白平衡图像对原始验证集上相同模型获得的并集交集(IoU)和像素精度(pxl acc)的影响。尽管用于分割的dnn比用于分类的结果要好,但本文仍然会导致性能下降超过2%。
4. Proposed Method to Emulate WB Errors
本文采用了一种数据驱动的方法,直接在sRGB颜色空间中模拟这种操作。本文的框架很大程度上借鉴了WB-sRGB数据驱动框架[2],该框架旨在纠正不适当的白平衡sRGB图像。然而,本文的框架在渲染的sRGB图像上“模拟”WB错误。图5提供了本文的方法的概述。
数据集
本文的方法依赖于由[2]生成的大量sRGB图像。此数据集包含使用不同WB设置和照片修饰样式渲染的图像。与每个训练图像相关联的是地面真值sRGB图像(即用“正确”色温渲染)。训练的sRGB图像使用五种不同的色温进行渲染:2850开尔文(K)、3800K、5500K、6500K和7500K。此外,每个图像都使用不同的相机照片处理风格进行渲染。在本文的WB仿真框架中,本文使用了来自这个数据集的17970个图像(1797个正确的sRGB图像,每个图像有10个对应的图像,分别用五种不同的色温和两种不同的光饰风格、相机标准和Adobe标准渲染)。
颜色映射
本文计算了每一对正确的白平衡图像与其对应的目标图像之间的颜色转换矩阵,目标图像是用特定的色温和光处理渲染的。最后,本文得到了与训练数据中的每个图像相关的10个矩阵。
颜色特征
如图5所示,当增加输入sRGB图像以具有不同的WB设置时,本文在数据集中搜索与输入图像相似的sRGB图像。这种搜索不是基于场景内容,而是基于图像的颜色分布。因此,本文使用[2]中使用的RGB uv投影颜色直方图特征来表示训练集中的每个图像。每个直方图特征用m×m×3张量表示。为了进一步减小直方图特征的大小,将主成分分析(PCA)应用于三层直方图特征。这种转换将以零为中心的矢量化直方图映射到一个新的低维空间。本文的实现使用了一个55维PCA向量。因此,本文的最终训练数据由每个训练白平衡图像的压缩特征向量、相关颜色转换矩阵、PCA系数矩阵和偏差向量组成。
KNN检索
给出一个新的输入图像Iin,提取其压缩后的颜色特征v,然后搜索与输入图像颜色分布相似的训练样本。采用L2距离作为v与训练压缩颜色特征的相似度度量。然后,本文检索与最近的k个训练图像相关联的颜色变换矩阵。
变换矩阵
5. Experiments
鲁棒性策略
本文的目标是提高DNN方法在测试图像中的性能。
由于计算颜色恒定性错误,可能具有强的全局颜色转换。基于WB sRGB框架[2]和Sec.4讨论的修改框架。研究了三种提高DNN模型鲁棒性的策略。
(1) 第一种策略是对每个测试图像应用WB校正,以便在推断期间移除任何意外的颜色投射。注意,这种方法隐式地假设训练图像是正确的WB。在本文的实验中,本文使用WB-sRGB方法[2]对测试图像进行校正,因为它目前在白平衡sRGB渲染图像方面达到了最先进的水平。本文研究了采用简单的基于对角线的校正方法(该方法由传统的WB方法应用于原始RGB图像(例如,gray world[10]),但发现它们在应用于sRGB图像时给出的结果不足,如[2]所示。实际上,直接对训练图像进行基于对角线的校正类似于乘法颜色抖动。这就是为什么本文需要使用非线性颜色操作(例如,由[2]估计的多项式校正)来对sRGB图像进行更精确的WB校正。差分的示例如图6所示。 值得一提的是,WB-sRGB方法使用的训练数据有固定的色温(2850K、3800K、5500K、6500K、7500K),所有色温都有颜色校正矩阵映射到相应的正确WB。在大多数情况下,其中一种固定的色温在视觉上与正确的WB相似。因此,如果WB-sRGB方法应用于已经正确白平衡的输入图像,则计算的转换将充当标识。
(2) 第二种策略考虑了一些训练图像可能包含一些错误的情况247个 白色平衡图像。因此,本文还将WB校正步骤应用于所有训练图像以及测试图像。这再次在测试和训练图像上使用WB-sRGB方法[2]。
(3) 最终的策略是根据本文在Sec.4中描述的方法扩充训练数据集。与其他增强方法一样,不需要预处理校正。这种增强过程背后的假设是,DNN模型的稳健性可以通过对作为颜色恒定性误差样本的增强图像进行训练来提高。
测试数据类别测试图像分为两类。在类别1(Cat-1)中,本文通过应用本文的方法来模拟相机WB错误,扩展了CIFAR-10、CIFAR-100和ADE20K数据集中的原始测试图像。现在,每个测试图像都有十(10)个变体,它们共享相同的地面真值标签。本文承认这是不太理想的,假设同样的方法修改测试图像是用来增加训练图像。然而,本文确信所提出的方法能够模拟WB误差,本文认为Cat-1图像代表了真实世界的例子。尽管如此,本文并没有将策略1和策略2应用于Cat-1,因为WB-sRGB方法基于用于生成测试图像的类似框架。为了完整起见,本文还包括类别2(Cat-2),它由直接从原始RGB图像生成的新数据集组成。具体来说,原始RGB图像使用完整的相机内管道渲染到sRGB图像,相机内颜色恒定性错误。因此,Cat-2的测试图像显示出精确的颜色恒定性错误,但包含的测试图像较少,本文已经为其提供了地面真实性标签。
5.1. Experimental Setup
本文将上述三种策略与现有的两种广泛采用的颜色增强过程:RGB颜色抖动和HSV抖动进行了比较。
本文的方法
使用k=25应用最近邻搜索。所提出的WB增强模型在7.3秒(CPU)和1.0秒(GPU)中运行,生成10幅1200万像素图像。报告的运行时间是使用Intelr Xeonr E5-1607@3.10ghz CPU和NVIDIA计算的 泰坦X GPU。
现有颜色增强
据本文所知,现有的增色方法没有标准化的方法。因此,本文测试了不同的设置并选择了产生最佳结果的设置。
5.2. Network Training
对于图像分类,在ImageNet数据集上训练新模型需要付出难以承受的努力,例如,ILSVRC 2012由100万张图像组成,在应用任何颜色增强技术后将为1000万张图像。因此,本文在CIFAR-10和CIFAR-100数据集[35]上进行实验,因为每个数据集中的图像数量更易于管理。本文在CIFAR-10上从头开始训练SmallNet[46]。本文还调整了AlexNet[36]以识别CIFAR-10和CIFAR-100数据集中的新类。对于语义分割,本文在ADE20K数据集的训练集上对SegNet[5]进行了调整[61]。
本文对每种型号进行以下训练:
(i) 原始的训练图像,
(ii)应用于原始训练图像的WB-sRGB方法[2],以及
(iii)原始训练图像和通过颜色增强方法生成的附加图像。对于颜色增强,本文检查了RGB颜色抖动、HSV抖动和WB增强。因此,本文为每个CNN架构训练了五个模型,每个模型都是在上述训练环境中训练的。
为了进行公平的比较,本文为每个模型训练相同的迭代次数。具体来说,训练分别针对图像分类和语义分割任务的∼29000和∼550000次迭代。本文调整了阶段数,以确保每个模型都在相同数量的小批量上进行训练,以便在增广集和原始集上进行公平的比较。
注意,通过使用固定数量的迭代来使用原始训练数据和增强数据训练模型,当本文使用附加增强数据训练模型时,本文没有充分发挥附加训练图像的全部潜力。训练是用英伟达进行的 泰坦X GPU。
5.3. Results on Cat-1
Cat-1使用由本文在第1节中描述的方法生成的测试图像测试每个模型。
分类
本文使用CIFAR-10测试集(10000个图像)测试在同一数据集的训练集上训练的SmallNet和AlexNet模型。本文还使用CIFAR100测试集(10000个图像)来评估在CIFAR-100上训练的AlexNet模型。在将WB仿真应用于测试集之后,对于CIFAR-10和CIFAR-100的每个测试集,本文有100000个图像。各训练模型获得的最高精度见表3。在本文所提出的WB增强数据上训练的模型在本文的扩展测试图像(包括强色彩投射)上获得了最好的结果。
有趣的是,实验表明,在大多数情况下,对训练数据应用WB校正[2],可以使用原始测试集和扩展测试集提高准确性。在WB增强训练图像上训练的DNNs与使用其他颜色增强器相比,在原始测试图像上取得了最好的改进。
语义分割
本文使用了ADE20K验证集,使用的设置与第2节中解释的相同。表4显示了训练的SegNet模型的pxl acc和IoU。本文的WB增强得到了最好的结果;图7显示了定性的例子。
5.4. Results on Cat-2
Cat-2数据要求本文使用原始RGB图像生成和标记自己的测试图像数据集。为此,本文从以下数据集中收集了518个包含CIFAR-10对象类的原始RGB图像:HDR+突发摄影数据集[27]、MIT Adobe FiveK数据集[11]和Raise数据集[20]。本文使用Adobe Camera raw模块渲染了所有不同色温和两种光饰风格的原始RGB图像。Adobe Camera Raw精确地模拟了相机上的ISP,产生的结果几乎与incamera处理产生的结果相同[2]。包含多个对象的图像被手动裁剪为只包含感兴趣的对象,即CIFAR-10类。最后,本文生成了15098个渲染的测试图像,这些图像真实地反映了相机的WB设置。本文在实验中使用了以下测试集:
(i) 在相机中,auto WB包含使用Adobe camera Raw中的auto WB(AWB)校正设置渲染的图像,该设置模拟相机的AWB功能。AWB有时确实会失败;本文手动删除具有明显颜色投射的图像。这组图像相当于在现有图像分类数据集上测试图像。
(ii)在相机中,WB设置包含使用不同色温和照片处理风格渲染的图像。此集合表示测试包含WB颜色转换错误的图像。
(iii)应用于集合(ii)的WB预处理校正包含应用WB sRGB校正后的集合(ii)的图像[2]。该集合用于研究在推理阶段应用预处理WB校正的潜在改进。
表5显示了SmallNet和AlexNet在外部测试集上获得的最高精度。实验表明,当测试集是用不正确的WB设置修改的图像时,与使用相机内AWB的“适当”白平衡图像获得的原始精度相比,精度降低了6%。本文还注意到,通过对训练/测试图像应用预处理WB或以端到端的方式应用WB增强,可以获得最佳的精度。错误分类图像的示例如图8所示。
6. Conclusion
本文研究了在图像分类和语义分割中,计算色彩恒常性误差对DNNs的影响。介绍了一种精确模拟WB误差的增广方法。本文证明,预处理WB校正和训练DNNs与本文的增强WB图像都提高了针对CIFAR-10、CIFAR100和ADE20K数据集的DNNs的结果。本文相信本文的WB增强方法对于DNN寻求图像增强的其他任务是有用的。
深度学习白平衡(Color Constancy,AWB):ICCV2019论文解析的更多相关文章
- 深度学习数据特征提取:ICCV2019论文解析
深度学习数据特征提取:ICCV2019论文解析 Goal-Driven Sequential Data Abstraction 论文链接: http://openaccess.thecvf.com/c ...
- 人脸真伪验证与识别:ICCV2019论文解析
人脸真伪验证与识别:ICCV2019论文解析 Face Forensics++: Learning to Detect Manipulated Facial Images 论文链接: http://o ...
- 大型图像数据聚类匹配:ICCV2019论文解析
大型图像数据聚类匹配:ICCV2019论文解析 Jointly Aligning Millions of Images with Deep Penalised Reconstruction Conge ...
- 结构感知图像修复:ICCV2019论文解析
结构感知图像修复:ICCV2019论文解析 StructureFlow: Image Inpainting via Structure-aware Appearance Flow 论文链接: http ...
- 面部表情视频中进行远程心率测量:ICCV2019论文解析
面部表情视频中进行远程心率测量:ICCV2019论文解析 Remote Heart Rate Measurement from Highly Compressed Facial Videos: an ...
- 人脸标记检测:ICCV2019论文解析
人脸标记检测:ICCV2019论文解析 Learning Robust Facial Landmark Detection via Hierarchical Structured Ensemble 论 ...
- 无监督域对抗算法:ICCV2019论文解析
无监督域对抗算法:ICCV2019论文解析 Drop to Adapt: Learning Discriminative Features for Unsupervised Domain Adapta ...
- 视频动作定位的分层自关注网络:ICCV2019论文解析
视频动作定位的分层自关注网络:ICCV2019论文解析 Hierarchical Self-Attention Network for Action Localization in Videos 论文 ...
- 摄像头定位:ICCV2019论文解析
摄像头定位:ICCV2019论文解析 SANet: Scene Agnostic Network for Camera Localization 论文链接: http://openaccess.the ...
随机推荐
- Sublime Text 3 Build 3176 License
先在hosts文件里加入两行: 127.0.0.1 www.sublimetext.com 127.0.0.1 license.sublimehq.com 目的是防止Sublime Text更新和检测 ...
- 手脱ASPack2.12壳(练习)
俗话说柿子挑软的捏,练习脱壳还得用加密壳脱 0x01 准备 1.OD 2.ASPack加壳软件 0x02 脱壳实战 查一下壳 OD载入 第一个call,F7进去 第二个call也是F7进去 之后往下单 ...
- CVE-2013-2551:Internet Explore VML COALineDashStyleArray 整数溢出漏洞简单调试分析
0x01 2013 Pwn2Own 黑客大赛 在 Pwn2Own 的黑客大赛上,来自法国的 VUPEN 安全团队再一次利用 0day 漏洞攻破 Windows8 环境下的 IE10 浏览器,这一次问题 ...
- NT 内核函数原型大全
NTSYSAPINTSTATUSNTAPINtAcceptConnectPort(OUT PHANDLE PortHandle,IN PVOID PortIdentifier,IN PPORT_MES ...
- Win64 驱动内核编程-12.回调监控进线程创建和退出
回调监控进线程创建和退出 两个注册回调的函数:PsSetCreateProcessNotifyRoutine 进程回调PsSetCreateThreadNotifyRoutine 线程回调分 ...
- node-mongo封装
node 里面调用mongo封装了下. mongo.js文件 const { MongoClient, ObjectId } = require('mongodb'); const mongourl ...
- MySQL 连接超时:报错SQLSTATE[HY000] [2002] Connection timed out解决
当你的代码部署到服务器里的时候,你的mysql 的host 值 应该为 127.0.0.1 而不是 你的服务器ip 不然就会报错. 其实当你的代码进入到服务器里的时候,mysql和代码是相当于在同一个 ...
- 深入探索Android热修复技术原理读书笔记 —— 资源热修复技术
该系列文章: 深入探索Android热修复技术原理读书笔记 -- 热修复技术介绍 深入探索Android热修复技术原理读书笔记 -- 代码热修复技术 1 普遍的实现方式 Android资源的热修复,就 ...
- OOP第一章总结
经过了三周的OO,尽管过程不太轻松,但是有所得还是值得欣慰的事! (1)程序结构 第一次作业: UML类图如下,第一次作业在结构上并没有太多面向对象的思想,只是简单的分类,一个运行类,两个对象类,预处 ...
- 【转】java-selenium三种等待方式
方式1: 线程等待:Thread.sleep(xxxx) 只要在case中加入sleep就会强制等待设置的时间后才会执行之后的命令,这种等待一般适用于调试脚本的时候. java代码: //等待3秒 T ...