结合感知注意力机制的生成式对抗网络图像修复*
2021-06-16刘映杉夏梦卿
肖 锋,刘映杉,夏梦卿
(西安工业大学 计算机科学与工程学院,西安 710021)
图像修复是针对图像的破损区域填充符合图像结构纹理、语义信息的数据,以生成具有完整图像信息的图像处理方法,在照片编辑、图像渲染或传输过程中,丢失或损坏的图像数据补全缺失区域的内容信息,图像中造成视觉干扰的区域性遮挡物或瑕疵被替换为符合该图语义信息的背景内容等,都属于图像修复的范畴,是计算机视觉中的研究热点[1-4]。由于图像修复的核心挑战在于为破损区域合成语义合理且视觉逼真的内容,修复算法需要对在内容表达的合理性上进行研究。
早期的图像修复方法主要基于纹理合成的思想,利用物理模型和数学模型解决问题。经典模型有基于偏微分方程的BSCB模型[5],运用整体变分法建立的TV数学修复模型[6],基于样本块填充的Criminisi算法模型[7]等。这类传统修复方法的计算量相对较小,适用于修复中小面积范围的纹理破损区域。然而,简单的数学物理模型只能借鉴信息,不能重构信息。当图像的缺失区域涉及大量复杂的语义信息时,复原任务难以完成。在深度学习热潮的当下,一些研究借鉴了图像基础样式的思想,将修复问题理解为内容优化问题[8-10]。Chao Yang等人提出了基于图像内容和纹理约束联合优化的多尺度神经补丁合成法,不仅可以保留上下文结构,还可以通过匹配和调整补丁与最相似的中间层来产生更加高频的细节,深度分类网络的特征相关性。该方法的优化过程过于缓慢,不适合实际应用。生成式对抗网络GAN借助深度卷积神经和自身的对抗思想[11],深入学习理解图像的特征信息指导图像修复,达到了很好的效果。文献[12]提出的上下文编码器 (Context-Encoders,CE)图像修复网络模型首次结合了生成式对抗网络(Generative Adversarial Nets,GAN)和卷积神经网络(Convolutional Neural Network,CNN),网络结构基于一个自编码解码器,利用编码器将图像特征映射到低维空间,再利用解码器重建图像信息进行修复后的输出。生成式对抗网络的加入增强了生成像素与现有像素之间的一致性,修复结果在高度结构化的图像中生成了合理的新内容。但是修复区域仍存在内容模糊、易产生伪影等视觉瑕疵现象。Alec Radford等人通过深度卷积对抗生成网络(Deep Convolutional GAN,DCGAN)用深度学习完成了图像修复任务。文献[13]针对CE算法的不足进行改进,加入全局和局部损失函数来保持图像在全局和局部的一致性。文献[14]结合GAN与注意力机制提出了自注意力机制GAN(Self-Attention GAN,SAGAN)模型,利用远距离依赖的优势生成的图像,语义信息生成效果有显著提升。上述算法对语义内容模糊的现象进行了改善,但修复区域与完好区域衔接处的信息过渡仍然不连贯,导致图像整体信息表达不够逼真。
针对以上问题,本文对经典生成式对抗网络的图像修复算法进行改进,设计了双层修复网络,对图像进行粗略和精细两次修复。首先,第一层修复网络基于简单的扩张卷积网络,结合重建损失对缺失区域进行粗略修复;其次,第二层修复网络引入感知注意力机制,该机制借鉴了传统补丁填充的思想,基于粗略修复后的图像,匹配与前景区域最相似的背景区域,使用背景区域的特征作为卷积核重建前景区域的信息,指导前景区域的修复,以得到精细化修复的图像;最后,在鉴别器中优化了重建损失函数和对抗损失函数,保证了修复区域与周围区域内容的一致协调性。
1 模型框架
基于CE网络模型进行改进,如图1所示。以CE网络架构为基础,遵循一致的输入输出配置。为了进一步扩大感受野并稳定训练过程,引入两阶段修复网络。两层网络均采用编码解码器模型,其中编码器端添加感知注意力机制模块,利用普通卷积、扩张卷积等操作对图像进行特征提取;解码器利用反卷积操作对提取的特征进行重建修复。这种两阶段的网络架构借鉴于剩余学习[15]和深度监督[16]。精细修复网络的图像输入是前一层粗略修复网络的输出,因此其编码器可以比前一层粗略修复网络学习到更好的特征信息,即第一层网络可以更好地指导第二层网络的修复,这也是双层网络的意义所在。
图1 网络结构
第一阶段粗略修复网络模型对图像进行初始粗略修复,引入扩张卷积进一步扩大感受野。生成器网络由破损图像x和二进制掩码Mc成对作为输入,经过卷积层、激活函数、池化层及反卷积等操作输出重建修复的图像。其中,破损图像以白色像素填充破损区域,预处理大小为256×256 pixel;二进制掩码由破损区域的像素信息(破损区域表示为1,其他区域为0)表示,破损区域标准大小为128×128 pixel。成对的输入可以使生成网络快速准确区分出破损的区域(前景区域)和未破损区域(背景区域),为精细修复网络中的感知注意力机制模块提取特征提供信息参考。该阶段网络由重构损失函数进行内部参数的优化调整,最终输出粗略修复后的完整图像。
第二阶段精细修复网络将粗略修复结果作为输入,引入感知注意力机制,对图像进行精细修复。该阶段修复网络的特征提取过程分为并行的两层:一层为基于感知注意力机制的卷积神经网络层;另一层为基于扩张卷积的卷积神经网络层。两层网络提取特征后进行聚合,一并输入解码网络中,采用反卷积的操作重建图像。该阶段网络由重构损失函数和对抗损失函数进行约束,反馈优化,最终输出精细修复后的完整图像。
该双层修复网络模型整体薄且深,相较于原始的模型具有更少的参数冗余和更高的计算效率。此外,本文还将激活函数由原始模型中的线性整流函数(Rectified Linear Unit,ReLU)更换为线性指数函数[17](Exponential Linear Unit,ELU),并剪切输出的滤波器值以再次达到减少冗余的效果。
为了在接收更大感受野的同时不增加参数数量,稳定模型训练过程,本文将模型中的普通卷积层改进为变体形式的扩张卷积层。扩张卷积层的参数信息见表1。改进后的网络模型中,参数冗余大大减少,计算更高效。
表1 扩张卷积层参数
1.1 感知注意力机制模块
用已知信息在训练期间形成卷积核,对未知信息进行指导重建的思想,设计了基于相似性计算的感知注意力机制模块。
卷积层对图像特征的提取具有局限性和盲目性,没有考虑到与图像各部分结构纹理、语义信息的关联。为了克服这一局限,本文使用感知注意力机制,在深层生成网络中引入基于感知注意力机制的内容关注层。传统的PatchMatch[18]思想认为图像整体具有相关性,背景区域(未破损区域)对前景区域(破损区域)的修复具有指导性。借鉴该思想,本文引入感知注意力机制将前景区域与背景区域相关联,在卷积核不变的前提下扩大特征提取过程中的感受野,将图像的注意力集中在相关重点信息上,以快速获得最有效的信息。
首先,在背景区域提取3×3的像素块,重新排列后作为卷积核,与粗略修复后图像的前景区域逐块计算标准化内积(余弦相似度)作为图像之间的注意力值。式(1)如下,其中Sx,y,x′,y′表示背景{bx′,y′}模块与前景{fx,y}模块的内容相似度。
(1)
再利用softmax函数计算每组Sx,y,x′,y′的softmax值作为图像注意力的百分比值。式(2)如下,其中λ为常量。
(2)
最后,通过注意力百分比值选取出背景区域中与前景区域最匹配卷积块{bx′,y′}作为反卷积核,与并行的普通卷积神经网络层提取的特征进行合并,一同输入解码器中重建前景区域信息。
为了更好地显示感知注意力机制的作用,本文对该模块进行了注意力可视化,使用一个颜色轮盘来表示前景区域中每个像素最感兴趣的背景区域的相对位置。如图2所示,粉红色表示关注点在左下方,蓝色表示关注点在右下方。
图2 修复结果及其注意力可视化
1.2 基于空间位置的重建损失函数
生成式对抗网络常用L1范数损失函数(Loss 1,L1)或L2范数损失函数(Loss 2,L2)损失函数作为重建损失,对复杂场景下图像的重建结果与原图进行对比以优化参数。原始的CE算法使用L2损失函数作为重建损失,并将原始图像作为计算重建损失的唯一标准,该条件容易对训练过程产生误导。例如,网络重建后的语义真实合理,却由于不符合原始图像的既定信息而被判定为修复失败。本文由于网络模型层数基数大,采用收敛性更加平稳的L1损失函数作为重建损失,并在此基础上引入空间衰减权重,平衡前景区域各部分修复效果,减小单一损失值对修复结果造成的影响。
原始CE算法中采用的L2损失函数,即均方误差(Mean-Square Error,MSE)回归损失函数,计算预测值与目标值之间差值的平方和。式(3)如下:
(3)
均方误差MSE数据图的各点处连续光滑,容易求导;但收敛过程不稳健,当函数的输入值距离中心值较远时,使用梯度下降法求解易导致梯度爆炸。
本文采用的平均绝对误差(Mean Absolute Error,MAE)回归损失函数,计算目标值与预测值之差绝对值的和,表示预测值的平均误差幅度,不需要考虑误差的方向范围。式(4)如下:
(4)
相比于L2损失函数,L1损失函数对于任何输入值都有稳定的梯度,不易发生梯度爆炸问题,具有较为稳健性的解。
图像修复过程中,破损区域边界处的取值范围比中心区域小,修复结果的歧义性远小于中心区域。因此,相比于中心部分,破损区域的边缘部分即破损区域与未破损区域衔接处的一致性更重要。借鉴时间衰减损失函数[19],在L1重建损失函数的基础上引入空间衰减思想。计算重建损失值时,像素点越靠近中心位置,重构损失的权重设置越小,避免破损中心真实合理的修复结果因为与原始图像差距过大而被判定修复失败,误导训练过程。将权重掩模M引入空间重建损失函数,掩模中每个像素的权重为γ,即破损像素与最邻近已知像素之间的距离,初始值设定为0.9。式(5)如下:
(5)
1.3 对抗损失函数
与先前依赖DCGAN进行对抗性监督的生成网络不同,本文使用两个鉴别器网络。采用基于Wasserstein 损失函数的生成式对抗网络(Wasserstein GAN,WGAN)中的对抗损失函数[20],附加在第二阶段生成器网络模型后,以实现对结果图像全局信息和局部信息的真假鉴别和对抗优化。WGAN形式的损失函数是目前用于图像生成的最佳损失值,使用Earth-Mover距离来表示生成图像和真实图像的分布,并且当距离度量均使用1时,与L1重建损失结合使用,收敛效果更佳。其中,全局鉴别器评估图像的整体一致性,局部鉴别器仅在以补全区域为中心的小区域进行评估,以确保生成的补丁在局部区域的质量。对抗损失目标函数如式(6)所示:
log(1-D(C(x,Mc),Mc))]。
(6)
全局鉴别器将整幅图像调整为256×256 pixel作为输入,由6个5×5卷积核的卷积层和一个输出单个1 024维向量的全连接层组成。局部鉴别器遵循相同的模式,只调整输入时的像素值为128×128 pixel。在各自输出1×1×1 024维向量后,将全局和局部鉴别器的输出串联成一个2 048维的向量,再经过全连通层输出[0,1]范围内的概率值,该概率值表示图像是原始的真实图像而非修复后的重建图像的概率。
2 实验数据分析
2.1 数据集
本文采用的数据集为CelebA人脸数据集。CelebA数据集是权威的名人人脸属性数据集,其包含10 177个名人身份的202 599张人脸图片,每张图片都做好了特征标记,包含人脸标注框、人脸特征点坐标以及40个属性标记。CelebA由香港中文大学开放提供,广泛用于人脸相关的计算机视觉训练任务,可用于人脸属性标识训练、人脸检测训练以及landmark标记等。
2.2 运行环境
运行设备:中央处理器 Intel Xeon E5-2620;显卡 GPU GeForceGTX1080。
运行环境:Python3.5版本,Tensorflow 1.7版本。
数据预处理:输入的图片可以为任意尺寸,图像数据预处理统一裁剪为分辨率256×256 pixel,规则的破损区域分辨率随机确定,并添加了小面积的不规则破损区域。整个图像修复网络模型是一个端到端的整体,没有采用任何单独的后续优化。
2.3 实验结果
为了对改进算法的优越性和有效性进行评估,将本文算法与复现的Context Encoder(CE)、Globally and Locally Consistent Image Completion(GLI)两种方法进行比较,挑选具有代表性的实验结果图进行对比说明,实验结果对比如图3所示。
基于人眼的主观感受,CE算法的修复结果中,破损区域只有准确合理的颜色修复,结构和纹理信息都十分模糊;GLI算法是CE算法的改进版,生成的图像具有了较清晰的结构、纹理特征,但前景区域与背景区域边界感明显,内容较模糊(如图3(a)~(b)所示)。由于卷积层感受野的局限性,CE与GLI算法无法学习到完整图像的信息,导致修复结果存在语义信息表达与图像整体极度不符合的现象(如图3(c)所示);然而在个别场景简单的图像中,两种算法均得到了较好的修复(如图3(d)~(e)所示)。
图3 四种修复算法结果比较
本文算法引入的感知注意力机制模块,采用背景区域指导前景区域修复的方式,修复后的图像具有更加完整的纹理、结构信息,背景区域与前景区域边界处的伪影模糊现象消失,修复效果更加逼真。注意力可视化示意图如图4所示。对比图2中前景区域像素点的颜色,可以准确定位与破损区域相似度最大的背景区域的相对位置,进一步表明感知注意力模块的特征提取融合了整幅图像的信息,可以自适应地借助背景区域信息指导前景区域的生成。相比之下,本文改进后的算法得到的修复后的图像和Ground Truth最相近且语义信息表达更为合理真实。
图4 感知注意力可视化
从主观视觉效果来看,本文改进后的算法优于其他两种原始经典算法。
将三种算法在迭代过程中的对抗损失变化记录下来,对比结果如图5所示。其中,横坐标表示算法训练时的迭代次数,纵坐标表示损失值,本质为真实图像数据分布与生成图像数据分布之间的Earth-Mover距离度量。CE算法与GLI算法的对抗损失值基于DCGAN,在训练过程中的波动较大,并且收敛速度较慢;而本文采用基于WGAN形式对抗损失,波动明显大幅减少,收敛性更好。
图5 三种修复算法损失变化比较
针对图像的处理过程一定会对图像的质量或内容信息做出改变,这些改变可以通过图像质量评价指标来进行衡量。图像修复主要是缺失区域的填充过程,与单一的图像生成不同,它除了需要评估图像的生成质量外,还要判断与原图的相似性。本文在实验结果上使用峰值信噪比(Peak Signal to Noise Ratio,PSNR)和结构相似性(Structural Similarity Index Measurement,SSIM)指标对图像质量进行评估,见表2。其中,峰值信噪比通常用于描述各种形式的信号的质量属性。在本文实验结果的计算中,PSNR 值越大,说明图像质量越高。结构相似性是一种衡量两幅图像相似度的指标,结构相似性的范围为0到1,当两张图像一模一样时,SSIM的值为1。从表2可以看出,本文的算法在客观数据分析上,数据评估值较之前的算法有明显提升。与CE算法相比,本文算法结果的PSNR值增加了1.34 dB,SSIM值增加了0.007;与GLI算法相比,本文算法结果的PSNR值增加了1.07 dB,SSIM值增加了0.004。以上数据表明,本文算法修复后图像语义结构以及纹理的完整性与原图更加接近。
表2 三种修复算法结果指标评估比较
3 结 论
针对现阶段卷积神经网络图像修复中存在的修复结果纹理结构扭曲和边界处衔接处易出现伪影的问题,改进了经典CE图像修复网络模型。将网络架构设计为由粗到细两个阶段的生成器网络,引入感知注意力机制使背景区域指导前景区域修复,并对重建损失函数和对抗损失函数进行合理优化。
对比当前经典图像修复网络CE模型和GLI模型,本文改进算法提高了图像语义信息的修复准确性,有效解决了图像破损区域边界处的出现的伪影,在CelebA数据集上的PSNR值与SSIM值都有所提升。然而,如何对不规则破损区域的图像进行修复,仍然是需要研究的问题。