摘要: 反射去除是一项应用广泛的计算机视觉任务。基于非学习的方法可能会引起模糊,而本文提出了并行反射去除网络【Concurrent Reflection Removal NetWork,CRRN】使用统一的系统解决该问题。其整合了图像信息与多尺寸的梯度信息,达到了SOTA的水平。

一、简介

  反射是一种典型的图像退化,其可以导致许多计算机视觉系统的问题。反射去除旨在增强背景场景的可见性的同时去除反射。

  大多数反射去除的方法是基于非学习的,而依赖于人工设计的基于特定假设的图像特征,如背景与反射不同的模糊成都导致的梯度偏置的先验、重影效应以及非局部信息的内容的先验等。然而,这些假设对于真实的场景经常不适用,因为底层图像的先验只描述了反射属性的部分,只能反映真值的部分。当背景与反射在结构与模式上相似时,基于非学习的方法难以同时去除反射与复原背景。

  为了获取更广泛的反射属性,近来提出了深度学习的解决方案【7】。基于深度学习的方案【7】改善了模型的能力,用于获取多样的反射图像的特征。然而,这些方法仍然同非学习方法一样,使用梯度推断与图像推断的两阶段架构,这不能充分的利用多尺度信息用于背景复原。此外,其通常依赖于像素级的损失(一种基于深度学习的图像去反光方法 去除反光算法_一种基于深度学习的图像去反光方法一种基于深度学习的图像去反光方法 去除反光算法_卷积_02损失),这会生成模糊的推测。最后,以前的方案主要使用合成图像训练,不能够完整的捕捉到真实世界成像过程的综合信息。

  为了解决这些问题,本文提出了并行反射去除网络【Concurrent Reflection Removal NetWork,CRRN】用于移除自然场景的反射,如图1所示。本文的主要贡献总结如下:

  -对比梯度分类再复原图像的两阶段卷积架构,本文提出了使用一个统一的系统进行两个分离的阶段(梯度推断与图像推断),从而并行的去除反射。

  -本文提出了多尺度导向的学习网络,用于更好的保持背景的细节,即图像推断网络中的背景重建受到梯度推断网络的梯度特征的导向。

  -本文设计了感知动机的损失函数,其有助于抑制像素级损失函数引入的模糊,从而产生更好的结果;

  -为了帮助CRNN的训练使其在真实数据兼容,获取了大量反射图像数据集用于生成训练数据,并证明其有助于提高本文方法的表现与泛化能力。其可能是数据驱动方法的第一个反射图像数据集。

一种基于深度学习的图像去反光方法 去除反光算法_神经网络_03


  图1,CRRN网络架构,其包含两个并行子网络:梯度推断网络【Gradient inference Network,GiN】用于估计背景的梯度,以及图像推断网络【Image inference Network,IiN】用于估计背景与反射层。GiN的输入为将梯度作为第4通道的张量,IiN的输入为包含反射的图像。IiN的上采样受相关联的来自GiN的有着相同分辨率的梯度特征导向。IiN的两个特征提取层提取关于背景的尺寸不变性特征。IiN给出估计的背景与反射图像,而GiN给出估计的背景梯度作为输出。


二、相关工作
  图像去除已经有超过十年的广泛研究。之前的工作可以粗略的分为两类。一类是非学习方法,由于问题的病态性,不同的先验应用于考察背景与反射图像的属性:如稀疏先验。然而其可能在纹理区域密集且错误;还有使用多尺寸模糊、拉普拉斯数据保真等。人工先验基于背景与反射的特定属性(如不同的模糊程度),然而当这些属性难以观察时,其经常失效。这类方法的另一些方法是使用不同视角的图像集合,通过对比多视角获取的背景与反射的运动曲线,并假设玻璃与相机足够近,由于视差,每层的运动不同,使用参数模型可以描绘出每层的运动情况。通过联合运动与传统线索,如果输入数据接近完备,使用多张图像的非学习方法可以更加展现可靠的结果。然而,对特殊工具的需要限制了这样的方法,尤其对于移动设备与互联网下载的图像。
  另一类通过使用基于学习的方法解决问题。由于深度学习在高层与底层计算机视觉问题的良好结果,其广泛的模型能力有利于反射去除问题。如两阶段深度学习使用光场相机学习边缘特征。而【7】介绍的架构在训练整个网络期间都使用边缘信息以保证边缘细节。尽管基于深度学习的方法更好的获取图像属性,但是两阶段的卷积架构同很多基于非学习方法的方法一样,忽略了内在的联系,从而减低了其表现。


