一种基于深度卷积对抗生成网络的图像反射去除方法与流程

文档序号:11433374阅读:347来源:国知局

本发明涉及计算机图像处理的技术领域,尤其是指一种基于深度卷积对抗生成网络的图像反射去除方法。



背景技术:

当我们在室内透过玻璃拍摄室外的景物时,得到的照片中往往会包含有室内物体的反射影像。专业摄影师可能会选择使用偏振镜等专业的仪器设备来解决这个问题。但是对于普通消费者而言,使用反射去除算法来对照片进行后期处理会是更可行的做法。

一张带有反射影像的照片可以看做是由一张反射图像(室内景物)和一张目标图像(室外景物)叠加而成的混合图像。反射去除问题的本质是从这样一张混合图像中分解得到两张图像。这个问题有明显的不适定性(ill-posed),即对于一张给定的混合图像,可能的分解方法是不唯一的。为了求解这样的不适定问题,我们需要为原问题增加足够的先验知识(prioriknowledge)作为额外的约束,使得求解得到的结果尽可能地接近目标结果。

在过去的研究中,由于缺乏可靠的高层语义信息作为先验知识,大部分工作中使用的先验知识都是基于低层像素信息的。例如,在论文learningtoperceivetransparencyfromthestatisticsofnaturalscenes中,levin等使用的是自然图像的边缘直方图和角点直方图的统计规律;在论文singleimagelayerseparationusingrelativesmoothness中,li等针对的是反射图像相比目标图像更加平滑这一特殊情况并以此作为先验约束;而在论文reflectionremovalusingghostingcues中,shih等使用的是特定的反射图像中出现的鬼影(ghosting)这一约束。

levin等的方法可以在场景简单并且纹理稀疏的图像上取得较好的效果,但是对于更一般化的、具有丰富纹理信息的自然图像就不太适用了。这是因为自然图像之间的差异性很大,其分布无法简单地用统一的直方图来刻画。而li等的方法和shih等的方法针对的是在特定条件下拍摄的图像,这些条件并不是广泛存在的,因此这些方法的使用场景具有很大的限制性。



技术实现要素:

本发明的目的在于克服现有技术的不足与缺点,提出了一种基于深度卷积对抗生成网络的图像反射去除方法,该方法结合了深度卷积神经网络提取高层图像语义信息的能力以及对抗生成网络灵活的损失函数定义能力,突破了传统方法仅使用低层像素信息的限制。

为实现上述目的,本发明所提供的技术方案为:一种基于深度卷积对抗生成网络的图像反射去除方法,包括以下步骤:

1)数据获取

训练深度卷积对抗生成网络需要大量的训练数据,因此需要使用大规模的自然图像数据集,得到的图像数据集需要划分为训练数据集以及验证数据集,其中训练数据集用于模型训练阶段,验证数据集用于模型验证阶段;

2)数据处理

将图像数据集的图像通过预处理转化为训练深度卷积对抗生成网络所需要的形式;

3)模型构建

根据训练目标以及模型的输入输出形式,构造出一个适用于图像反射去除问题的深度卷积对抗生成网络;

4)损失定义

根据训练目标以及模型的架构,定义出所需的损失函数;

5)模型训练

初始化各层网络的参数,持续输入训练样本,根据损失函数计算出网络的损失值,通过反向传播计算出各层网络的参数的梯度,通过随机梯度下降算法对各层网络的参数进行更新;

6)模型验证

使用验证数据对训练得到的模型进行验证,测试其泛化性能。

所述步骤2)包括以下步骤过程:

2.1)将数据集中的图像在保持长宽比例不变的情况下缩放到较短的边为144像素大小;

2.2)随机在缩放后的图像上裁剪得到长宽均为128像素大小的正方形图像;

2.3)以0.5的概率随机水平翻转裁剪后的图像;

2.4)将随机翻转后的图像从[0,255]转换到[-1,1]的范围内。

