一、摘要
现有的图像修复方法会导致诸如颜色差异和模糊之类的伪影,后处理通常用于减少此类伪影,但代价昂贵且可能失败。本文提出了部分卷积,其中卷积被掩码并重新规一化,仅以有效像素为条件。就是将有效像素和缺失像素区别对待,卷积层仅对满足条件的有效像素进行卷积和规范操作。还提出了一个机制,掩码自动更新机制,根据掩码更新规则对掩码进行自动更新,直至掩码中所有的值均为1。在不规则图像上有良好的效果,修复结果与孔洞值无关。
二、介绍
之前的深度学习方法:专注于位于图像中心周围的矩形区域,依赖于昂贵的后处理。
本文:对不规则掩码处理操作具有鲁棒性,并产生语义上有意义的预测(填充部分与图像其余部分平滑结合,因此不需要额外的后处理或混合操作)。
图像修复的两种方法:
①使用剩余图像的图像统计来填补漏洞
PatchMatch:作为最先进的方法之一,迭代搜索最适合填充漏洞的补丁,虽然这种方法通常会产生平滑的结果,但它受到可用图像统计的限制,并且没有视觉语义的概念。
②使用深度学习的方法修补漏洞
深度神经网络以端到端方式学习语义先验和有意义的隐藏表示,这些网络在图像上使用卷积滤波器,用固定值替换被删除的内容。因此,这些方法依赖于初始孔洞值,通常表现为孔洞区域缺乏纹理、明显的颜色对比或孔洞周围的人工边缘响应。
端到端的解释:
端到端是相对于非端到端而言的,在机器学习最开始的时候,人们并不是直接输入原始数据,获得最终结果,而是首先通过特征提取,对原始数据进行初步的处理,然后再对于得到的特征进行学习,得出分类或回归的结果。因此在这种情况下,特征的提取会对模型的最终表现有着巨大的影响,而特征描述符的书写又具有很大的经验成分,所以是一件比较困难的任务。
端到端的学习,就是把特征提取部分也交给模型做,直接输入原始数据或者经过些轻微预处理的数据,让模型自己进行特征提取。并且。神经网络可以很好的学习到特征的描述,之前需要人工设计的特征算子,本身也可以通过神经网络的方式,让模型自己习得。
局限——改进
局限:根据孔值调节输出最终会导致各种类型的视觉伪影,这些伪影需要昂贵的后处理。
改进:实现独立于孔初始化且无需任何额外后处理的良好结合的孔预测。
局限:关注矩形孔,通常假设矩形孔是图像的中心,可能会导致对矩形孔的过度拟合,并最终限制这些模型在应用的效用。
改进:本文不仅关注孔的大小的影响,还关注孔是否与图像边界接触的影响。
为了正确处理不规则掩码,本文使用部分卷积层,包括掩码和重新归一化的卷积操作,然后是掩码更新步骤,掩码和重新归一化卷积的概念也被称为图像分割任务的分割感知卷积,但是没有对输入的掩码进行修改。本文的卷积结果仅取决于每一层的非孔洞区域。
贡献:
①提出使用带有自动掩码更新步骤的部分卷积来实现最先进的图像修复
②虽然先前的工作未能在具有典型卷积的U-Net中通过跳跃连接实现良好的修复结果,但证明部分卷积和掩码更新替换卷积层可以实现最先进的修复结果。
③第一个证明在不规则形状的孔上训练图像修复模型的有效性。
④提出了一个大型的不规则掩码数据集,它向公众发布,以促进未来训练和评估修复模型的工作。
三、相关的工作
非学习方法:依赖于使用一些机制(如距离场)将外观信息从相邻像素传播到目标区域,这只能处理颜色和纹理变化较小的窄孔,大孔会导致过度光滑伪影。对于实时应用程序,这些方法仍然不够快,并且不能进行语义感知的补丁选择。
基于深度学习的方法通常用一些恒定的占位符值初始化孔洞,然后通过卷积网络传递。由于产生的伪影,后处理通常用于改善条件作用对占位符值的影响。
对于标准卷积层,编码器阶段中的噪声或错误的空洞初始化值的原始特征将传播到解码器阶段,本文不依赖于空洞区域的占位符值,目标是在单个前馈过程中获得良好的结果,并使用跳跃连接产生详细的输出。
四、方法
部分卷积层(部分卷积运算+掩码更新函数)
W是卷积滤波器的卷积滤波器权重,X当前卷积滑动窗口的特征值,M是相应的二进制掩码,b是相应的偏差,1与M具有相同的形状,但是所有的元素都是1,输出值取决于不是掩码的输入,sum(1)/sum(i)是缩放因子,应用适当的缩放对有效输入的变化量进行调整。
每次部分卷积运算之后,更新掩码,如果卷积能够将其输出条件设置在至少一个有效的输入值上,将该位置标记为有效。
如果输入包含任何有效像素,任何掩码最终都将是全1。
可以理解为对mask进行卷积运算,卷积核的权值都为1,相当于对滑动窗口对应的mask小区域求和,即sum(M),如果>0,该小区域卷积之后的结果为1。Mask的更新只要网络深度足够大,mask最终都为1。
网络架构实现
直接的实现是定义大小为C × H × W的二进制掩码,与其相关的图像/特征大小相同,然后使用固定的卷积层来实现掩码更新,其内核大小与部分卷积操作相同,但权重相同设置为1并且没有偏差。
我们设计了一个类似U-Net的架构,用部分卷积层替换所有卷积层,并在解码阶段使用最近邻上采样。跳跃链接将分别连接两个特征映射和两个掩码,作为下一个部分卷积层的特征和掩码输入。最后一个部分卷积层的输入将包含原始输入图像与孔和原始掩码的连接,使模型能够复制非孔像素。
左边包括8个部分卷积层Pconv1-Pconv8,负责图像的编码,右边包括8个部分卷积层Pconv9-Pconv16负责解码,解码层的输入是上一层图上采样+下采样过程中的特征图(为了保证和编码层原图大小一致),在通道维度上的一个concatenate(拼接)。直观上理解的话,编码层卷积的目的是提取图像的特征值和信息,解码层卷积的目的是从通道维度上让编码层图片与上一个解码层做一个风格上的融合和逼近。
部分卷积作为填充:我们在图像边界使用具有适当掩码的部分卷积来代替典型的填充。(可以确保图像边界处的修复内容不受图像外部无效值的影响)。
U-Net网络架构
编码器:卷积操作+下采样
所使用的卷积结构统一为3*3的卷积核,步长为1,填充padding为0
= [ + 2p - k / 3 ]+ 1 —— = - 2
1-5层卷积层都分别是由3个3*3卷积组成,每通过一个3*3卷积尺寸都减少2。
池化(下采样):前四层卷积层都通过最大池化进入下一层,各池化层的核大小为K = 2,p = 0,s = 2, = / 2。
第五层没有max-pooling,而是直接将得到的特征图送入解码器。
解码器:特征图经过解码器恢复原始尺寸,卷积+上采样+跳跃连接
上采样一般有两种方法:反卷积、插值法
U-Net通过跳跃连接,将低分辨率和高分辨率的特征映射结合起来,有效的融合了低层次和高层次的图像特征。
跳跃连接是在上采样的过程中,融合下采样过程中的特征图,用到的融合操作就是将特征图的通道进行叠加。(例如一个大小为256*256*64的特征图,即w为256,h为256,c为64,和一个大小为256*256*32的特征图进行融合,就会得到一个大小为256*256*96的特征图)
U-Net核心思想:不含全连接层的全卷积网络,可适应任意尺寸的输入。增大数据尺寸的反卷积层,能够输出精细的结果。结合不同深度结果的跳跃连接,同时确保鲁棒性和精确性。
使用1*1卷积代替全连接层的好处:输入的图片形状不再固定了,由于全连接层的输入必须固定形状的,所以输入模型的图片一般都要先修改到固定的尺寸。
跳跃连接
在训练深度神经网络时,模型的性能随着架构深度的增加而下降,这被称为退化问题,原因如下:过度拟合,随着深度的增加,模型往往会过度拟合。梯度消失/梯度爆炸,深度学习网络训练的时候,采用的是反向传播方式,该方式使用链式求导,计算每层梯度的时候会涉及一些连乘操作,因此如果网络过深,当连乘的因子大部分小于1,最后乘积的结果可能趋于0,也就是梯度消失,后面的网络层的参数不发生变化。如果连乘的因子大部分大于1,最后乘积的结果可能趋于无穷,这就是梯度爆炸(使用批量归一化和通过归一化正确初始化权重可确保梯度具有合适的标准)。
跳跃连接会跳跃神经网络中的某些层,并将一层的输出作为下一层的输入,可解决梯度消失的问题,传统的卷积神经网络模型通过堆叠的卷积层来增加网络的深度,从而提高模型的识别精度。当网络水平增加到一定数量时,模型的准确性会降低,因为神经网络正在反向传播,该过程需要连续传播梯度,当网络层数加深时,梯度将逐渐消失,导致无法调整先前网络层的权重。
机器学习模型中有两类参数:
从数据中学习和估计得到,称为模型参数——即模型本身的参数。
机器学习算法中的调优参数,需要人为设定,称为超参数。
二者区别:模型参数是模型内部的配置变量,需要用数据估计模型参数的值。
模型超参数是模型外部的配置,其值无法从数据中估计,需手动设置,并且在过程中用于帮助估计模型参数。
超参数:用于控制模型的结构和训练过程,而不是通过学习和优化来确定的,这些参数不能直接从数据中学习,而是通过经验和试验来选择。
损失函数
:带孔的输入图像,:网络预测图像,:真实图像,为原始的输 出图,但是非孔洞区域被替换为原始的真实图。Ψn是第n个选中层的激活图。
逐像素重建损失:Lvalid非孔洞像素的网络输出上的L1损耗;Lhole是孔洞像素的网络输出上的L1损耗。
感知损失:感知损失是计算和 与之间的感知特征的L1距离。感知特征的提取是用在Image-net上预训练的 VGG 模型对其图片提取高层次的特征。
风格损失:Kn是第n个所选层的归一化因子1/CnHnKn。
总变差损失:P是孔洞区域的1像素扩展区域。
总损失:总损失Ltotal是上述所有损失函数的组合
通过100张验证图像进行超参数搜索来确定损失项权重。
五、实验结果
掩码数据集来源:随机采样一个掩码执行随机膨胀、旋转和裁剪来扩充数据集。
因为在图像边界附近修复孔洞性能下降。因此,我们将测试集分为两个:靠近边界处有孔洞和靠近边界处没有孔洞的掩模(离边界处至少50个像素)。
按孔洞与图像的比例进行分类:(0.01,0.1),(0.1,0.2),(0.2,0.3),(0.3,0.4),(0.4,0.5),(0.5,0.6)
初始训练:对于批处理归一化来说,孔洞是一个问题,因为孔洞像素的均值和方差将被计算,因此在掩码位置忽略它们是有意义的。为了在存在掩码的情况下使用批归一化,我们首先使用0.0002的学习率打开初始训练的批归一化。然后,我们使用0.00005的学习率进行微调,并冻结网络编码器部分的批处理归一化参数。我们在解码器中启用批处理规范化。这不仅避免了不正确的均值和方差问题,而且帮助我们实现更快的收敛。
评价指标:PSNR、SSIM、IScore、
结论:本文的模型可以鲁棒地处理任何形状、大小、位置或距离图像边界的孔。此外,性能不会随着孔洞尺寸的增加而灾难性地恶化,然后存在一个限制,它不能处理一些结构稀疏的图像。