一种基于循环生成对抗网络的水下图像复原方法与流程

文档序号:21088511发布日期:2020-06-12 17:03阅读:323来源:国知局
一种基于循环生成对抗网络的水下图像复原方法与流程

本发明涉及一种基于循环生成对抗网络的水下图像复原方法,属于图像处理技术领域。



背景技术:

近年来,海洋工程和研究越来越多地依赖自主水下航行器和遥控水下航行器拍摄的水下图像。然而,由于与波长相关的光吸收和散射以及低端光学成像设备的影响,水下图像往往会出现对比度不足、色散、噪声等退化现象。此外,光吸收和散射的大小取决于几个复杂的因素,包括水温和盐度,以及水中颗粒物的类型和数量。严重的退化使水下图像的外观和颜色难以恢复。然而,颜色对于水下视觉任务的研究非常重要。因此,如何有效地逼近水下图像的真实颜色成为一个具有挑战性的问题。

为了提高水下图像的视觉质量,许多方法被提了出来。传统的水下图像处理方法主要包括增强方法和复原方法。图像增强方法无需水下物理参数,不依赖物理模型,主要是通过调整图像像素值来获得较好的增强效果。图像复原方法考虑退化模型来增强水下图像。然而,由于水下复杂的物理和光学因素,使得这些传统的方法难以实现。同时,由于缺乏丰富的训练数据,这些方法在不同的水下环境中泛化性较差,一些场景的增强图像往往存在过增强或欠增强的趋势。



技术实现要素:

本发明为了解决现有技术中存在的问题,提供一种基于循环生成对抗网络的水下图像复原方法。

本发明提出的技术方案为:一种基于循环生成对抗网络的水下图像复原方法,其特征在于,包括如下步骤:

步骤一:构建cyclegan-vgg的结构模型;

cyclegan-vgg的体系结构包括两个生成器g、f和两个判别器dx、dy;

步骤二:计算损失函数;

步骤2.1、计算对抗损失:所述对抗损失包括生成器损失和判别器损失,

生成器损失为:

判别器损失为:

上式中,x属于源图像分布,y属于目标图像分布,g为生成器,d为判别器,g(x)是生成器生成的图像,d(g(x))是判别器的判断结果;为梯度惩罚项,λ为权重系数,取值为10。

步骤2.2、计算循环一致性损失:

上式中,g(x)为生成图像,f(g(x))为重构的图像,将重构的图像与源图像进行比较,保证了该网络的循环一致性,即重构图像应与源图像结构相同。

步骤2.3、计算vgg感知损失:

上式中,是由imagenet上预先训练好vgg16网络的某个最大池化层前面的卷积层所输出的特征图;

步骤三:训练循环生成对抗网络;

首先由生成器生成的数据训练判别器,判别器判断是真样本还是生成的假样本;然后在此判别器下训练生成器,最小化生成器损失、循环一致性损失和感知损失用以优化生成器网络;然后生成器更新参数并生成新的样本,新的样本再被送到判别器中,根据判别器损失对判别器进行优化;

按照上述过程依次交替训练判别器和生成器,直到损失函数不再下降则网络训练完成;

网络训练完成后,将失真的水下图像输入到生成器g,生成器的输出即为水下图像复原的结果。

对上述技术方案的进一步设计为:cyclegan-vgg结构模型中的cyclegan模型是两个镜像对称的gan网络,其中x域为失真图像,y域为清晰图像。所述生成器g包括编码器、转换器和解码器。所述编码器是卷积核大小分别为7×7,3×3,3×3的三个卷积块,这些卷积块从输入图像中提取特征,并且压缩为64×64的特征向量。所述转换器是9个残差块,通过组合图像的不相近特征,将图像在x域中的特征向量转换为y域中的特征向量。所述解码器的前两层是卷积核为3×3的反卷积层,利用反卷积层从特征向量中还原出低级特征;最后一层为7×7的卷积层,用于得到生成图像。

所述判别器dy采用wassersteingan的架构,用来判别生成的清晰图像g(x)与真实的清晰图像y。

本发明的有益效果为:

本发明构建了基于感知损失的循环生成对抗网络(cyclegan-vgg),该网络是一种端到端的网络架构,由输入的一张失真的水下图像直接获取到复原图像。本发明除了循环一致性损失之外,还添加vgg感知损失来增强cyclegan的结构,通过优化循环一致性损失保留输入图像的整体结构,感知损失用来比较图像特征空间的差异,使得网络能够更好地恢复水下图像的细节信息,进行水下图像复原,增加图像的清晰度。

为了稳固训练,本发明采用了wassersteingan的架构,解决了gan训练不稳定的问题,增加了本方法的鲁棒性。同时能确保生成样本的多样性,使本发明方法能适用更多场合。

本发明提出了一种端到端的网络结构,在训练和测试的阶段,本方法既不需要成对的失真及真实图像样本,也不需要任何水下图像成像模型参数。

附图说明

图1为本发明的网络结构图;

图2为本发明的生成器架构;

图3为本发明的判别器架构。

具体实施方式

下面结合附图以及具体实施例对本发明进行详细说明。

实施例

本实施例提出了一种基于感知损失的循环生成对抗网络,并且利用该网络实现水下图像的复原。该方法不需要成对的数据集,而只需要一组清晰的空中图像以及一组失真的水下图像,并且两组图像不需要具有相同的结构。其步骤如下:

步骤一:准备训练数据集

本实施例提出的基于感知损失的循环生成对抗网络主要包含两组数据集,一组是未失真的空气中图像,一组是失真的水下图像,这两组图像不需要具有相同的结构,即不成对数据集。

未失真图像来自于imagenet图像集的子集,失真的水下图像是作者自己在互联网下载的不同场景下水下图像。根据判别器结构,将这些图像的像素调整到256×256。

步骤二:构建cyclegan-vgg的网络结构

如图1所示,cyclegan-vgg的体系结构由两个生成器g、f和两个判别器dx、dy组成。cyclegan本质上是两个镜像对称的gan网络,若x域为失真图像,y域为清晰图像。以x→y的映射为例,输入一张失真的水下图像x,x进入生成器g。生成器的架构如图2所示,生成器g主要包含三个部分:编码器、转换器以及解码器。编码器是卷积核大小分别为7×7,3×3,3×3的三个卷积块,每个卷积块的第一层是卷积层,卷积层后是instancenorm层和relu层。这些卷积块从输入图像中提取特征,并且压缩为64×64的特征向量。转换器是9个残差块,每个残差块是一个由两个卷积层构成的神经网络层。输入在进入转换器后,通过组合图像的不相近特征,将图像在x域中的特征向量转换为y域中的特征向量。解码器的前两层是卷积核为3×3的反卷积层,利用反卷积层从特征向量中还原出低级特征。最后一层为7×7的卷积层,从而得到生成图像。

判别器架构如图3所示,它的结构类似于具有梯度惩罚的wassersteingan。判别器网络的架构与patchgan相同。除最后一层外,所有卷积层紧随其后的都是leakyrelu层,α=0.2。和传统的判别器不同,此处判别器最后一层不是sigmoid层,因为wassersteingan的判别器做的是近似拟合wasserstein距离,属于回归任务。本实施例在这里没有使用batchnorm,因为本实施例是对每个样本进行独立的梯度惩罚,而batchnorm会依赖于一组样本的内在联系。

生成器g生成图像g(x),判别器判别图像真伪。紧接着再将g(x)输入生成器f,f的结构与g相同,从而得到重构的输入图像f(g(x))。

步骤三:计算损失函数

(1)对抗损失

在原始的gan网络中,对于映射函数g:x→y和它的判别器网络dy,其对抗损失可以表示为以下公式:

上式中,生成器g生成与y域图像相似的图像g(x),同时判别器dy努力分辨生成的图像g(x)与真实的图像y。但是在实际的训练过程中,随着判别器的改进生成器的梯度逐渐消失,这使训练变得困难或者网络崩溃。本发明重点研究了wassersteingan,在wassersteingan中引入了wasserstein距离,由于它相对kl散度与js散度具有优越的平滑特性,理论上可以解决梯度消失问题。接着通过数学变换将wasserstein距离写成可求解的形式,利用一个参数数值范围受限的判别器神经网络来最大化这个形式,就可以近似表示wasserstein距离。在此近似最优判别器下优化生成器使得wasserstein距离缩小,就能有效拉近生成样本分布与真实样本分布。wgan既解决了训练不稳定的问题,也提供了一个可靠的训练进程指标,而且该指标确实与生成样本的质量高度相关。经过改进后的对抗损失如下所示:

生成器损失:

判别器损失:

式中,fw(x)代表判别器网络,但是该判别器网络最后一层不是非线性激活层,因为原始gan的判别器做的是真假二分类任务,所以最后一层是sigmoid层,但是现在wgan中的判别器做的是近似拟合wasserstein距离,属于回归任务,所以要把最后一层的sigmoid拿掉。gulrajani又提出了将wgan变为wgan-gp用以改善wgan的不足,修改后的判别器损失如下:

上式中为梯度惩罚项,λ为权重系数,本实施例中取值为10。对生成的图像g(x),需要通过判别器判断其是否为目标图像y。通过优化对抗损失能够将x域的图像风格转换为y域的图像风格。

(2)循环一致性损失

但单纯的使用一个对抗损失是无法进行训练的。原因在于,映射g完全可以将所有x域图像都映射到y域的同一张图片,使损失无效化。为此提出循环一致性损失,通过g从域x图像生成域y图像,再通过f从域y图像生成回域x图像,循环往复。通过优化循环一致性损失保留输入图像的整体结构。

(3)vgg感知损失

“内容”损失函数的两个经典选择是原始像素的l1或mae损失、l2或mse损失。使用这些函数作为唯一的优化目标,会由于像素空间中的像素平均而导致生成图像上的模糊伪像。因此,本实施例采用了基于特征空间的感知损失。感知损失是简单的l2损失,但是基于生成图像的cnn特征图和目标图像cnn特征图的差异。定义如下:

上式中,是由imagenet上预先训练好的vgg16网络的某个最大池化层前面的卷积层所输出的特征图。在本文中选用的是vgg16网络的第2及第5个池化层,其中第2个池化层提取的是低级特征,第5个池化层提取的是高级特征,通过高级特征和低级特征的组合来保留原始图像的结构。

(4)完整的损失函数

和cyclegan相比,cyclegan-vgg有一个额外的损失函数。完整的损失函数可以表示为下列形式,其中g、f是生成器,dx、sy是判别器,γ是vgg感知损失的影响因子。本文中γ的值为0.0001。

l(g,f,dx,dy)=lwgan(g,f,dx,dy)

+lcyc(g,f)+γlperceptuar(g,f)(7)

步骤四:网络训练及设置

循环生成对抗网络的训练其实就是两个对称的生成对抗网络的训练,以x→y的映射为例。首先由生成器生成的数据训练判别器,判别器判断是真样本还是生成的假样本,但是此时的判别器不是进行简单的0,1二分类任务,而是近似拟合wasserstein距离,属于回归任务。接着在此判别器下训练生成器,根据生成器损失、循环一致性损失和感知损失优化生成器的网络。接着生成器更新参数并生成新的样本,新的样本再被送到判别器中,根据判别器损失对判别器进行优化。上述优化过程通过tensorflow系统来完成,将损失输入到优化器中,优化器将损失做最小化处理。就这样依次交替训练判别器和生成器,直到损失函数不再下降网络才训练完成。网络训练完成后,其生成器g的映射就是将水下失真图像转换为空气中未失真图像的映射。在测试阶段,只要将失真的水下图像输入到生成器g,生成器的输出即为水下图像复原的结果。

本实施例使用adam优化器来训练模型,并将学习率设置为0.0002,动量设置为0.5,batchsize大小设置为1。本实施例使用tensorflow框架实现了本实施例的网络,并使用nvidiartx2070gpu对其进行了训练。

本发明的技术方案不局限于上述各实施例,凡采用等同替换方式得到的技术方案均落在本发明要求保护的范围内。

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