三、数据集准备

3.1 真实世界反射图像数据集用于数据驱动的方法

  真实世界图像数据集在学习基于物理的计算机视觉于面部欺骗问题有十分重要的作用。尽管反射去除问题已有十年多的研究,开源数据集仍然有限。数据驱动的方法需要大量的数据集以学习反射图像的属性。SIR是最大的反射去除图像数据集,其提供近500个图像三元组,包含混合,背景与反射图像,但其规模不足以满足训练复杂的网络。考虑到获取同SIR一样的图像三元组的难度,数据规模的瓶颈的备选方案是使用合成数据集。[7]提供了一种方法,但其忽略了反射的其他属性(如鬼影效应、成像过程的其他噪声),其使训练的效果下降,限制了真实世界场景的广泛使用。

  为了帮助CRRN的训练使其在真实世界兼容,本文构建了大规模的反射图像数据集【Reflection Image Dataset,RID】,其包含了3250张图像,然后使用从RID获取的反射图像合成输入混合图像。

  为了收集反射图像,使用NIKON D5300相机,使用多种曝光参数与数值孔径,通过手控模式获取不同场景的图像。反射图像通过在玻璃后放置黑色的纸。

  RID有如下两个主要特征,部分场景于图2展示:

  -多样性。本文考虑三个方面增加RID的多样性:反射图像有不同的光强条件(如图2左第一行);调整随机焦距产生不同程度的反射模糊(如图2左第二行);反射图像在多样的场景采集(如图2左第三行);

  -规模。RID包含3250张图像,包含接近2000张明亮场景的反射图像与剩下的相对黑暗的场景。

一种基于深度学习的图像去反光方法 去除反光算法_计算机视觉_04


  图2,RID反射图像的样本与对应的合成图像。从顶到底展示了不同的亮度条件,焦距与场景的多样性。

3.2 生成训练数据
  图像反射去除通常使用的图像形成模型为一种基于深度学习的图像去反光方法 去除反光算法_一种基于深度学习的图像去反光方法_05其中,一种基于深度学习的图像去反光方法 去除反光算法_深度学习_06是混合图像,一种基于深度学习的图像去反光方法 去除反光算法_深度学习_07是背景图像,一种基于深度学习的图像去反光方法 去除反光算法_神经网络_08是反射图像。部分合成的与真实的训练图像一种基于深度学习的图像去反光方法 去除反光算法_深度学习_06由RID的反射图像作为一种基于深度学习的图像去反光方法 去除反光算法_神经网络_08与其他自然图像(本文使用COCO与PASCAL VOC数据集)作为一种基于深度学习的图像去反光方法 去除反光算法_深度学习_07,并使用不同的权重。
  为了确保训练数据的充足,一种基于深度学习的图像去反光方法 去除反光算法_神经网络_12一种基于深度学习的图像去反光方法 去除反光算法_一种基于深度学习的图像去反光方法_13从0.8到1与0.1到0.5随机采样。此外,通过图像旋转与剪切增加生成图像。最后共计14754张图像。


四、提议方法
  本部分介绍提出的网络的方法论,使用人类感知启发的损失函数的优化方法,以及网络训练细节。