所述步骤3)包括以下步骤过程:

3.1)构造编码器模型

编码器是用于从输入的混合图像中提取出高层的语义信息并保存到一个低维的编码中,编码器的输入为3×128×128的混合图像,输出为1024×4×4的低维编码,为了实现从输入到输出的转换,编码器包含了多个级联的下采样层,下采样层由串联的卷积层、批量正则化层、以及非线性激活层组成,其中,卷积层设置卷积步长为2,在增大感受野的同时逐渐减小了图像的尺寸,批量正则化层通过归一化同一个批次的输入样本的均值和标准差,起到了稳定和加速模型训练的作用,非线性激活层的加入防止了模型退化为简单的线性模型,提高了模型的描述能力;

3.2)构造解码器模型

解码器是用于从低维的编码中拆解并还原出反射图像和目标图像,解码器的输入为1024×4×4的低维编码,输出为6×128×128的复原图像,得到的复原图像能够简单地直接拆解为两张3×128×128的输出图像,这两张拆解得到的图像即为还原出来的反射图像和目标图像;为了实现低维编码到复原图像的转换,解码器包含了多个级联的上采样层,上采样层由串联的反卷积层、批量正则化层、以及非线性激活层组成,其中,反卷积层设置反卷积步长为2,起到了从低维编码放大图像尺寸的作用,批量正则化层和非线性激活层的作用与编码器中同样;

3.3)构造判别器模型

判别器是用于约束解码器的输出结果,使其输出更接近自然图像;判别器的输入是两张3×128×128的图像,输出为一个用于指示输入的类型的标量;判别器的结构与编码器一样,也由级联的下采样层组成,所不同的是,判别器的首层输入是由两张输入图像叠加得到的6×128×128的层叠图像,而输出则是单一的标量;输入判别器的两张图像能够是由编解码器拆解还原得到的反射图像和目标图像,也能够是从数据集中抽取得到的原始图像;判别器的作用是读取输入的两张图像,尽可能地区分出它们是复原后的图像还是原始图像;如果判断是原始图像,则判别器应该输出一个尽可能大的值;相反,如果判断是复原图像,则判别器应该输出一个尽可能小的值。

所述步骤4)包括以下步骤过程:

4.1)定义判别器的损失函数

判别器的作用是判定输入图像属于复原图像还是原始图像;判别器对于输入的原始图像和复原图像分别输出的判定值的差越大越能说明判别器能较好地区分二者,因此判别器的效用函数能够定义为二者均值的差值;为了优化判别器,系统需要最大化其效用函数,因此判别器的损失函数能够定义为其效用函数的相反数,这样,当判别器的效用函数取最大值时,其损失函数将取得最小值,这表明判别器已经训练到最优;

4.2)定义编解码器的重建损失函数

重建损失函数的作用是约束编解码器的重建输出,使之与原始图像尽可能接近,重建损失函数能够定义为原始图像之和与复原图像之和的像素差的欧几里得距离的均值;

4.3)定义编解码器的判别损失函数

编解码器的作用是从输入的混合图像中拆解还原出原始的反射图像和目标图像,步骤4.2)中定义的重建损失函数仅能约束拆解的两张图像的和等于原混合图像,但是并不能保证拆解出来的图像各自仍然类似与原始的自然图像;为此,系统引入了判别损失函数,这个函数的计算方法是将由编解码器拆解得到的两张图像输入到判别器中,判别器将给出一个数值;这个数值越大越能说明编解码器的拆解效果好,使得拆解的图像“欺骗”了判别器,使之误以为是原始的图像;否则说明拆解效果较差,使得判别器“看出”了拆解图像与原始图像的明显差异;因此,从判别器得到的这个数值的相反数能够作为编解码器的判别损失函数,判别损失函数的值越小,就说明拆解得到的反射图像和目标图像越接近自然图像,其中的混合图像的痕迹就越小;

