【水下图像增强】Enhancing Underwater Imagery using Generative Adversarial Networks
原始题目 | Enhancing Underwater Imagery using Generative Adversarial Networks |
---|---|
中文名称 | 使用 GAN 增强水下图像 |
发表时间 | 2018年1月11日 |
平台 | ICRA 2018 |
来源 | University of Minnesota, Minneapolis MN |
文章链接 | https://arxiv.org/abs/1801.04011 |
开源代码 | 官方:https://github.com/IRVLab/UGAN (tensorflow ) |
摘要
自动水下航行器(Autonomous underwater vehicles (AUVs))依靠各种传感器——声学、惯性和视觉(acoustic, inertial and visual)——进行智能决策。由于其 非侵入性、被动性和高信息量,视觉(non-intrusive, passive nature, and high information content) 是一种有吸引力的传感方式,特别是在较浅的深度。然而,光的 折射和吸收( refraction and absorption)、水中悬浮粒子(suspended particles)、颜色失真(color distortion)等因素会影响视觉数据的质量,导致图像噪声和失真。因此,依赖视觉感知的 AUVs 面临着困难的挑战,因此在视觉驱动的任务中表现不佳。
本文提出了一种使用 GANs 来提高水下视觉场景质量的方法,其目标是 在 自主流程(autonomy pipeline) 中进一步改善视觉驱动行为的输入。此外,我们展示了最近提出的方法如何能够生成用于这种水下图像恢复的数据集。对于任何视觉引导的水下机器人来说,这种改进可以通过强大的视觉感知来提高安全性和可靠性。为此,我们提出了定量和定性的数据,这些数据表明,通过所提出的方法 校正的图像产生了更有视觉吸引力的图像,也为 diver 跟踪算法提供了更高的精度。
5. 结论
提出了一种利用生成对抗网络增强水下彩色图像的方法。展示了使用 CycleGAN 生成配对图像数据集,为所提出的恢复模型提供 训练集。定量和定性的实验结果验证了该方法的有效性,使用 diver 跟踪算法对校正后的潜水员图像序列进行跟踪,结果表明,与未校正的图像序列相比,校正后的 diver 图像序列具有更高的准确性。
未来的工作将专注于从水下物体中创建更大、更多样化的数据集,从而使网络更具泛化性。用粒子和灯光效果等噪声来增强 CycleGAN 生成的数据,可以提高数据集的多样性。还打算研究一些不同的定量性能指标来评估我们的方法。
1. 引言
随着新型平台、传感器和推进机制的出现,水下机器人已经成为自主领域机器人的一个稳步增长的子领域。自主水下航行器通常配备有各种传感器,而视觉感知由于其非侵入、被动和节能的特性,是一个有吸引力的选择。珊瑚礁监测[28]、深海探测[32]和海底测绘[5]是 visually-guided AUVs 和 ROVs (Remotely Operated Vehicles) 广泛使用的一些任务。这些机器人的使用确保了人类不会暴露在水下探索的危险中,因为他们不再需要冒险到深度(这是过去进行此类任务的方式)。尽管水下环境具有使用视觉的优势,但水下环境对视觉感知提出了独特的挑战,因为悬浮粒子的折射、吸收和散射会极大地影响光学。例如,由于红色波长很快被水吸收,图像往往具有绿色或蓝色色调。当越深,这种效果恶化,因为越来越多的红色色调被吸收。这种失真在本质上是极其非线性的,并且受到许多因素的影响,例如光线的数量(阴天与阳光,操作深度),水中粒子的数量,一天中的时间和正在使用的相机。这可能会导致分割、跟踪或分类等任务的困难,因为它们间接或直接使用颜色。
由于颜色和光照开始随着深度的变化而变化,基于视觉的算法需要具有通用性,以便在机器人可能操作的深度范围内工作。由于获取各种水下数据以训练视觉系统的高成本和困难,以及引入的大量噪声,算法可能(并且确实)在这些不同的领域表现不佳。图1 显示了水下环境中可能出现的视觉场景的高变化性。解决这个问题的一个步骤是能够恢复图像,使它们看起来像是在水面上,即 校正颜色并从场景中去除悬浮颗粒。通过进行 多对一(非水下的) 映射 ,即从 水下领域 到 非水下领域(图像在水面上的样子),难以跨多种形式噪声执行的算法 可能只能聚焦一个干净的领域。
![drawing](https://img2023.cnblogs.com/blog/1564596/202303/1564596-20230304224219993-1755913131.png)
深度神经网络已经被证明是强大的非线性函数逼近器,特别是在视觉[17]领域。通常,这些网络需要大量的数据,要么标记为 ground truth.,要么与 ground truth. 配对。对于灰度图像[33]的自动着色问题,由于任何彩色图像都可以转换为黑白图像,因此现成的训练数据是成对的。然而,水下图像受到颜色或其他现象的扭曲,缺乏 ground truth,这是采用类似方法进行校正的主要障碍。本文提出一种基于 Generative Adversarial Networks, GANs 的水下视觉场景质量提升技术,旨在提升自主水下机器人视觉驱动行为的性能。
我们使用最近提出的 CycleGAN[35] 方法,该方法学习在没有图像对的情况下将图像从任意域 X 转换到另一个任意域 Y,作为生成配对数据集的一种方法。 通过让 X 是一组 未失真的(undistorted) 水下图像,Y 是一组 失真的(distorted) 水下图像,我们可以生成一个看起来在水下的图像,同时保留 ground truth 。
2. 相关工作
虽然最近已经有许多成功的自动着色方法[33,11],但大多数都 专注于将灰度图像转换为彩色的任务。
相当多的方法使用基于物理的技术直接模拟光的折射[15]。
针对水下图像的颜色恢复,[29]的工作采用 马尔可夫随机场的能量最小化公式。
与本文提出的工作最相似的是最近提出的 WaterGAN[20],它使用对抗性方法来生成逼真的水下图像。他们的生成器模型可以分为三个阶段:
- 1)衰减,这说明了光的范围相关衰减。
- 2)散射,模拟由光子向图像传感器散射引起的雾霾效果;
- 3)渐晕,在图像角点上产生阴影效果,这种效果可以由特定的相机镜头引起。
与我们的工作不同的是,他们使用 GAN 来生成水下图像,并严格使用 Euclidean loss 来进行颜色校正,
而我们两者都使用 GAN。此外,它们在 WaterGAN 训练期间需要深度信息,这通常很难获得,特别是在水下自主机器人应用中。本文工作在整个过程中只需要两个独立域(例如 水下 和 陆地 )中的物体的图像。
最近在生成模型,特别是 GANs 方面的工作,在 修复[24]、风格迁移[8]和图像到图像转换 等领域显示了巨大的成功[14,35]。这主要是因为它们能够提供比 欧氏距离 更有意义的损失,而 欧氏距离 已被证明会产生模糊的结果。本文将 估计水下图像真实外观的问题 构建 为 成对图像到图像的转换问题,使用生成对抗网络(GANs)作为生成模型(详细信息请参见第 3.2节)。与[14]的工作非常类似,我们使用来自 两个域的图像对 作为输入和 ground
truth。
3. 方法
受颜色或其他环境影响而失真的水下图像缺乏 ground truth,这是以往彩色化方法所必需的。此外,水下图像中的失真是高度非线性的; 简单的方法,如向图像添加色调,不能捕获所有的依赖关系。本文提出使用 CycleGAN 作为失真模型,以生成用于训练的成对图像。给定一个 无失真的水下图像域 和一个 有失真的水下图像域,CycleGAN 能够进行风格迁移。给定一个 未失真的图像,CycleGAN 将其失真,使其看起来像是来自 失真图像的域。然后 在我们的算法中使用这些对进行图像重建。
无失真的水下图像域: 没有水下那种颜色的图像
失真的水下图像域: CycleGAN 生成的图像
3.1 数据生成
深度、光照条件、相机模型和水下环境中的物理位置都是影响 图像失真量 的因素。在某些条件下,水下图像可能有很小的失真,或者完全没有失真。 设 \(I^C\) 为无失真的水下图像,\(I^D\) 为 有失真的水下图像。我们的目标是学习函数 \(f: I^{D} \rightarrow I^{C}\)。 由于收集水下数据的困难,往往不仅 \(I^D\) 或 \(I^C\) 不存在,而且 二者都不存在。
为了避免图像对不足的问题,我们使用 CycleGAN 从 \(I^{C}\) 生成 \(I^{D}\),它给我们一个 成对的图像数据集。给定两个数据集 X 和 Y,其中 $I^C∈X $和 \(I^D∈Y\), CycleGAN 学习一个映射 \(F: X→Y\)。图2 显示了从CycleGAN 生成的配对样本。从这个配对的数据集中,我们训练一个生成器 G 来学习函数 \(f: I^D→I^C\)。应该注意的是,在 CycleGAN 的训练过程中,它同时学习映射 \(G: Y→X\),这与 \(f\) 类似。在第 4 节中,我们将 CycleGAN 生成的图像与通过我们的方法生成的图像进行比较。
![drawing](https://img2023.cnblogs.com/blog/1564596/202303/1564596-20230304222828556-1483544676.png)
3.2 对抗网络
在机器学习文献中,生成式对抗网络(GANs)[9] 代表了一类基于博弈论的生成模型,其中 生成器网络与对手竞争。从分类的角度来看,生成器网络 G 产生的实例会主动试图 “欺骗” 鉴别器网络 d。目标是让鉴别器网络能够区分来自 数据集的“真”实例 和生成器网络产生的 “假”实例。在我们的例子中,以图像 \(I^D\) 为条件,生成器被训练生成一个图像来试图欺骗鉴别器,鉴别器被训练来区分 失真和非失真的水下图像。在原始 GAN 公式中,我们的目标是解决 minimax 问题:
注意为了表示法的简单性,我们将进一步省略(omit) \(\begin{array}{l}{{I^{C}\:\sim\:{\mathcal{P}}_{t r a i n}\left(I^{C}\right)}}\end{array}\) 和 \(I^{D}\;\sim\;\!P_{g e n}\big(I^{D}\big)\)。在这个公式中,discriminator 被假设为具有 sigmoid 交叉熵损失函数的分类器,这在实践中可能会导致消失梯度和模式崩溃(collapse)等问题。
如[2]所示,随着 判别器 的提升,生成器的梯度消失,使其难以或不可能进行训练。当生成器 “坍缩” 到单个点时,就会发生模式坍缩,仅用一个实例欺骗 判别器。为了说明模式崩溃的影响,假设 GAN 被用于从 MNIST[18]数据集生成数字,但它只生成了相同的数字。实际上,我们期望的结果是生成所有数字的不同集合。为此,最近有许多方法为 判别器 假设了不同的损失函数[21,3,10,34]。本文关注 Wasserstein GAN (WGAN)[3]公式,提出通过使用 Kantorovich-Rubinstein 对偶(duality)[31]构造一个值函数 来使用 Earth-Mover 或 Wasserstein-1 距离 W。在这个公式中,W 被近似给定一组 k-Lipschitz 函数 f 建模为神经网络。为了确保 f 是 k-Lipschitz,判别器 的权重被剪切到某个范围[−c, c]。不像[3]那样裁剪网络权重,本文采用带梯度惩罚的 Wasserstein GAN with gradient penalty (WGAN-GP)[10],通过对 判别器 输出相对于输入的梯度范数实施软约束来确保 Lipschitz 约束。
[2] Martin Arjovsky and L´eon Bottou. Towards principled methods for training generative adversarial networks. arXiv preprint arXiv:1701.04862, 2017.
其中 \(\mathbb{P}_{\hat{x}}\) 被定义为来自 真实数据分布 和 生成器分布 的 点对 之间的直线上的样本,而 λGP 是一个加权因子。为了给 G 一些 ground truth 的感觉,以及捕获图像中的 low level frequencies ,我们还考虑了 L1 损失:
结合这些,我们得到了我们网络的最终目标函数,我们称之为 Underwater GAN (UGAN):
3.3 图像梯度差损失 Image Gradient Difference Loss
通常情况下,生成模型会产生模糊的图像。本文探索了一种策略,通过直接惩罚 生成器 中图像梯度预测的differences 来锐化这些预测,如[22]提出的。给定一个 ground truth 图像 \(I^C\),一个预测图像 \(I^{P}=G(I^{D})\), α 是一个大于等于 1 的整数, Gradient Difference Loss (GDL) 为:
在我们实验中,考虑 GD L时,将网络表示为 UGAN-P,可以表示为:
3.4 网络架构
所提出的 生成器网络 是一个 全卷积编码器-解码器,类似于[14]的工作,由于输入和输出之间的结构相似性,它被设计为一个" U-Net "[26]。编码器-解码器网络 通过卷积对输入进行下采样(编码)到较低维度的嵌入,然后通过转置卷积对该嵌入进行上采样(解码)以重建图像。使用 “U-Net” 的优势来自于显式地保留 编码器产生的空间依赖关系,而不是依赖嵌入来包含所有信息。 这是通过添加 “skip connections” 来完成的,它将编码器中的卷积层 \(i\) 产生的激活 concatenate 到 解码器中的 转置卷积层 n − i + 1 的输入,其中 n 是网络中的总层数。我们生成器中的每个卷积层都使用 kernel size 为4 × 4,stride 为2。网络编码器部分的卷积之后是 batch normalization[12]和斜率为 0.2 的leaky ReLU activation,而解码器中的转置卷积之后是 ReLU activation 23。解码器的最后一层除外,它使用 TanH 非线性来匹配输入分布[- 1,1]。最近的工作提出了 Instance Normalization[30],以提高 图像到图像翻译任务 的质量,但我们没有观察到额外的好处。
我们的全卷积判别器是模仿[25]的,只是没有使用 batch normalization。 这是因为 WGAN-GP 单独惩罚了每个输入的 判别器 梯度的范数,batch normalization 将会是 无效的。[10]的作者推荐 layer normalization [4],但我们没有发现显著的改进。我们的 判别器 被建模为 PatchGAN[14, 19],它在 图像 patches 的 level 上进行判别。与输出真假对应标量值的常规 判别器 不同,我们的 PatchGAN 判别器输出 32 × 32 × 1 特征矩阵,它为 high level frequencies 提供了度量标准。
4. 实验
4.1 数据集
我们使用 Imagenet[7] 的几个子集 来训练和评估我们的方法。还对从 YouTubeTM 上拍摄的水下潜水员视频进行了频率和空间域 diver tracking 算法的评估。选取 含有水下图像的 Imagenet 子集 用于CycleGAN的训练,并基于 视觉检查(就是人看吧) 手动将其分为两类。设 X 为无失真的水下图像集合,Y 为有失真的水下图像集合。X 包含 6143 张图像,Y 包含 1817 张图像。然后,我们训练 CycleGAN 来学习映射 F: X→Y,这样来自 X 的图像似乎来自 Y。最后,我们用于训练数据的 图像对 是通过用 F 失真 X 中的所有图像来生成的。图2 显示了样本训练对。在与 CycleGAN 进行比较时,使用了从 FlickrTM 获取的 56 幅图像作为测试集。
4. 评估
在 CycleGAN 生成的 图像对 上训练 UGAN 和 UGAN-P,并在来自 测试集 Y 的图像上进行评估。请注意,这些图像不包含任何 ground truth,因为它们是来自 Imagenet 的原始失真图像。用于训练和测试的图像大小为 256 × 256 × 3,归一化在[−1,1]之间。图3 显示了来自测试集的样本。值得注意的是,这些图像包含不同数量的噪声。 UGAN 和 UGAN-P 都能够恢复丢失的颜色信息,以及纠正现有的任何颜色信息。
虽然许多 失真图像 在整个图像空间中都包含 蓝色 或 绿色色调,但情况并不总是如此。在某些环境中,靠近相机的物体可能没有失真,颜色正确,而图像的背景包含失真。在这种情况下,我们希望网络只纠正图像中出现扭曲的部分。图3 中的最后一行显示了这种图像的一个示例。小丑鱼的橙色保持不变,而背景中扭曲的海葵则经过颜色校正。
对于定量评估,我们将其与 CycleGAN 进行比较,因为它在训练 G: Y→X 期间固有地学习了逆映射。我们首先使用 Canny 边缘检测器[6],因为它与真实值相比提供了颜色无关的图像评估。其次,比较局部图像块,提供图像的清晰度指标。展示了现有的水下机器人跟踪算法如何通过生成的图像提高性能。
4.3 与 CycleGAN 对比
略
4.4 Diver Tracking using Frequency Domain Detection
MDPM tracker 在生成的图像上 比 真实图像 上的性能提升。水下图像由于能见度低,往往无法捕捉到前景与背景亮度值的真实对比。生成的图像似乎在一定程度上恢复了这些受侵蚀的强度变化,使 MDPM 跟踪器的阳性检测(正确检测增加了350%)得到了很大的改善。
4.5 训练细节和推理性能
- 所有实验的超参数:\(λ_1 = 100\), \(λ_{GP} = 10\),batch size = 32
- 优化器和学习率:Adam, 学习率=1e−4
- 训练策略: 和 WGAN-GP 一样,对于生成器的每次更新,判别器被更新 n 次,其中 n = 5。
- UGAN-P 的超参数: \(λ_2 = 1.0, α = 1\)。
- 实现框架: Tensorflow
- 硬件: GTX 1080
- 训练方式: 从头训练 100 个 epoch
- 推理速度:GPU 上的推理平均耗时 0.0138s,约为每秒 72帧(FPS)。在 CPU (Intel Core i7-5930K)上,推理平均耗时 0.1244s,约为 8 FPS。
- 输入图像大小:256 ×256×3