效果惊艳!北大团队提出Attentive GAN去除图像中雨滴

简介: 北京大学和新加坡国立大学的研究人员提出一种新方法去除图像中的雨滴,通过在生成对抗网络中插入注意力图,去除雨滴的效果相比以往方法大幅提升。这项工作有很大的实际意义,比如用在自动驾驶中。

附着在玻璃窗户、挡风玻璃或镜头上的雨滴会阻碍背景场景的能见度,并降低图像的质量。图像质量降低的主要原因是有雨滴的区域与没有雨滴的区域相比,包含不同的映象。与没有雨滴的区域不同,雨滴区域是由来自更广泛环境的反射光形成的,这是由于雨滴的形状类似于鱼眼镜头。此外,在大多数情况下,相机的焦点都在背景场景上,使得雨滴的外观变得模糊。

在这篇论文中,北京大学计算机科学技术研究所和新加坡国立大学的研究人员解决了这种图像能见度降低(visibility degradation)的问题。由于雨滴降低了图像质量,我们的目标是去除雨滴并产生清晰的背景,如图1所示。

53335fc4d79b1e7d4161aea63068e0364a1a42af

图1:雨滴去除方法的演示。左图:输入的有雨滴的图像。右图:我们的结果,大多数雨滴被去除了,结构细节也被恢复。放大图片可以更好地观察修复质量。

我们的方法是全自动的。该方法将有利于图像处理和计算机视觉应用,特别是哪些需要处理雨滴、灰尘或类似东西的应用。

有几种方法可以解决雨滴的检测和去除问题。但是,一些方法专用于检测雨滴而不能将其去除,一些方法不适用于普通相机拍摄的单个输入图像,或者只能处理小的雨滴,并且产生的输出很模糊。

我们的工作打算处理大量的雨滴,如图1所示。一般来说,去除雨滴的问题是难以解决的。因为首先,被雨滴遮挡的区域不是固定的。其次,被遮挡区域的背景场景的信息大部分是完全丢失的。当雨滴较大,而且密集地分布在输入图像时,问题会变得更糟。

为了解决这个问题,我们使用生成对抗网络(GAN)。在这个网络中,产生的输出将由判别网络(discriminative network)进行评估,以确保输出看起来像真实的图像。为了解决问题的复杂性,生成网络( generative network)首先尝试生成一个注意力图(attention map)。注意力图是这个网络中最重要的部分,因为它将引导生成网络关注雨滴区域。 注意力图由一个循环网络生成,该循环网络由深层残差网络(ResNets)和一个卷积LSTM和几个标准的卷积层组成。我们称之为attentive-recurrent network

生成网络的第二部分是一个自动编码器(autoencoder),它以输入图像和注意力图作为输入。为了获得更广泛的上下文信息,在自动编码器的解码器侧,我们应用了多尺度损失(multi-scale losses)。每个损失都比较了卷积层的输出和相应的ground truth之间的差异。卷积层的输入是解码器层的特征。除了这些损失之外,对于自动编码器的最终输出,我们应用一个感知损失来获得与ground truth更全面的相似性。最后的输出也是生成网络的输出。

在获得生成图像输出后,判别网络将检查它是否真实。但是,在我们的问题中,尤其是在测试阶段,目标雨滴区域并没有给出。因此,在局部区域上没有判别网络可以关注的信息。为了解决这一问题,我们利用注意力图来引导判别网络指向局部目标区域。

总的来说,除了引入一种新的雨滴去除方法外,我们的另一个主要贡献是将注意力图引入到生成网络和判别网络中,这是一种全新的方法,可以有效地去除雨滴。我们将发布代码和数据集。

雨滴图像的形成

我们将有雨滴的图像建模为背景图像与雨滴效果的结合:

2ea1627b4df57e1a3100235689d032407728de23