4.1 网络架构

  由于一种基于深度学习的图像去反光方法 去除反光算法_深度学习_07一种基于深度学习的图像去反光方法 去除反光算法_神经网络_08内在关联,且梯度信息一种基于深度学习的图像去反光方法 去除反光算法_卷积_16对于反射去除是有用的,本文基于多任务学习策略设计了CRRN,在一种基于深度学习的图像去反光方法 去除反光算法_卷积_16的导向下并行学习一种基于深度学习的图像去反光方法 去除反光算法_深度学习_07一种基于深度学习的图像去反光方法 去除反光算法_神经网络_08。CRRN使用多种基于一种基于深度学习的图像去反光方法 去除反光算法_卷积_20的损失函数,如图1所示。给定输入图像一种基于深度学习的图像去反光方法 去除反光算法_深度学习_06,定义稠密的一种基于深度学习的图像去反光方法 去除反光算法_卷积_20预测:一种基于深度学习的图像去反光方法 去除反光算法_计算机视觉_23其中带有包含所有CNN参数的一种基于深度学习的图像去反光方法 去除反光算法_卷积_24的网络一种基于深度学习的图像去反光方法 去除反光算法_计算机视觉_25将被训练,而一种基于深度学习的图像去反光方法 去除反光算法_神经网络_26是真值一种基于深度学习的图像去反光方法 去除反光算法_卷积_20的估计值。

  CRRN通过设计两个并行的子网络实现。不同于两阶段卷积架构,本文连接了梯度推断与图像推断,成为统一的系统,并行的执行两个部分。对于GiN,输入是4通道张量,其是输入的混合图像与其对应的地图的联合。其从多尺度中提取图像的梯度信息一种基于深度学习的图像去反光方法 去除反光算法_卷积_16并作为整个图像复原过程的导向。IiN将混合图像作为输入,提取描述全局结构与高级语义信息的背景特征估计一种基于深度学习的图像去反光方法 去除反光算法_深度学习_07一种基于深度学习的图像去反光方法 去除反光算法_神经网络_08。为了两个网络彼此利用信息,IiN与GiN共享卷积层。

  GiN设计用于学习一种基于深度学习的图像去反光方法 去除反光算法_深度学习_06一种基于深度学习的图像去反光方法 去除反光算法_卷积_16的映射,如图1所示,GiN的架构是镜像线性的编码-解码器CNN架构。编码器部分包含五个步长为1的卷积层与五个步长为2的卷积层,其逐步的抽取与下采样特征。在解码器部分,特征上采样并连接复原的不存在反射影响的输出梯度。为了保持尖锐的细节并避免损失梯度信息,前期的编码器特征连接至对应的有着相同空间分辨率的解码器层。图3展示了一个样本结果,其展示了GiN成功的移除了反射的梯度,保留了属于背景的梯度。

一种基于深度学习的图像去反光方法 去除反光算法_一种基于深度学习的图像去反光方法_33


  图3,GiN生成的估计梯度,与真值梯度的比较。

  IiN是一个多任务学习网络,包含VGG-16网络的偏置。VGG-16网络通过大量数据可以在高层计算机视觉任务中泛化为其他图像任务。为了使预训练的VGG16模型适合本文的任务,首先将VGG-16的全连接层代替为3x3的卷积层并微调。
  在VGG-16提取特征后,设计一个联合滤波网络使用多上下文特征预测一种基于深度学习的图像去反光方法 去除反光算法_深度学习_07。其包含两个特征提取层与五个转置卷积层。考虑将初始-ResNet-v2的还原-A/B层作为CRRN的特征提取层A/B。该模型能够通过多尺寸核提取尺寸无关特征,但是其很少用于图像到图像的问题,由于池化会导致特征的减少。为了使其满足本文的任务,做出了两个调整:首先,原始模型的池化层替换为两个卷积层,分别使用1x1与7x7的滤波器;然后,所有卷积层的步长减少为1。转置卷积层如图1所示,使用平行的架构,包含三个子网络。本文也使用残差网络用于学习映射,因为一种基于深度学习的图像去反光方法 去除反光算法_卷积_35的狭小亮度分布。
  多尺寸特征对于反射去除中图像细节的提取十分有效。为了充分使用多尺寸信息,GiN的每个转置卷积层的输出都与相同级别的IiN的转置卷积层连接起来,其于图1展示。

