Enhancing Underwater Imagery using Generative Adversarial Networks

论文:Enhancing Underwater Imagery using Generative Adversarial Networks
作者:Cameron Fabbri
年份:2018
期刊:IEEE International Conference on Robotics and Automation (ICRA)

摘要

本文提出了一种使用生成对抗网络来改善水下视觉场景质量的方法,使用CycleGAN生成配对图像的数据集,为恢复模型提供训练集。目标是改善视觉驱动行为的输入,进一步降低自主性。

与WaterGAN比较

(1)WaterGAN使用GAN生成水下图像,并使用欧几里得损失(欧氏距离)进行色彩校正;本文同时使用GAN来进行颜色校正。
(2)WaterGAN训练过程中需要深度信息,对于水下自主机器人应用通常很难获得;本文仅需要在两个单独的域(例:水下和陆地)中拍摄物体的图像。
本文使用CycleGAN作为失真模型,以生成用于训练的配对图像。分别给出无失真和有失真的水下图像域,CycleGAN能够执行样式转换。给定一个未失真的图像,CycleGAN会将其失真,以使其似乎来自失真图像的域,这些在本文算法中用于图像重建。

A.数据集生成

IC:没有失真的水下图像,ID:失真的同一图像。目标是学习功能f:ID→IC。由于难以收集水下数据,通常不仅ID或IC存在,而且两者都不存在。为了避免图像对不足的问题,本文使用CycleGAN从IC生成ID,从而提供了成对的图像数据集。

B.对抗性网络

在最初的GAN公式中,目标是解决minimax问题:
在这里插入图片描述
本文用WGAN公式,本文采用具有梯度惩罚的Wasserstein GAN(WGAN-GP),而不是裁剪网络权重,而是通过对鉴别器输出相对于其输入的梯度范数进行软约束,确保了Lipschitz约束。
原本cycleGan的损失函数:
在这里插入图片描述
在这里,直接使用本公式会产生gan网络模式崩溃的问题,所以作者找到了更加适合水下图像的损失函数(loss采用了Wasserstein距离,也就是EM距离,不是欧式距离,EM距离主要是用于衡量两个分布之间的距离,可以获得更多细节信息,即LWGAN):
在这里插入图片描述
Pxˆ:沿着来自真实数据分布和发生器分布的成对点之间沿直线的样本,λGP:加权因子。为了使G具有基本的真实感,并捕获图像中的低电平频率,(因为水下图像增强的后一个阶段是生物识别等功能的增强),所以在这里考虑了L1loss:
在这里插入图片描述
加一个L1正则化项可以避免过拟合。loss总公式Underwater GAN (UGAN):
在这里插入图片描述

C.图像梯度差异损失

本文提出一个UGAN-P loss,在UGAN的基础上加了一项Gradient Diffrence Loss(梯度差损失),用来锐化图像来避免生成的图像模糊。作者用这两个loss分别训练了两个网络,进行对比(地面真实图像IC,预测图像IP = G(ID)且α为大于或等于1的整数)
在这里插入图片描述
在这里插入图片描述

D.网络架构和训练细节

在这里插入图片描述
unet网络可以简单看为先下采样,经过不同程度的卷积,学习了深层次的特征,在经过上采样回复为原图大小,上采样用反卷积实现。最后输出类别数量的特征图,如分割是两类(是或不是),典型unet也是输出两张图,最后要说明一下,原网络到此就结束了,其实在最后还要使用激活函数softmax将这两个类别转换为概率图,针对某个像素点,如输出是[0.1,0.9],则判定这个像素点是第二类的概率更大。
网络结构可以看成3个部分:
•下采样:网络的红色箭头部分,池化实现
•上采样:网络的绿色箭头部分,反卷积实现
•最后层的softmax:在网络结构中,最后输出两张fiture maps后,其实在最后还要做一次softmax,将其转换为概率图。
本文UGAN的kernalsize是4x4,步长是2.encoder部分的网络层都会跟在一个batch normalization和一个斜率为0.2的激活函数leakyRELU后面。Decoder部分则是跟在激活函数RELU后,没有Batch Normalization(原因:WGAN-GP会针对每个输入单独惩罚判别器梯度的范数,该批归一化将无效,层归一化也没有明显的改进)。最后一层的激活函数用的是tanh。判别部分的网络用了一个叫patchgan的设计,大意就是判别网络输出的是一个32x32x1的特征矩阵,
本文判别器被建模为PatchGAN ,它在图像块级别上进行判别。与常规判别器不同,PatchGAN鉴别器输出的是一个32×32×1特征矩阵,不是0或者1,这样可以获得更多的细节信息,为高阶频率提供了一个度量。

猜你喜欢

转载自blog.csdn.net/demo_jie/article/details/106724833