4.4)定义编解码器的总损失函数

步骤4.2)和步骤4.3)中的定义的两个编解码器的损失函数能够通过加权的方式组合起来,使得拆解得到的两张图像既在像素值上与原图像保持一致,又具有自然图像的特征;

所述步骤5)包括以下步骤过程:

5.1)初始化模型各层参数

各层参数的初始化采用的是传统的深度卷积对抗生成网络中采用的方法,即对卷积层和反卷积层的参数采用均值为0,标准差为0.02的高斯分布进行初始化,而对批量正则化层的参数则采用均值为1,标准差为0.02的高斯分布进行初始化;

5.2)训练判别器网络

随机取出两张经过步骤2)处理的原始图像,将两张图像通过对应像素相加再归一化到[-1,1]的范围内即可得到编解码器需要的混合输入图像,将得到的混合图像输入到编解码器网络中能够得到拆解后的两张图像,将拆解得到的两张图像输入判别器网络中能够得到判别器网络对复原图像的判别值,再随机取出两张经过步骤2)处理的原始图像,直接输入判别器网络中能够得到判别器网络对原始图像的判别值,将得到的复原图像的判别值和原始图像的判别值进行步骤4.1)的计算能够得到判别器的损失函数的值,将该损失通过反向传播能够得到判别器网络中各层参数的梯度,再通过随机梯度下降算法使用得到的梯度对各层参数进行优化即可实现一轮判别器网络的训练;

5.3)训练编解码器网络

随机取出两张经过步骤2)处理的原始图像,类似于步骤5.2)的做法,将两张原始图像相加再归一化得到的混合图像输入编解码器网络中能够得到拆解得到的两张图像,拆解后得到的图像经过步骤4.2)的计算能够得到重建损失函数的值,将拆解后的得到的图像输入判别器网络中,经过步骤4.3)的计算能够得到判别损失函数的值,将重建损失函数的值与判别损失函数的值经过步骤4.4)的计算能够得到编解码器总损失函数的值,将该损失通过反向传播能够得到编解码器网络中各层参数的梯度,再通过随机梯度下降算法使用得到的梯度对各层参数进行优化即可实现一轮编解码器网络的训练;

5.4)持续迭代训练

重复步骤5.2)和步骤5.3)直到网络拆解混合图像的能力达到预期的目标。

本发明与现有技术相比,具有如下优点与有益效果:

1、本发明能够处理一般化的具有复杂纹理信息的图像。现有的基于低层像素信息的方法(如论文learningtoperceivetransparencyfromthestatisticsofnaturalscenes中的方法)一般使用的是图像的像素信息统计量(如边缘直方图和角点直方图)作为先验约束,复杂的纹理信息会对像素信息统计量的计算产生干扰进而劣化算法的效果。本发明使用深度卷积神经网络作为编解码器,具有同时提取低层像素信息和高层语义信息的能力,因为高层语义信息对低层图像纹理不敏感,因此突破了现有方法的限制,适用于一般化的具有复杂纹理的图像。

2、本发明不要求反射图像具有特殊性。现有的使用基于像素间欧几里得距离的重建损失函数的方法(如论文singleimagelayerseparationusingrelativesmoothness和论文reflectionremovalusingghostingcues中的方法)要求反射图像在像素级别上与目标图像具有明显的差异性(如相比目标图像,反射图像比较模糊,或者反射图像具有鬼影),否则将在问题求解时出现困难,使得拆解得到的目标图像和反射图像二者非常相似,即拆解结果会趋于平均化。本发明使用对抗生成网络的求解框架,具有灵活的损失函数定义能力,除了使用像素间欧几里得距离的重建损失函数外,本发明中使用的由判别器网络得到的判别损失函数可以同时约束拆解得到的目标图像和反射图像为自然图像并且二者具有不同的语义,因此避免了现有方法的对处理不具备像素级别差异性的目标图像和反射图像时导致的平均化问题。