其中I是彩色的输入图像,M是二进制掩码。在掩模中,M(x) = 1表示像素x是雨滴区域的一部分,否则表示它是背景区域的一部分。B表示背景图像,R表示雨滴带来的效果。运算符⊙表示element-wise乘法。

雨滴实际上是透明的。然而,由于雨滴区域的形状和折射率,雨滴区域的像素不仅受到现实世界中一个点的影响,还受到整个环境的影响,使得大部分雨滴似乎都有不同于背景场景的意象。此外,由于我们的相机被假定聚焦在背景场景上,雨滴区域内的图像大多是模糊的。雨滴的某些部分,尤其是外围和透明区域,传达了一些有关背景的信息。我们注意到这些信息可以被我们的网络利用。

使用Attentive GAN去除雨滴

666e86927084424df47274b1e680c32897bb1f53

图2:Attentive GAN的架构。生成器由一个 attentive-recurrent网络和autoencoder组成。判别器由一系列的卷积层组成,并由attention map引导。

图2显示了我们提出的网络的总体架构。根据生成对抗网络的思想,Attentive GAN有两个主要部分:生成网络和判别网络。给定一个有雨滴的输入图像,我们的生成网络试图生成一个尽可能真实并且没有雨滴的图像。判别网络将验证生成网络生成的图像是否看起来真实。

Attentive GAN的loss可以表示为:

f59f819e7fa68efadbe968903eb99b27a5d166aa

生成网络(Generative Network)

如图2所示,生成网络由两个子网络组成:一个attentive-recurrent network和一个contextual autoencoder

Attentive-Recurrent Network:视觉注意力模型被应用于定位目标区域的图像,以捕获区域的特征。

c222c0320a43bdf6f3e6065aa547aecd49e2640f

图3:attention map学习过程的可视化

Contextual Autoencoder:背景自动编码器的目的是产生一个没有雨滴的图像。自动编码器的输入是输入图像和Attentive-Recurrent网络的最终注意力图的连接。我们的deep autoencoder有16个conv-relu块,并且跳过连接以防止模糊输出。

9ea5201f623fff0dcbe68c6d23112d93ea348367

图4:Contextual Autoencoder的结构

判别网络(Discriminative Network)

我们的判别网络包含7个卷积层,核为(3,3),全链接层为1024,以及一个具有sigmoid激活函数的单个神经元。我们从倒数第三个卷积层提取特征,然后进行乘法运算。

9ea5201f623fff0dcbe68c6d23112d93ea348367

图5:数据集的样本。上:有雨滴的图像。下:相应的ground-truth图像。

实验结果

35bad360684eac132caed7ae7bbc9609aa463066

应用