4.2 损失函数
  之前的方法主要使用像素级的损失函数【7】,其会产生模糊的预测因为其与人类视觉感知不一致。为了得到满意的结果,本文考虑了人类的感知。
  在IiN中,考虑感知动机的结果相似性【SSIM】衡量一种基于深度学习的图像去反光方法 去除反光算法_卷积_36与其真值的相似度。SSIM的定义为一种基于深度学习的图像去反光方法 去除反光算法_深度学习_37其中一种基于深度学习的图像去反光方法 去除反光算法_计算机视觉_38一种基于深度学习的图像去反光方法 去除反光算法_深度学习_39一种基于深度学习的图像去反光方法 去除反光算法_深度学习_40一种基于深度学习的图像去反光方法 去除反光算法_神经网络_41的均值,一种基于深度学习的图像去反光方法 去除反光算法_深度学习_42一种基于深度学习的图像去反光方法 去除反光算法_计算机视觉_43一种基于深度学习的图像去反光方法 去除反光算法_深度学习_40一种基于深度学习的图像去反光方法 去除反光算法_神经网络_41的方差,一种基于深度学习的图像去反光方法 去除反光算法_一种基于深度学习的图像去反光方法_46是其协方差。SSIM衡量了图像的亮度、对比度与结构的相似性。为了让其值能够与通常的损失函数兼容,定义IiN的损失函数为一种基于深度学习的图像去反光方法 去除反光算法_神经网络_47因此在像素级上最小化损失函数。
  尽管SSIM的感知贡献,其仍会引起亮度的改变与色彩的偏移,使得最终结果变差,由于其不敏感的统一偏置。为了解决这个问题,引入一种基于深度学习的图像去反光方法 去除反光算法_卷积_02损失用于背景层,平衡亮度与色彩。
  在GiN中,SSIM中的亮度与对比度无法定义,因此省略原始SSIM中的对比度与亮度,定义损失函数为一种基于深度学习的图像去反光方法 去除反光算法_卷积_49其中SI用于衡量图像的结构相似性,定义为一种基于深度学习的图像去反光方法 去除反光算法_一种基于深度学习的图像去反光方法_50这里所有的参数与式(4)的定义一致。
  连接上述项,完整的损失函数即一种基于深度学习的图像去反光方法 去除反光算法_卷积_51其中权重系数一种基于深度学习的图像去反光方法 去除反光算法_卷积_52在本文的实验中基于经验的设置为0.8。

4.3 训练策略
  CRRN使用PyTorch实现。为了防止过拟合,网络使用多阶段训练策略:GiN首先使用学习率一种基于深度学习的图像去反光方法 去除反光算法_计算机视觉_53训练40轮次,之后连接到IiN,然后端到端的微调整个网络,其保证子网络有机会并行。整个网络的学习率初始为一种基于深度学习的图像去反光方法 去除反光算法_计算机视觉_53训练50轮次,并在接下来的30轮次衰减到一种基于深度学习的图像去反光方法 去除反光算法_一种基于深度学习的图像去反光方法_55
  先前的工作使用深度学习主要通过在整个图像剪切分辨率一种基于深度学习的图像去反光方法 去除反光算法_深度学习_56的图像块优化整个网络。然而,很多现实世界的反射只占据图像的某些区域,如同区域的噪声,本文认为其可以称为反射的区域性。使用不带有反射的图像块会使最终表现变差,而CRRN则使用整个图像。输入图像的尺寸为一种基于深度学习的图像去反光方法 去除反光算法_一种基于深度学习的图像去反光方法_57一种基于深度学习的图像去反光方法 去除反光算法_一种基于深度学习的图像去反光方法_58以保证网络的尺寸不变性。


