本发明涉及图像合成技术领域,具体涉及一种基于深度学习的图像空洞填充方法,采用gan深度学习机制,构建卷积神经网络进行学习,利用自然图像与合成图像混合数据集的建立,解决数据集匮乏的问题。具体考虑补全语义和真实感语义特征,能够实现真实感的图像空洞填充。
背景技术
图像空洞填充技术,是根据图像的已知部分对缺失的未知部分进行填补。在图像补全问题中,待补全的图像一般有较大的缺失空白区域。由于对大块空白区域的补全不仅涉及到图像的结构信息,还涉及到纹理信息的补全,因此图像补全技术一般采取基于结构信息与基于纹理信息相结合的方法。
传统的图像补全技术主要基于图像的结构信息与纹理信息对图像缺失部分进行补全。然而,近年来的大量研究表明,在实际复杂自然图像的补全问题中,仅仅通过图像已知部分的结构、纹理等底层特征,几乎无法得到符合语义环境、具有真实感的图像补全结果。基于深度学习的图像补全技术借助神经网络提取高层特征的能力,引入对于图像语义信息的提取与使用,能够克服传统图像补全技术的缺陷,生成符合语义环境的图像补全结果。
在现有的基于深度学习的图像补全方法中,首先出现了编码器-解码器结构的网络监督学习,使用alexnet的前五层结构,解码器部分使用五个扩张卷积层实现空洞填充的功能。在此基础上出现了生成器-判别器网络结构,使用对抗损失与待补全部分的内容损失结合定义损失函数,取得了良好的补全结果。除此而外,通过内容生成网络和纹理网络两个卷积神经网络结合得到补全结果,同时,也出现了基于无监督学习框架的图像补全方法。
但是现有方法存在以下问题:基础网络结构较为简单,可能导致网络的学习能力不足,并且对于任意形状的待补全区域,现有方法在训练过程中对生成器与判别器的平衡存在问题,从而可能导致补全结果质量下降。如何建立有效的深度学习的网络模型,有效解决自然图像空洞填充,这都是亟待解决的实际问题。
技术实现要素:
本发明的目的是针对现有技术的不足,并针对图像空洞填充问题中网络性能及真实感填充效果的实际需求,提供一种有效的空洞填充方法,利用深度学习策略,构建卷积神经网络,同时考虑补全语义和真实感语义的情况下有效实现图像空洞填充功能。
实现本发明目的的具体技术方案是:
一种基于深度学习的图像空洞填充方法,其特征在于,同时考虑补全语义和真实感语义的情况下,输入图像分辨率为nt×nt,其nt为224、448或者896,按照以下步骤可以实现图像空洞填充功能:
步骤1:数据集构建
(a)构建自然场景数据集databasesun
从pngimg.com网站中收集nf张前景图像,3810≤nf≤8000,其收集的前景图像为自然图像并保持类别数种,且必须包含物体;所述前景图像为包含透明度信息的4通道图像,利用第4通道的透明信息,获取前景目标的掩模,利用选出的nf张前景图像构建sf集合:
式中
从sun2012数据集筛选nb张背景图像,2182≤nb≤5000,构建背景图像集合
场景合成:(1)在[0,nb-1]之间生成随机的背景图像序号rb,从背景图像集合sb中按照rb取出随机的背景图像
随机生成[0.5,1.0]之间的随机数s,作为前景图像缩放因子,将
上述生成的is和im及完整的背景图像作为一组,进一步生成ns组,其中8742≤ns≤10000;
(b)构建物体场景数据集databasecar
从汽车数据集bmw-10和car-197中选取汽车图像作为背景;前景及掩模图像利用步骤(a)中方法得到;并利用步骤(a)中方法得到nc组数据,14539≤nc≤20000;
步骤2:构建神经网络
采用生成式对抗网络(gan)进行构建,由语义填充网络hole-net和真实感细节增强网络detail-net两部分组成,hole-net与detail-net顺次连接;并且,hole-net和detail-net输出端都进行区域覆盖处理;
对于hole-net,输入图像iin,其张量形状为nt×nt×4;经过hole-net语义补全后得到图像ih,张量形状为nt×nt×3,然后对ih进行区域覆盖处理如下:
io=im⊙ih+(1-im)⊙iin(2)
其中⊙表示ihrgb三通道分别与掩模逐元素相乘运算,im表示iin的第四通道的空洞掩模信息,io为区域覆盖的语义补全结果,io形状为nt×nt×3;
进一步将im和io输入detail-net进行真实感细节增强,detail-net的输出结果id的形状为nt×nt×3,再将id也进行如下区域覆盖处理,然后得到空洞填充的最后结果ie:
ie=im⊙id+(1-im)⊙iin(3)
其中⊙表示id的rgb三通道分别与掩模逐元素相乘运算;
hole-net与detail-net结构相似,都是由以下网络构成:
采用u-net架构,编码器及解码均采用lt层卷积神经网络的架构,如果nt为224,lt为5;如果nt为448,lt为6;如果nt为896,lt为7;
(1)编码器有lt层子结构,每个子结构为1层卷积:采用4×4的卷积核,卷积步长为2,并在输入图像边界外邻域补零处理,每个卷积层的输出进行批归一化,使用leakyrelu激活函数;第1层卷积核个数为tk,;当nt为224,tk,取64;当nt为448,tk,取32;当nt为896,tk取16;依次后面各层卷积核个数增加一倍,编码器输出特征图尺寸为7×7;(2)解码器为lt层子结构,每层子结构由转置卷积层和连接层组成;转置卷积层的卷积核,设计为4×4,卷积步长为2,每个转置卷积层都进行批归一化,激活函数使用relu;第1个层卷积的卷积核个数为512,后面各层卷积核个数减半;在lt层之后使用一个额外的转置卷积层,然后是背景区域覆盖层,解码器最后一层连接一个tanh激活层,需要网路输出为-1至1之间的浮点数;(3)编码器与解码器之间进行跨层连接,即每个编码器中的卷积层都与解码器中相同尺寸的转置卷积层进行逐通道连接,并作为下一层转置卷积层的输入:即编码器第1层与解码器第lt-1层输入特征图连接,作为解码器第lt个转置卷积层的输入;同样地,编码器第2层与解码器第lt-2层连接,作为解码器第lt-1层的输入,按照这样方式,进行跨层连接;步骤3:神经网络的训练
将databasesun和databasecar中数据分别按照18:1:1的比例划分为训练数据集、评估数据集与测试数据集;利用训练数据集训练网络模型;利用评估数据集,实时评估网络输出并计算评价指标,利用测试数据集对训练完毕的网络进行性能测试;
训练时输入图像is和im;首先单独对hole-net训练100轮次,训练完毕后,再固定hole-net模型训练的结果,对detail-net进行训练100轮次;
在hole-net训练时,对误差图像取l1范数,内容损失函数定义为:
其中ni为nt×nt,nr表示融合区域中像素个数;
detail-net训练的损失函数由内容损失项与对抗损失项组成,训练时采用nsgan方法计算detail-net中的对抗损失项,detail-net的判别器对抗损失
其中f(x)表示网络输出的填充结果的图像集;x表示单个真实样本,即真实自然场景图像,d(x)函数表示样本x在f(x)中出现的概率;
生成器g的对抗损失
生成器g的总体损失函数lg定义为:
其中λ为内容损失的权重参数,取10≤λ≤15.
步骤4:对输入图像进行空洞填充
使用训练得到的网络模型,可以在自然场景数据集databasesun或者物体场景数据集databasecar取空洞图像及掩模信息输入到所构建的网络中;经过hole-net与detail-net的处理,最终得到空洞填充的结果。
本发明具有简单、实用的特点,设计了两阶段的图像补全策略,包括语义补全阶段及真实感增强阶段。在语义补全网络中,设计了有效的内容损失函数,保证了样本贡献的一致性;而在真实感增强网络中,使用初步补全结果作为输入,减少了输入中无用信息的影响,结合内容损失与对抗损失定义了合理的损失函数,确保最终补全结果具有真实感。实现了对任意大小、任意形状缺失区域的补全功能,能够得到符合语义、具有真实感细节的补全结果。
附图说明
图1hole-net网络空洞补全的结果图;
图2hole-net网络与detail-net网络结合的填充结果图;
图3语义补全网络训练过程中内容损失变化图;
图4真实感增强网络训练过程中对抗损失项变化图。
具体实施方式
实施例
下面结合附图对本发明进一步说明。
本实施例在pc机上windows1064位操作系统下进行实施,其硬件配置是cpui5-6500,内存16g,gpunvidiageforcegtx10606g。深度学习库keras2.0.8,其采用tensorflow1.3.0作为后端。编程采用python语言。
实现本发明目的的具体技术方案是:一种基于深度学习的图像空洞填充方法,特点是构建卷积神经网络,同时考虑补全语义和真实感语义的情况下,输入图像分辨率为nt×nt,nt为224,按照以下步骤可以实现图像空洞填充功能:
步骤1:数据集构建
空洞填充数据集包括两个数据集:自然场景空洞填充数据集databasesun和物体场景空洞填充数据集databasecar,对于databasesun和databasecar按照如下方法构建:
(a)构建databasesun
从pngimg.com网站中选出3810张前景图像,其收集的前景图像为自然图像并保持类别数种,且必须包含物体;所述前景图像为包含透明度信息的4通道图像,利用第4通道的透明信息,获取前景目标的掩模,利用选出3810张前景图像构建sf集合:
式中
从sun2012数据集筛选2182张背景图像,构建背景图像集合
场景合成:(1)在[0,2181]之间生成随机的背景图像序号rb,从背景图像集合sb中按照rb取出随机的背景图像
随机生成[0.5,1.0]之间的随机数s,作为前景图像缩放因子,将
上述生成的is和im及完整的背景图像作为一组,进一步生成8742组;
(b)构建databasecar
从汽车数据集bmw-10和car-197中选取汽车图像作为背景;前景及掩模图像利用步骤(a)中方法得到;并利用步骤(a)中方法得到14539组数据;
步骤2:构建神经网络
采用生成式对抗网络(gan)进行构建,由语义填充网络hole-net和真实感细节增强网络detail-net两部分组成,hole-net与detail-net顺次连接;并且,hole-net和detail-net输出端都进行区域覆盖处理;
对于hole-net,输入图像iin,其张量形状为nt×nt×4;经过hole-net语义补全后得到图像ih,张量形状为nt×nt×3,然后对ih进行区域覆盖处理如下:
io=im⊙ih+(1-im)⊙iin(2)
其中⊙表示ihrgb三通道分别与掩模逐元素相乘运算,im表示iin的第四通道的空洞掩模信息,io为区域覆盖的语义补全结果,io形状为nt×nt×3;
进一步将im和io输入detail-net进行真实感细节增强,detail-net的输出结果id的形状为nt×nt×3,再将id也进行如下区域覆盖处理,然后得到空洞填充的最后结果ie:
ie=im⊙id+(1-im)⊙iin(3)
其中⊙表示id的rgb三通道分别与掩模逐元素相乘运算;
hole-net与detail-net结构相似,都是由以下网络构成:
采用u-net架构,编码器及解码均采用lt层卷积神经网络的架构,lt为5;
(1)编码器有lt层子结构,每个子结构为1层卷积:采用4×4的卷积核,卷积步长为2,并在输入图像边界外邻域补零处理,每个卷积层的输出进行批归一化,使用leakyrelu激活函数;第1层卷积核个数为tk,,tk,取64;依次后面各层卷积核个数增加一倍,编码器输出特征图尺寸为7×7;(2)解码器为lt层子结构,每层子结构由转置卷积层和连接层组成;转置卷积层的卷积核,设计为4×4,卷积步长为2,每个转置卷积层都进行批归一化,激活函数使用relu;第1个层卷积的卷积核个数为512,后面各层卷积核个数减半;在lt层之后使用一个额外的转置卷积层,然后是背景区域覆盖层,解码器最后一层连接一个tanh激活层,需要网路输出为-1至1之间的浮点数;(3)编码器与解码器之间进行跨层连接,即每个编码器中的卷积层都与解码器中相同尺寸的转置卷积层进行逐通道连接,并作为下一层转置卷积层的输入:即编码器第1层与解码器第lt-1层输入特征图连接,作为解码器第lt个转置卷积层的输入;同样地,编码器第2层与解码器第lt-2层连接,作为解码器第lt-1层的输入,按照这样方式,进行跨层连接;
步骤3:神经网络的训练
将databasesun和databasecar中数据分别按照18:1:1的比例划分为训练数据集、评估数据集与测试数据集;利用训练数据集训练网络模型;利用评估数据集,实时评估网络输出并计算评价指标,利用测试数据集对训练完毕的网络进行性能测试;
训练时输入图像is和im;首先单独对hole-net训练100轮次,训练完毕后,再固定hole-net模型训练的结果,对detail-net进行训练100轮次;
在hole-net训练时,对误差图像取l1范数,内容损失函数定义为:
其中ni为nt×nt,即224×224=50176,nr表示融合区域中像素个数;
detail-net训练的损失函数由内容损失项与对抗损失项组成,训练时采用nsgan方法计算detail-net中的对抗损失项,detail-net的判别器对抗损失
其中f(x)表示网络输出的填充结果的图像集;x表示单个真实样本,即真实自然场景图像,d(x)函数表示样本x在f(x)中出现的概率;
生成器g的对抗损失
生成器g的总体损失函数lg定义为:
其中λ为内容损失的权重参数;
步骤4:对输入图像进行空洞填充
使用训练得到的网络模型,可以在自然场景数据集databasesun或者物体场景数据集databasecar取空洞图像及掩模信息输入到所构建的网络中;经过hole-net与detail-net的处理,最终得到空洞填充的结果。
训练过程中的超参数选择为:dropout层中dropout率取0.8;优化器采用adam优化器,并且各超参数取默认值;每批次的样本数取8;学习率生成网络的学习率取10-4,判别网络的学习率取10-4,内容损失项权重参数λ取10。
图1为hole-net网络空洞补全的结果图,第1行结果来自于databasesun数据集,而第2行结果来自于databasecar数据集。左侧第1列为输入的带空洞的图像,第2列至第6列分别为迭代20轮次、40轮次、60轮次、80轮次及100轮次的输出结果,从图中可以看出,迭代100次可以得到就比较满意的空洞填充结果。
图2是hole-net网络与detail-net网络结合的填充结果,第1行结果来自于databasesun数据集,而第2行结果来自于databasecar数据集。左侧第1列为输入的带空洞的图像,第2列至第6列分别为迭代20轮次、40轮次、60轮次、80轮次及100轮次的输出结果,从图中可以看出,迭代100次可以得到就比较满意的真实感空洞填充结果。从图1和图2可以明显看出detail-net网络填充后真实感增强了。
图3是语义补全网络训练过程中内容损失变化,在语义补全网络的训练中,每轮训练的用时约为500秒。图3记录了训练数据与评估数据的内容损失均值,左图是来自于databasesun数据集的结果,右图是来自于databasecar数据集的结果。从义补全网络训练过程中内容损失变化可以看出,在评估中,基于内容的语义空洞填充有一定损失误差。
图4是真实感增强网络训练过程中对抗损失项变化,真实感增强网络的训练中,每轮训练的用时约为1500秒,图中记录了生成网络与判别网络的对抗损失项均值,左图是来自于databasesun数据集的结果,右图是来自于databasecar数据集的结果。从真实感增强网络训练过程中对抗损失项变化可以看出生成网络与判别网络对抗损失项的变化趋势,在整个训练过程中,生成网络的对抗损失项