为了进一步证明我们的可见性增强方法对于计算机视觉应用是有用的,我们使用了谷歌视觉API (https://cloud.google.com/vision/)来测试使用我们的输出是否可以提高识别性能。结果如图10所示。

73b63e975997a7049699f56b232082d3c4b91bf6

图10:一个改进谷歌视觉API结果的示例。我们的方法增加了主要对象检测的分数以及识别到的对象数量。


可以看出,使用我们的输出,一般的识别比没有我们的可见性增强过程要好。此外,我们对测试数据集进行评估,如图11的统计数据显示,使用我们的可见性增强输出在识别输入图像中的主要对象的平均得分和识别出的对象标签数方面,显著优于没有可见性 增强的输出。

9219a4952cc1b6e8bfc2c950a8f7812e951ab205

图11:基于Google Vision API的改进

结论

我们提出了一种基于单幅图像的雨滴去除方法。该方法利用生成对抗网络,其中生成网络通过attentive-recurrent网络产生注意力图(attention map),并将该图与输入图像一起通过contextual autoencoder生成无雨滴图像。然后,判别网络评估生成的输出的全局和局部有效性。为了能够局部验证,我们将注意力图注入网络。该方法的创新之处在于在生成网络和判别网络中使用注意力图。我们还认为,我们的方法是第一种可以处理相对严重的雨滴图像的方法,而目前最先进的雨滴去除方法尚没有解决这个问题。


原文发布时间为:2018-06-23

本文作者:肖琴

本文来自云栖社区合作伙伴新智元,了解相关信息可以关注“AI_era”。

原文链接:效果惊艳!北大团队提出Attentive GAN去除图像中雨滴

相关文章
|
7月前
|
机器学习/深度学习 JavaScript PyTorch
9个主流GAN损失函数的数学原理和Pytorch代码实现:从经典模型到现代变体
生成对抗网络(GAN)的训练效果高度依赖于损失函数的选择。本文介绍了经典GAN损失函数理论,并用PyTorch实现多种变体,包括原始GAN、LS-GAN、WGAN及WGAN-GP等。通过分析其原理与优劣,如LS-GAN提升训练稳定性、WGAN-GP改善图像质量,展示了不同场景下损失函数的设计思路。代码实现覆盖生成器与判别器的核心逻辑,为实际应用提供了重要参考。未来可探索组合优化与自适应设计以提升性能。
471 7
9个主流GAN损失函数的数学原理和Pytorch代码实现:从经典模型到现代变体
|
10月前
|
机器学习/深度学习 人工智能 自然语言处理
C++构建 GAN 模型:生成器与判别器平衡训练的关键秘籍
生成对抗网络(GAN)是AI领域的明星,尤其在C++中构建时,平衡生成器与判别器的训练尤为关键。本文探讨了GAN的基本架构、训练原理及平衡训练的重要性,提出了包括合理初始化、精心设计损失函数、动态调整学习率、引入正则化技术和监测训练过程在内的五大策略,旨在确保GAN模型在C++环境下的高效、稳定训练,以生成高质量的结果,推动AI技术的发展。
302 10
|
缓存 运维 Serverless
函数计算产品使用问题之如何创建HTTP触发器
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
机器学习/深度学习 算法 计算机视觉
计算机视觉实战项目3(图像分类+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别+无人机检测+A*路径规划+单目测距与测速+行人车辆计数等)
计算机视觉实战项目3(图像分类+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别+无人机检测+A*路径规划+单目测距与测速+行人车辆计数等)
|
传感器
光学雨量计雨量传感器的原理与工作机制
光学雨量计雨量传感器的原理与工作机制
光学雨量计雨量传感器的原理与工作机制
|
存储 关系型数据库 MySQL
【TiDB原理与实战详解】5、BR 物理备份恢复与Binlog 数据同步~学不会? 不存在的!
BR(Backup & Restore)是 TiDB 分布式备份恢复的命令行工具,适用于大数据量场景,支持常规备份恢复及大规模数据迁移。BR 通过向各 TiKV 节点下发命令执行备份或恢复操作,生成 SST 文件存储数据信息与 `backupmeta` 文件存储元信息。推荐部署配置包括在 PD 节点部署 BR 工具,使用万兆网卡等。本文介绍 BR 的工作原理、部署配置、使用限制及多种备份恢复方式,如全量备份、单库/单表备份、过滤备份及增量备份等。
|
算法 数据可视化 定位技术
基于PCL库的通过ICP匹配多幅点云方法
基于PCL库的通过ICP匹配多幅点云方法
基于PCL库的通过ICP匹配多幅点云方法
|
存储 Java 数据库
Java实现一个简单的图书管理系统(内有源码)
Java实现一个简单的图书管理系统(内有源码)
213 0
|
druid Java 网络安全
spring boot配置Druid整合瀚高,报dbtype not support
spring boot配置Druid整合瀚高,报dbtype not support
652 0
|
程序员
相见恨晚的Matlab编程小技巧(2)-代码怎么做到逻辑清晰?——巧用注释符“%“
        本文将以教程的形式详细介绍Matlab中两个常用符号“%”和“%%”的作用。初学者可以通过此文掌握这两个符号的用法,为Matlab编程打下坚实的基础。