五、实验
  为了评估CRRN,首先与SOTA的反射去除算法比较,通过SIR数据集的量化指标与视觉质量。然后使用自比较实验证实CRRN关键部分的必要性。SIR数据集的图像三元组分为设定数据集与自然数据集。本文只在自然数据集上评估。
  使用SSIM与SI作为量化评估的错误度量。由于反射的区域性,基于经验的注意到一些方法可以移除局部反射,但会降低整个图像的质量。原始的SSIM与SI评估了一种基于深度学习的图像去反光方法 去除反光算法_深度学习_07一种基于深度学习的图像去反光方法 去除反光算法_深度学习_60在整个像平面的相似性,而难以准确的反映反射去除的表现。因此定义区域的SSIM与SI,为SSIM一种基于深度学习的图像去反光方法 去除反光算法_深度学习_61与SI一种基于深度学习的图像去反光方法 去除反光算法_深度学习_61,用于实现有限区域的错误度量。本文人工的标记反射区域并评估这些区域的SSIM与SI。

5.1 比较于SOTA

  比较本文的方法与SOTA方法,包括FY17【7】,NR17,WS16,LB14。

  量化评估结果使用四种不同的错误度量,比较四种SOTA方法总结如表1。其数值展示了SIR上自然图像上超过100组的平均值。如表1所示,CRNN在四个错误指标上均比其他方法的表现更好。更高的SSIM值表明本文的方法更好的复原了整个图像,其全局表现更接近真值。更高的SI值表明本文的方法更好的保存了结构信息。更高的SSIM一种基于深度学习的图像去反光方法 去除反光算法_深度学习_61与SI一种基于深度学习的图像去反光方法 去除反光算法_深度学习_61值表明本文的方法更有效的去除强反射。

一种基于深度学习的图像去反光方法 去除反光算法_卷积_65


  表1,使用四种错误指标与四种方法的量化评估结果。一种基于深度学习的图像去反光方法 去除反光算法_深度学习_61的值也证明了本文方法的优点。

一种基于深度学习的图像去反光方法 去除反光算法_深度学习_67


  图4,四张自然图像上与四种方法比较的反射去除结果,相应的放大图像邻接于图像,SSIM与SSIM一种基于深度学习的图像去反光方法 去除反光算法_深度学习_61值在图像下方给出。  为了展示本文方法的泛化能力,考虑使用FY17【7】的开源数据集进行测试。在本实验中,CRRN仍然由本文的数据集与训练策略进行训练,而FY17【7】使用其开源模型。由于缺乏真值,只展示视觉质量,如图5。FY17在其数据集的表现良好,但CRRN也达到了可观的结果并且在某些区域更好(如图5左部分红框)。再使用本文的数据集训练FY17【7】并使用SIR测试,其量化与质化表现低于本文的方法。

一种基于深度学习的图像去反光方法 去除反光算法_卷积_69


  图5,在FY17的开源数据集与其比较泛化能力。

5.2 网络分析
  CRRN包含两个子网:GiN与IiN。为了分析GiN的贡献以及感知动机的损失,训练三个不同的网络,分别单独使用一种基于深度学习的图像去反光方法 去除反光算法_卷积_02损失、只使用IiN且不加入特征层以及只使用GiN。
  表2展示了两种网络与完整的CRRN模型的四种错误指标的值。图6展示了CRRN的GiN与单独的GiN产生的结果对比。CRRN的表现都更佳。这表明了两个子网络交互更加有效。

一种基于深度学习的图像去反光方法 去除反光算法_计算机视觉_71


  表2,CRRN,只使用一种基于深度学习的图像去反光方法 去除反光算法_卷积_02损失的CRRN与单独子网络的结果比较。

一种基于深度学习的图像去反光方法 去除反光算法_深度学习_73


  图6,CRRN中IiN与GiN的输出与单独的IiN与GiN的输出的比较。对应的放大图像于图像下方展示。


六、结论

  本文提出了基于并行深度学习的架构,可以有效的去除反射。通过统一两个阶段使得高层信息与多尺度的底层特征整合。基于数据集与训练策略,本文取得了SOTA的效果,并对其他数据有效泛化。

  然而,当整张图像均存在反射时,CRRN的表现差,如图7所示。此外在训练时会发生梯度消失与色彩偏移。

一种基于深度学习的图像去反光方法 去除反光算法_卷积_74


  图7,整张图像反射的极端例子。