本发明涉及图像处理和深度学习领域,尤其是面向水下退化图像的增强任务。
背景技术:
水下退化图像增强任务是当前图像处理领域的研究热点之一,随着海洋资源开发的不断发展,水下机器人已成为海洋开发和利用领域的一种高技术手段,在深海复杂环境下需要水下机器人代替人类完成人类无法的任务作业,水下机器人主要依赖视觉能力,因此,近年来,水下图像处理成为了一个重要的研究方向。在水下,波长较长的红光衰减最快,水下3-4米就最先消失,波长较短的蓝光和绿光在水中能够传输更远,因此,通过摄像机在海里采集的视频或图像往往呈现蓝绿色。海里各种微小的浮游生物和沙石等微粒造成了水质的浑浊,采集的视频和照片看起来像是蒙上一层雾一样。在水质浑浊、光线折射散射和光线衰减等因素的影响下,所获得的水下图像普遍存在色彩失真、对比度低、噪声低等退化问题,采集的水下退化图像严重地影响了水下机器人的水下勘探与海产品的采集。水下退化图像增强已成为了海洋开采中要解决的一个重要问题。
在过去的几十年里,水下图像增强吸引了越来越多的关注。将这些水下图像增强方法分为三类:空域方法、变换域方法和基于深度学习的方法。空间域方法通常对水下图像的灰度变化进行调整,以增强其对比度,减少颜色失真。传统方法包括灰色世界、自动白平衡、直方图均衡化、自适应直方图均衡化、对比度受限自适应直方图均衡化及其变化。虽然这些方法在增强陆地图像方面取得了很大的成功,但对水下图像仍有很大的局限性。变换域方法将水下信息从空间域转移到频域,通过放大高频信息和抑制低频信息来增强图像对比度。经典方法有低通滤波、高通滤波、同态滤波、小波变换。尽管这些方法可以降低噪声,增强水下图像的对比度,但色彩校正的效果较差。
以上两类方法不需要学习过程,只需独立地增强图像即可。基于深度学习的方法利用端到端自动训练机制对水下图像进行重构,从一组水下图像中学习水下的固有特征。常用的方法有anwar等人将cnn引入水下图像增强模型,利用合成数据集进行训练,hou等人提出了一种残差卷积神经网络用于水下图像增强。uplavikar等人提出了利用领域对抗学习进行水下图像增强的方法。wang等人提出了一种深度cnn增强水下图像的方法。sun等人通过设计编码解码框架,提出了一种用于水下图像增强的深度像素对像素网络模型,fabbri等人提出了一种使用生成对抗网络(gans)提高水下场景视觉质量的方法,li等人提出了一种融合对抗网络来增强非真水图像。这些方法显著提高了水下图像的视觉效果和质量,但需要大量的成对数据,在水下环境中很难获得,他们通常使用合成数据来构造配对数据。
技术实现要素:
为解决无成对数据集的水下退化图像增强的问题,本发明公开了一种gan网络的方法将水下退化图像转化为清晰图像。由于水下图像没有与之完全对应的清晰图像,因此本发明受cyclegan的启发,使用不成对数据x和y进行水下图像增强,与cyclegan不同的是本发明三个主要创新是:1)采用了一个内容损失来约束退化图像与生成的清晰图像之间的内容一致性,2)为了减少产生的图像的模糊和噪声,在判别器中引入了一个模糊对抗损失。3)在生成器中使用了densenetblocks来传输更多的信息。
对于水下退化图像没有与之成对的清晰图像,因此,本发明采用无监督学习方法将水下退化图像转换成清晰的图像。本发明定义两个图像集合,水下退化图像x集合和水下清晰图像y集合,x和y之间不存在成对的关系。图像生成的过程如图1所示,本发明定义两个生成器g和f,两个判别器dx和dy,生成器g用来生成清晰图像g(x),g(x)和y属于同一个分布,生成器f是一个将g生成的图像g(x)恢复为退化图f(g(x)),f(g(x))和x属于同一个分布,此外,另一个与之相似的过程y->f(y)->g(f(y)),从而保证了模型的可逆性。判别器dy的作用是为了判断g(x)是否和y属于同一分布,判别器dx的作用是为了判断f(y)是否和x属于同一分布。
为了保证x->g(x)和y->f(y)在映射的过程中图像内容的不变,本发明使用vgg19预训练网络的conv4_4层来对输入图像和生成图像特征图之间的1范数来约束。使用内容损失之后,虽然输入图像和g生成的图像之间的内容是一致的,但同时也产生了大量的模糊,影响了视觉效果。为了去除生成图像的模糊,因此本发明引入了模糊对抗损失。
通过实验本发明的方法能够有效的将真实海底的水下退化图像转化为清晰的图像。
有益效果
本发明解决了传统深度学习方法需要成对数据集的限制问题,使用不成对的数据训练模型将水下退化图像转化为清晰图像,取得了较好的视觉效果。
附图说明
图1生成器工作过程示意图;
图2判别器dy工作过程示意图;
图3判别器dx工作过程示意图;
图4生成器网络结构图;
图5判别器网络结构图;
图6a水下退化图像x,图6b水下清晰图像y,图6cy中的图像做了高斯模糊后的图像e;
图7a水下退化图像;
图7b处理后的清晰图像。
具体实施方式
1、构建数据集
训练集:包括x、y和e三种类型,x为水下退化图像,y为水下清晰图像,e为y中的图像做了高斯模糊。x类型图像和y类型图像之间不存在一对一的关系,三种类型图片如图6a、b、c所示:
测试集:只包含水下退化图像,和训练集中x类型一样。
2、模型构建
该模型包括两个模块:生成器模块和判别器模块。本模型中生成器模块包含g和f两个生成器,两个生成器的网络是相同的,经过训练之后的参数是不同的。判别器模块只包含dx和dy两个判别器,两个生成器的网络是相同的,经过训练之后的参数是不同的。生成器在训练过程中的目标是制造假样本让判别器无法判断真假,判别器在训练的过程中的目标是能够区分真假样本,生成器和判别器之间经过对抗训练最终达到判别器面对真假样本都无法区分的状态。
生成器和判别器的详细网络结构:
生成器由编码器、转换器和解码器构成:
对于生成器网络,本实施例中输入为256x256x3的图像,编码器由3个卷积层组成,第一个卷积层,64个大小为7x7的卷积核,步长为1。第二个卷积层128个大小为3x3的卷积核,步长为2。第三个卷积层256个大小为3x3的卷积核,步长为2。转换器由3个相同的densenetblock组成,densenetblock的网络如表1所示,densenetblock由1个transition和8个conv_block组成,conv2d表示二维卷积,kernel_size表示卷积核,stride表示步长,padding表示填充,concat表示特征图的叠加。解码器由两个反卷积核一个卷积组成,第一个反卷积128个大小为3x3的卷积核,步长为2。第二个反卷积层64个大小为3x3的卷积核,步长为2。解码器中的卷积层3个大小为7x7的卷积核,步长为1。最后生成256x256x3的输出图像。判别器网络,使用由5个卷积核大小为3x3的全卷积层组成的马尔可夫判别器,判别器最后输出为70x70的矩阵,最后取出矩阵的均值作为real/fake的输出。以上内容不对本发明构成限制,仅作为优选实施方式进行说明,各个参数可根据实际情况进行调整。
表1densenetblock
损失函数详细描述
在本模型中生成器模块的g网络尽可能将水下退化图像x生成清晰图像g(x),f网络将g(x)恢复成水下退化图像的过程,如图1所示,为了让生成器g在生成g(x)的过程中图片的内容细节保持不变,本发明使用了内容损失函数。为了使生成器f恢复的f(g(x))图像和x一致,本发明使用了循环一致性损失函数。内容损失函数包括两部分:x图像和g(x)图像由预先训练的vgg-19网络的conv4_4层提取的高级特征之间的1范数,以及y图像和f(y)图像由预先训练的vgg-19网络的conv4_4层提取的高级特征之间的1范数,如公式6所示。循环一致性损失包括两部分,x与f(g(x))之间的循环一致性损失和y与g(f(y))之间的循环损失,用1范数来衡量,如公式5所示。
在本模型中判别器dy是为了判别g生成的g(x)是否为清晰图像的过程,如图2所示,判别器dx是为了判别f生成的f(y)是否为水下退化图像的过程,如图3所示。
判别器dy和生成器g对抗的过程如下:
判别器dy刚开始判别能力还比较弱,经过水下清晰图像y的训练,有一定的判别能力。生成器刚开始还不能直接生成清晰图像,因此判别器把g(x)判别为fake,生成器将继续学习尽量生成判别器无法鉴别真假的图片,生成器经过学习生成的图像可能还是不够清晰,但是判别器的判别能力有限完全可以欺骗过判别器,此时判别器再经过学习能够区分真假图片。生成器可判别器经过多次的对抗训练,慢慢相互进步,最终达到一个平衡,生成器和判别器的能力都达到最好并且判别器还是无法区分真假图像,即该模型中g生成的清晰图像dy无法鉴别出真假。
判别器dx和生成器f对抗的过程如下:
判别器dx刚开始判别能力还比较弱,经过水下退化图像x的训练,有一定的判别能力。生成器f刚开始还不能直接生成水下退化图像,因此判别器把f(y)判别为fake,生成器f将继续学习尽量生成判别器无法鉴别真假的图片,生成器经过学习生成的图像可能还是不能够达到水下退化图像,但是判别器的判别能力有限完全可以欺骗过判别器,此时判别器再经过学习能够区分真假图片。生成器可判别器经过多次的对抗训练,慢慢相互进步,最终达到一个平衡,生成器和判别器的能力都达到最好并且判别器还是无法区分真假图像,即该模型中f恢复的水下退化图像dx无法鉴别出真假。
由于在实验中发现生成器g生成的图片已经能够和y类型一样,但是图片出现图像边缘模糊现象,可见判别器还无法判断去鉴别边缘模糊的问题,因此本发明加入了边缘损失函数,如公式4所示,把y中的图片经过高斯模糊操作得到数据集e,在训练判别器的过程中让判别器具有把e中的图片判别为假的能力,这样最终达到平衡状态的g(x)图像是没有边缘模糊的清晰图像。f生成的图像并不是最终需要的,只是为了优化g使用的因此dx不需要边缘损失函数。
模型在训练时通过最小化损失函数来优化:生成器完整损失函数包括生成器g的对抗损失函数、生成器f的对抗损失函数、循环一致性损失函数和内容损失函数四部分组成。判别器的完整损失函数包括判别器dx和dy的对抗损失函数两部分。
生成器损失函数:
(1)生成器g的损失函数如公式1所示:
在公式1中e表示期望,x属于水下退化图像x数据集,pdata(x)表示x数据集中数据的分布。
(2)生成器f的损失函数如公式2所示:
在公式1中e表示期望,y属于水下清晰图像y数据集,pdata(y)表示y数据集中数据的分布。
(3)循环一致性损失函数如公式5所示:
循环一致性损失包括两部分,x与f(g(x))之间的循环一致性损失和y与g(f(y))之间的循环损失,用1范数来衡量。分别如下公式的第一项和第二项。
(4)内容损失函数如公式6所示:
内容损失函数包括两部分,x与g(x)之间的内容损失和y与f(y)之间的内容损失,用1范数来衡量。分别如下公式的第一项和第二项。
(5)生成器完整损失函数如公式7所示:
生成器的完整损失由公式(1)、(2)、(5)、(6)组成。
判别器损失函数:
(1)判别器dy的损失函数如公式3所示:
在公式3中e表示期望,e属于水下清晰图像经过高斯模糊之后的e数据集中的图像,pdata(e)表示e数据集中数据的分布。g*表示判别器dy在训练时生成器g的生成图片能力为固定的值。
(2)判别器dx的损失函数如公式4所示:
在公式4中,f*表示判别器dx在训练时生成器f的生成图片能力为固定的值。
(3)判别器完整损失函数如公式8所示:
生成器的完整损失由公式(3)、(4)组成。
3、模型训练
本发明使用了670张图片作为训练集,其中335张图片为水下退化图像称为训练集a,另外335张图片为清晰图像称为训练集b,训练集a和b中的图片之间不存在一对一的关系,本发明制作训练集c,训练集c是将训练集b中的图片做了高斯模糊操作而成。在实验中如果仅仅使用训练集b来训练判别器,最终生成器生成的图像出现了模糊现象,因此本发明增加了训练集c来训练判别器,实验时增加训练集c之后,生成器可以很好地的输出清晰图像。测试集为70张水下退化图像,训练集和测试集图像尺寸都为256x256x3。整个网络使用pytorch框架,迭代200个循环,在8块nvidiateslap100服务器上训练,训练时间为3个小时左右。在训练时,生成器g、生成器f、判别器dx和判别器dy都需要训练,首先训练生成器,当达到训练次数后,生成器参数不变,再训练判别器,当判别器达到训练次数后,判别器参数不变,继续训练生成器,如此循环往复,直到最小化损失函数或者达到迭代次数完成对网络的优化训练;在测试时只需要生成器g就可以得到结果。
4、结果测试
通过测试集进行系统测试,通过附图7a、7b可以看出经过本发明的方法增强之后的图片更加清晰。
1.基于gan网络的水下退化图像增强的方法,其特征在于:
(1)构建数据集,其中训练集包括x、y和e三种类型,x为水下退化图像,y为水下清晰图像,e为y中的图像做了高斯模糊后的图像,x类型图像和y类型图像之间不存在一对一的关系;
(2)网络构建:本方法的网络架构由两个生成器网络和两个判别器网络组成,其中,生成器g用于将水下退化图像x转化为清晰图像g(x)同时也可以将f(y)恢复为g(f(y)),生成器f用于将清晰图像y转换为退化图像f(y)同时也可以将g(x)恢复为f(g(x)),两个生成器的网络结构相同但参数不同;判别器dy用于判别g生成的g(x)是否为清晰图像,判别器dx用于判别f生成的f(y)是否为水下退化图像,判别器的两个网络结构相同参数不同;
(3)网络训练:首先训练生成器,当达到训练次数后,生成器参数不变,再训练判别器,当判别器达到训练次数后,判别器参数不变,继续训练生成器,如此循环往复,直到最小化损失函数完成对网络的优化训练;
(4)利用训练完成的生成器g生成水下退化图像的清晰图像。
2.根据权利要求1所述的基于gan网络的水下退化图像恢复的方法,其特征在于:所述的生成器由编码器、转换器和解码器构成,其中编码器由3个依次相连的卷积层组成,转换器由3个相同的densenetblock依次相连组成,解码器由两个反卷积核和一个卷积依次相连组成。
3.根据权利要求2所述的基于gan网络的水下退化图像恢复的方法,其特征在于:所述的densenetblock由1个transition和8个conv_block依次相连组成。
4.根据权利要求1所述的基于gan网络的水下图像增强的方法,其特征在于:所述的判别器网络是5个全卷积层组成的马尔可夫判别器,判别器最后输出矩阵的均值作为real/fake的输出。
5.根据权利要求1所述的基于gan网络的水下退化图像恢复的方法,其特征在于:
生成器完整损失函数如公式7所示
其中,生成器g的损失函数进一步如公式1所示:
在公式1中e表示期望,x属于水下退化图像x数据集,pdata(x)表示x数据集中数据的分布;
生成器f的损失函数进一步如公式2所示:
在公式2中,y属于水下清晰图像y数据集,pdata(y)表示y数据集中数据的分布;
循环一致性损失函数进一步如公式5所示:
循环一致性损失包括两部分,x与f(g(x))之间的循环一致性损失和y与g(f(y))之间的循环损失,用1范数来衡量,分别如下公式的第一项和第二项;
内容损失函数进一步如公式6所示:
内容损失函数包括两部分,x与g(x)之间的内容损失和y与f(y)之间的内容损失,用1范数来衡量,分别如下公式的第一项和第二项:
||vgg(g(x))-vgg(x)||1表示x图像和g(x)图像由预先训练的vgg-19网络的conv4_4层提取的高级特征之间的1范数,||vgg(f(y))-vgg(y)||1表示y图像和f(y)图像由预先训练的vgg-19网络的conv4_4层提取的高级特征之间的1范数;
6.根据权利要求1所述的基于gan网络的水下退化图像恢复的方法,其特征在于:
所述完整判别器的损失函数如公式8所示:
其中,判别器dy的损失函数进一步如公式3所示:
在公式3中e表示期望,e属于水下清晰图像经过高斯模糊之后的e数据集中的图像,pdata(e)表示e数据集中数据的分布,g*表示判别器dy在训练时生成器g的生成能力为固定的值;
判别器dx的损失函数进一步如公式4所示:
在公式4中,f*表示判别器dx在训练时生成器f的生成能力为固定的值。
技术总结