3、本发明求解时不需要迭代优化,具有快速的处理能力。现有的基于迭代优化求解的方法(如论文learningtoperceivetransparencyfromthestatisticsofnaturalscenes、论文singleimagelayerseparationusingrelativesmoothness和论文reflectionremovalusingghostingcues中的方法)在对输入图像进行求解时需要使用优化算法进行反复多次迭代,这影响了算法的处理速度。本发明使用的深度卷积神经网络为端到端(end-to-end)的网络结构,将迭代优化过程转移到训练阶段,而在求解阶段,网络已经训练完毕,因此只要将图像直接传入网络的输入端,经过简单的正向传播即可从输出端得到拆解后的目标图像和反射图像,因此具有快速的处理能力。

具体实施方式

下面结合具体实施例对本发明作进一步说明。

本实施例所提供的基于深度卷积对抗生成网络的图像反射去除方法,其具体情况如下:

步骤1,获取公开的数据集并将其划分为训练数据集和验证数据集,分别用于模型训练阶段和模型验证阶段。

步骤2,对数据集中的图像进行预处理,使之满足深度卷积对抗生成网络的输入要求,包括以下步骤:

步骤21,在保持图像长宽比例的前提下将图像缩放到短边长度为144像素大小。

步骤22,随机裁剪得到大小为128×128像素大小的正方形图像。

步骤23,以0.5的概率水平翻转图像。

步骤24,将图像从[0,255]归一化到[-1,1]范围内。

步骤3,构造深度卷积对抗生成网络的编码器模型、解码器模型以及判别器模型,包括以下步骤:

步骤31,构造编码器模型。编码器的输入为3×128×128的混合图像,输出为1024×4×4的低维编码。编码器包含多个级联的下采样层。下采样层由串联的卷积层、批量正则化层和非线性激活层组成。以下是一个编码器模型的具体例子。

其中,sequential()表示模块以顺序串联的方式组合起来;conv2d(in_channels,out_channels,kernel_size,stride)表示一个卷积层模块,in_channels和out_channels表示该模块的输入通道数和输出通道数,kernel_size和stride表示其卷积核大小以及卷积步长;batchnorm2d()表示一个批量正则化模块;leakyrelu(negative_slope)表示一个非线性激活模块。

步骤32,构造解码器模型。解码器的输入是1024×4×4的低维编码,输出为6×128×128的复原图像。解码器包含多个级联的上采样层。上采样层由串联的反卷积层、批量正则化层和非线性激活层组成。以下是一个解码器模型的具体例子。

其中,sequential()、batchnorm2d()以及leakyrelu()的作用与上述步骤中相同;convtranspose2d(in_channels,out_channels,kernel_size,stride)表示一个反卷积模块,in_channels和out_channels表示该模块的输入通道数和输出通道数,kernel_size和stride表示其卷积核大小以及卷积步长;tanh()表示一个输出范围为[-1,1]的非线性激活模块。

步骤33,构造判别器模型。判别器的输入是两张3×128×128的图像,通过叠加得到6×128×128的层叠图像,输出是单一的标量。与编码器的结构类似,判别器也由级联的下采样层组成。以下是一个判别器模型的具体例子。

其中,sequential()、batchnorm2d()以及leakyrelu()的作用与上述步骤中相同。

步骤4,定义判别器、编解码器的损失函数,包括以下步骤:

步骤41,定义判别器的损失函数。判别器的损失函数可以被定义为判别器对原始图像和复原图像的输出值的差的相反数。用公式表示如下:

lossofdiscriminator=-(discriminator(x1,x2)-discriminator(decoder(encoder(x3+x4))))

式中,x1、x2、x3、x4均为原始图像,decoder(encoder(x3+x4))表示将x3和x4两张原始图像合成混合图像后输入编解码器后得到的复原图像。

步骤42,定义编解码器的重建损失函数。编解码器的重建损失函数可以定义为原始图像与复原图像之和的像素差的欧几里得距离的均值。用公式表示如下:

reconstructionlossofencoder-decoder=mean(square((x1+x2)-(y1+y2)))

式中,mean(square())表示像素间欧几里得距离的均值;x1和x2为原始图像;y1和y2是x1和x2经过混合后经由编解码器拆解得到的复原图像,即y1,y2=decoder(encoder(x1+x2))。

步骤43,定义编解码器的判别损失函数。编解码器的判别损失函数可以定义为编解码器拆解得到的复原图像输入到判别器后得到的判别数值的相反数。用公式表示如下:

discriminationlossofencoder-decoder=-(discriminator(decoder(encoder(x1+x2))))

式中,x1和x2为原始图像,decoder(encoder(x1+x2))表示将x1和x2合成混合图像后输入编解码器后得到的复原图像。

步骤44,定义编解码器的总损失函数。编解码器的总损失函数可以定义为其重建损失函数和判别损失函数的加权和。用公式表示如下

lossofencoder-decoder=w1*reconstructionlossofencoder-decoder+w2*discriminationlossofencoder-decoder

式中,w1和w2为重建损失函数和判别损失函数各自的权重。

步骤5,训练编解码器模型和判别器模型,包括以下步骤:

步骤51,以均值为0,标准差为0.02的高斯分布初始化卷积层和反卷积层的参数。以均值为1,标准差为0.02的高斯分布初始化批量正则化层的参数。

步骤52,训练判别器网络。随机取出4张经过步骤2处理的原始图像,记为x1、x2、x3、x4。将x1和x2直接输入判别器网络可以得到步骤41中discriminator(x1,x2)的值。用x3和x4合成混合图像输入编解码器网络,可以得到拆解后的复原图像y3和y4,即y3,y4=decoder(encoder(x3+x4))。将复原图像输入判别器网络即可得到步骤41中discriminator(decoder(encoder(x3+x4)))的值。将得到的这两个值通过步骤41中的组合方式即可求得判别器的损失函数的值。将该损失在判别器网络中进行反向传播可以计算得到判别器网络中各层参数的梯度。通过随机梯度下降算法使用得到的梯度对各层的参数进行优化即可实现一轮判别器网络的训练。

步骤53,训练编解码器网络。随机取出两张经过步骤2处理的原始图像,记为x1和x2。将x1和x2合成混合图像输入编解码器网络,可以得到拆解后的复原图像y1和y2,即y1,y2=decoder(encoder(x1+x2))。通过计算公式mean(square((x1+x2)-(y1+y2)))即可得到步骤42中编解码器网络的重建损失函数的值。将拆解后的复原图像输入判别器网络中,对得到的值取相反数即可得到步骤43中编解码器网络的判别损失函数的值-(discriminator(decoder(encoder(x1+x2))))。将得到的重建损失函数的值和判别损失函数的值通过步骤44中的加权求和可以得到编解码器网络的总损失函数的值。将该损失在编解码器网络中进行反向传播可以计算得到编解码器网络中各层参数的梯度。通过随机梯度下降算法使用得到的梯度对各层的参数进行优化即可实现一轮编解码器网络的训练。

步骤54,持续迭代训练。持续执行步骤52和步骤53知道网络分离混合图像的能力达到预期的目标。

步骤6,使用验证数据集中的数据对训练得到的模型进行验证,测试其泛化性能。具体做法是随机从验证数据集中取出两张经过步骤2处理的原始图像,将其对应像素值相加再归一化可以得到合成的混合图像。将得到的混合图像输入编解码器网络中可以得到拆解后的反射图像和目标图像。在得到拆解的图像后,可以通过肉眼对比或者计算信噪比等方式判断编解码器的复原混合图像的能力。

以上所述实施例只为本发明之较佳实施例,并非以此限制本发明的实施范围,故凡依本发明之形状、原理所作的变化,均应涵盖在本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1