[CR]厚云填补_GridDehazeNet

news2024/12/22 14:40:22

GridDehazeNet: Attention-Based Multi-Scale Network for Image Dehazing


Abstract

        我们提出了一个端到端的可训练卷积神经网络(CNN),命名为GridDehazeNet,用于单幅图像去雾。GridDehazeNet由预处理、主干网络和后处理三个模块组成。与手工选择的预处理方法产生的衍生输入相比,可训练的预处理模块可以生成具有更好多样性和更相关特征的学习输入。该核心模块实现了一种基于注意力的网格网络多尺度估计方法,有效地解决了传统多尺度估计方法存在的瓶颈问题。后处理模块有助于减少最终输出中的伪影。实验结果表明,GridDehazeNet在合成图像和真实图像上的表现都优于最先进的技术。本文提出的消雾方法不依赖于大气散射模型,并解释了为什么即使只考虑合成图像的消雾结果,也不一定有利于利用大气散射模型提供的降维。 

1  Introduction 

        在过去的二十年里,图像去雾问题在计算机视觉领域受到极大关注。图像去雾旨在恢复模糊图像的清晰版本。有助于减轻环境条件引起的图像失真对各种视觉分析任务的影响,这对于开发鲁棒智能监控系统至关重要。

        作为图像恢复的典型例子,除雾问题可以通过各种各样的技术来解决,这些技术在本质上是通用的。此外,在图像去雾中遇到的许多误解和困难也体现在其他恢复问题上。因此,在更广泛的背景下审查有关问题是有益的,下面着重说明其中三个问题:

  1. 物理模型的作用:许多数据驱动的图像恢复方法需要合成数据集进行训练。为了创建这样的数据集,需要有一个相关图像退化过程的物理模型(例如,雾霾效应的大气散射模型)。一个自然的问题是,图像恢复算法本身的设计是否应该依赖于这个物理模型。显然,依赖于模型的算法可能会由于模型不匹配而在真实图像上遭受固有的性能损失。然而,人们通常理所当然地认为,这种算法在使用相同物理模型创建的合成图像上必须具有优势。
  2. 预处理方法的选择:为了便于后续操作,预处理广泛应用于图像预处理中。它还可以用来生成给定图像的几个变体,提供某种形式的多样性,可以通过适当的融合来利用。然而,预处理方法通常是基于启发式选择的,因此不一定最适合所考虑的问题。
  3. 多尺度估计的瓶颈:图像恢复需要对扭曲图像与原始清晰图像之间的统计关系有明确/隐含的了解。捕获这种关系所需的统计模型通常有大量的参数,与现有的训练数据相当,甚至更多。因此,根据训练数据直接估计这些参数往往是不可靠的。多尺度估计通过以下方式解决了这个问题:i)用低维统计模型近似高维统计模型;ii)基于训练数据估计低维模型的参数;iii)参数化估计的低维模型的邻域,执行精细估计,并在需要时重复此过程。很明显,一个尺度上的估计精度会影响下一个尺度上的估计精度。由于多尺度估计通常以连续的方式进行,其性能往往受到一定瓶颈的限制。

        这项工作的主要贡献是一个端到端的可训练CNN,名为GridDehazeNet,用于单幅图像去雾。这个网络可以看作是我们试图解决上述图像恢复中的一般问题的产物。首先,本文提出的GridDehazeNet不依赖大气散射模型进行雾霾去除,但即使在合成图像上,也能够优于现有依赖于模型的去雾方法;对于这一令人困惑的现象,提出了一种可能的解释,并给出了一些支持实验结果。其次,GridDehazeNet的预处理模块是完全可训练的;与手工选择的预处理方法相比,学习后的预处理方法可以更灵活、更有针对性地增强图像。最后,在网格网络上实现基于注意力的多尺度估计,实现了不同尺度间高效的信息交换,缓解了瓶颈问题。结果表明,所提出的除雾方法与最先进的方法相比具有优越的性能。 

2  Related Work 

        早期的图像去雾工作要么需要在不同条件下拍摄同一场景的多幅图像,要么需要从其他来源获取侧面信息。

        没有侧面信息的单幅图像去雾相当困难。已经提出了许多方法来应对这一挑战。传统的策略是根据一定的假设或先验估计透射图t(x)和全球大气光强A(或其变体),然后对Eq.(1)进行反演,得到去雾图像。 

        这方面的代表性研究包括。具体而言,基于观察到清晰图像相对于朦胧图像往往具有更高的对比度,提出了一种局部对比度最大化去雾方法;雾霾去除是在假定透射图和表面遮阳局部不相关的情况下,通过反照率分析实现的;也有引入的去雾方法使用了暗通道先验(Dark Channel Prior, DCP),该方法断言非雾斑中的像素在至少一个颜色通道中具有低强度;提出了一种机器学习方法,该方法利用随机森林回归器利用四个与雾霾相关的特征;采用颜色衰减先验,开发了一种用于图像去雾的监督学习方法。尽管这些方法取得了不同程度的成功,但它们的性能受到所采用的假设/先验相对于目标场景的准确性的固有限制。 

        随着深度学习技术的进步和大型合成数据集的可用性,近年来数据驱动的图像去雾方法越来越受欢迎。这些方法在很大程度上遵循上述传统策略,但减少了对手工制作先验的依赖。例如,有研究提出的去雾方法DehazeNet使用三层CNN直接从给定的模糊图像中估计透射图;采用了一种多尺度CNN (MSCNN),能够进行精细的传输估计。

        AOD-Net代表了对传统策略的背离。具体而言,在其中引入了公式(1)的重新表述,以绕过对透射图和大气光强的估计。仔细观察发现,这种重新表述实际上使大气散射模型完全多余(尽管在没有认识到这一点)。更进一步,在算法设计中明确放弃了大气散射模型。也有提出的门控融合网络(GFN)利用手工选择的预处理方法和多尺度估计,这些方法本质上是通用的,需要改进。

3  GridDehazeNet 

        提出的GridDehazeNet是一个端到端可训练网络,具有三个重要特征:

不依赖于大气散射模型

        图2  大气散射模型对图像去雾的潜在不利影响。为了说明目的,我们将重点放在单个像素的两个颜色通道上,并用t1和t2表示各自的传输图。图2(a)绘制了损耗面随t1和t2的函数图。可以看出,在满足t1 = t2的点(见绿点)达到了全球最小值,这与大气散射模型一致。以黑点为起点,我们可以很容易地使用梯度下降(见黄色路径)找到这个全局最小值。然而,基于大气散射模型沿t1 = t2方向(见红色路径)的受限搜索将卡在紫色圆点表示的点上(见图2(b))。需要注意的是,这个点在约束空间中是局部极小值,而不是在原始空间中,仅仅因为采用了大气散射模型,它就成为了一个障碍物。 

        在上述单幅图像除雾方法中,只有AOD-Net和GFN不依赖于大气散射模型。然而,就合成图像的除雾效果而言,没有令人信服的理由说明为什么忽略该模型有任何优势。有提出的论点是,从模糊图像估计t(x)是一个不适定问题。然而,这是令人困惑的,因为估计t(x)(与颜色通道无关)可能比估计J_{i}(x),i = 1,2,3更容易。在图2中,我们提供了一个可能的解释,为什么如果盲目地使用t(x)与颜色通道无关的事实来缩小搜索空间可能会有问题,以及为什么在搜索最优t(x)时放松这个约束可能是有利的。然而,有了这种松弛,大气散射模型在估计过程中没有减少维数。更根本的是,我们知道CNN的损失面通常表现良好,局部最小值通常几乎与全局最小值一样好。另一方面,通过将大气散射模型合并到CNN中,基本上会引入一个非线性分量,该非线性分量与网络的其余部分本质上是异构的,这可能会产生一个不希望看到的损失面。

可训练预处理模块

        预处理模块通过生成给定模糊图像的多个变体,每个变体突出该图像的不同方面,使相关特征信息更明显地暴露出来,有效地将单幅图像去雾问题转化为多幅图像去雾问题。与现有文献中手工选择的预处理方法相比,本文提出的预处理模块是完全可训练的,这符合近年来图像去雾研究的发展所显示的数据驱动方法相对于基于先验的方法的普遍偏好。请注意,手工选择的处理方法通常旨在增强视觉上可识别的某些具体特征。排除抽象特性是不合理的。实际上,可能存在比图像域更适合后续操作的抽象变换域。可训练的预处理模块可以自由地识别变换域,在变换域上可以利用更多的多样性增益。 

基于注意力的多尺度估计

        受启发,我们在网格网络上实现了多尺度估计。网格网络相对于广泛用于图像恢复的编码器-解码器网络和传统的多尺度网络具有明显的优势。特别是,编码器-解码器网络或传统的多尺度网络中的信息流往往由于分层结构而受到瓶颈效应的影响,而网格网络通过使用上采样/下采样块在不同尺度上的密集连接来避免这一问题。我们进一步赋予网络一种基于渠道的注意力机制,允许更灵活的信息交换和聚合。注意机制还使网络能够更好地利用预处理模块所产生的多样性。 

3.1  网络体系结构

        GridDehazeNet由三个模块组成,即预处理模块、骨干模块和后处理模块。图3显示了所提网络的整体架构。

        预处理模块由卷积层(w/o激活函数)和残差密集块(RDB)组成。它从给定的模糊图像中生成16个特征映射,这些特征映射将被称为学习输入。

        主干模块是GridNet的增强版本,最初是为语义分割而提出的。它基于预处理模块生成的学习输入进行基于注意力的多尺度估计。在本文中,我们选择三行六列的网格网络。每一行对应一个不同的比例尺,由五个RDB块组成,保持特征映射的数量不变。每一列都可以看作是通过上采样/下采样块连接不同尺度的桥梁。在每个上采样(下采样)块中,特征映射的大小减少(增加)2倍,而特征映射的数量增加(减少)2倍。在这里,上采样/下采样是使用卷积层来实现的,而不是传统的方法,如双线性或双三次插值。图4提供了RDB块、上采样块和下采样块的详细说明。每个RDB块由五个卷积层组成:前四层用于增加特征映射的数量,而最后一层融合这些特征映射,然后通过通道加法将其输出与该RDB块的输入结合起来。 

        下面设置RDB的增长率为16。上采样块和下采样块在结构上是相同的,只是使用不同的卷积层来调整特征映射的大小。在GridDehazeNet中,除了预处理模块中的第一个卷积层和每个残差密集block中的1×1卷积层外,所有卷积层都使用ReLU作为激活函数。为了在输出大小和计算复杂度之间取得平衡,我们将三种不同尺度的特征映射的数量分别设置为16、32和64。

        由骨干模块的输出直接构造的去雾图像容易包含伪影。因此,我们引入了后处理模块来提高去雾图像的质量。后处理模块与预处理模块的结构是对称的。 

3.2  基于通道注意的特征融合

        鉴于来自不同尺度的特征映射可能不具有相同的重要性,我们提出了一种受启发的通道注意机制,以生成可训练的权重用于特征融合。设F^{i}_{r}F^{i}_{c}分别表示行流和列流中的第i个特征通道,设a^{i}_{r}a^{i}_{c}表示它们相关的关注权重。通道型注意机制可以表示为:

        其中\tilde{F}^{i}表示第i通道中的融合特征。注意机制使GridDehazeNet能够灵活调整不同尺度对特征融合的贡献。我们的实验结果表明,只要引入少量可训练的注意力权重,所提出的网络的性能就可以大大提高。

        值得注意的是,可以通过选择合适的注意力权重来修剪(或停用)所提议的GridDehazeNet的一部分,并恢复一些现有的网络作为特殊情况。例如,图3中的红色路径说明了可以通过修剪GridDehazeNet获得的编码器-解码器网络。另一个例子是,从GridDehazeNet中移除交换分支(即主干模块中的中间四列)会导致类似于传统多尺度网络的结构。 

3.3  损失函数 

        为了训练所提出的网络,使用smooth L₁损失和感知损失。Smooth L₁损失提供了去雾图像与真实图像之间差异的定量度量,由于L₁范数可以防止潜在的梯度爆炸,因此与MSE损失相比,它对离群值的敏感性较低。 

Smooth L₁ Loss

        设\hat{J}_{i}(x)表示去雾图像中像素x的第i个颜色通道的强度,N表示总像素数。平滑L Loss可以表示为:

Perceptual Loss

        与逐像素损失不同,感知损失利用从预训练的深度神经网络中提取的多尺度特征来量化估计图像与地面真实之间的视觉差异。在本文中,我们使用在ImageNet上预训练的VGG16作为损失网络,从前三个阶段(即Conv1-2、Conv2-2和Conv3-3)的最后一层提取特征。感知损失定义为:

        式中,\phi _{j}(\hat{J})(\phi_{j} (J)), j = 1,2,3,表示与去雾图像\hat{J}(ground truth J)相关联的上述三个VGG16特征映射,C_{j}, H_{j}W_{j}表示\phi _{j}(\hat{J})(\phi_{j} (J))的维数,j = 1,2,3。

Total Loss

        将smooth L Loss和感知Loss结合定义Total Loss,定义如下: 

        其中λ是用于调整两个Loss分量的相对权重的参数。本文λ设为0.04。

4  Experimental Results 

        我们进行了大量的实验,以证明所提出的GridDehazeNet在合成和现实世界数据集的定量除雾结果和定性视觉效果方面优于最先进的技术。实验结果也为GridDehazeNet的组成模块提供了有用的见解,并为总体设计提供了坚实的依据。更多的例子可以在补充材料中找到,源代码将公开提供。

4.1  训练和测试数据集

        一般来说,收集大量真实世界的朦胧图像及其无雾图像是不切实际的。因此,数据驱动的除雾方法往往需要依赖于合成雾霾图像,而合成雾霾图像可以基于大气散射模型,通过适当选择散射系数\beta和大气光强A,从清晰图像中生成。本文采用大规模合成数据集"RESIDE",对所提出的GridDehazeNet进行训练和测试。RESIDE包含室内和室外场景的合成朦胧图像。RESIDE的室内训练集共包含13990幅朦胧室内图像,由1399幅清晰图像生成,其中β∈[0.6,1.8],a∈[0.7,1.0];深度图d(x)来自NYU Depth V2和Middlebury Stereo数据集。经过数据清洗后,由8477幅清晰图像生成的户外模糊图像(OTS)共包含296695幅,其中β∈[0.04,0.2],a∈[0.8,1.0];使用中开发的算法估计室外图像的深度图。测试采用合成目标测试集(SOTS),该集由500幅室内朦胧图像和500幅室外朦胧图像组成。此外,为了对真实图像进行比较,我们使用了中的数据集。

4.2  实现

        提出的GridDehazeNet是端到端可训练的,无需对子模块进行预训练。我们使用大小为240×240的RGB图像patch来训练网络。对于加速训练,使用Adam优化器,批大小为24,其中β1和β2分别采用默认值0.9和0.999。在之后,我们不使用批归一化。初始学习率设置为0.001。对于ITS,我们总共训练了100个epoch,每20个epoch学习率降低一半。
对于OTS,网络只训练10个epoch,每2个epoch学习率降低一半。训练是在两台NVIDIA GeForce GTX 1080Ti的PC上进行的,但只有一个GPU用于测试。当训练结束时,ITS和OTS的损失函数分别下降到0.0005和0.0004,我们认为这是一个很好的收敛迹象。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1970791.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Go语言---linux下安装golang protoc详细教程以及完整安装protoc-gen-go工具

在[分布式网络通讯框架]----Protobuf安装配置–附带每一步截图中,我们详细介绍了Protobuf是什么,为什么要使用Protobuf,以及在linux环境中,如何安装Protobuf。Protobuf 在 .proto 定义需要处理的结构化数据,可以通过 p…

Surya - OCR、布局分析、阅读顺序、语言检测

文章目录 一、关于 Surya功能特性例子训练托管API商业用途 二、安装手动安装 三、用法1、交互应用2、OCR(文本识别)来自 python编译 3、文本行检测From python 4、布局分析From python 5、阅读顺序From python 四、限制五、故障排除六、基准测试OCRGoogl…

react引入高德地图并初始化卫星地图

react引入高德地图并初始化卫星地图 1.安装依赖 yarn add react-amap amap/amap-jsapi-loader2.初始化地图 import AMapLoader from "amap/amap-jsapi-loader"; import { FC, useEffect, useRef, useState } from "react";const HomeRight () > {con…

高速总线概述(二):高速总线技术要点(比特流高速数据传输,编、解码、CRC校验及扰码结构,链路同步)

前言: 读 嵌入式高速串行总线技术 基于FPGA实现与应用_张峰 记 高速串行总线技术技术点 高速串行总线技术点 (1)采用串行比特流实现高速数据传输,数据以帧格式进行传输,以帧头(SOF)、…

串口调试可能遇见的常见问题和排查方法

串口UART作为嵌入式应用和通讯领域中最常用的接口之一,接口协议虽然简单,但在实际应 用中不同设备之间的通讯也会存在各种小问题,下面对使用中各种常见的问题做下总结和梳 理,可作为调试参考。 01串口通信常见问题 串口通信乱码…

嵌入式多线程

作业一&#xff1a; 使用两个线程完成两个文件的拷贝&#xff0c;分支线程1拷贝前一半&#xff0c;分支线程2拷贝后一半&#xff0c;主线程回收两个分支线程的资源 #include <myhead.h> #define BUF_SIZE 10 //定义缓冲区大小typedef struct{char* sfile;char* tfile…

springboot系列教程(三十一):springboot整合Nacos组件,环境搭建和入门案例详解

一、Nacos基础简介 1、概念简介 Nacos 是构建以“服务”为中心的现代应用架构&#xff0c;如微服务范式、云原生范式等服务基础设施。聚焦于发现、配置和管理微服务。Nacos提供一组简单易用的特性集&#xff0c;帮助开发者快速实现动态服务发现、服务配置、服务元数据及流量管…

MySQL高阶(九)——窗口函数

文章目录 MySQL高阶(九)——窗口函数特点语法结构窗口函数分类准备数据 序号函数聚合函数分布函数CUME_DIST&#xff08;累计分布值&#xff09;PERCENT_RANK &#xff08;等级值&#xff09; 前后函数LAG函数LEAD函数 头尾函数FIRST_VALUE和LAST_VALUENTH_VALUE(expr, n&#…

贪心(区间)

905. 区间选点 - AcWing题库 #include<bits/stdc.h> using namespace std; const int N1e510;struct Range {int l,r;bool operator <(const Range&m)const{return r<m.r;} }range[N];int main() {int n;cin>>n;for(int i0;i<n;i){cin>>range[…

汉诺塔(C++)

解决汉诺塔问题是程序递归思想最基本的体现&#xff0c;问题以及规则如下&#xff1a; 汉诺塔&#xff08;Tower of Hanoi&#xff09;&#xff0c;又称河内塔&#xff0c;是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子&#xff0c;在一根柱子上…

测评自养号与机刷:电商平台推广的深度解析与区别探讨

在电商平台上&#xff0c;产品和店铺的评价至关重要&#xff0c;许多买家在购买前都会仔细查看评论&#xff0c;比较同类产品的口碑&#xff0c;以便做出明智的选择。今天&#xff0c;我们将探讨测评自养号与机刷之间的区别。 测评一直是各大电商平台常用的推广手段&#xff0c…

心算项目攻略:最大化卡牌得分技巧

目录 题目描述代码逻辑原理总结解析&#xff1a;代码逻辑&#xff1a;示例场景&#xff1a;总结&#xff1a; 题目 选自力扣 心算项目的挑战比赛中&#xff0c;要求选手从 N 张卡牌中选出 cnt 张卡牌&#xff0c;若这 cnt 张卡牌数字总和为偶数&#xff0c;则选手成绩「有效」…

AI绘画工具推荐:Stable Diffusion的新境界

前言 在AI绘画的世界里&#xff0c;Stable Diffusion无疑是一颗璀璨的明星。然而&#xff0c;对于许多用户来说&#xff0c;切换不同的UI界面和管理众多模型是一项挑战。今天&#xff0c;我们为大家介绍一款革命性的工具——Stability Matrix&#xff0c;它将彻底改变你对Stabl…

JavaScript前端面试题——fetch

什么是fetch&#xff1f; fetch&#xff1a;fetch是浏览器内置的api&#xff0c;用于发送网络请求 ajax&axios&fetch的关系 ajax&#xff1a;ajax 是一种基于原生 JavaScript 的异步请求技术。它使用 XMLHttpRequest 对象来发送请求和接收响应。 axios&#xff1a;…

MP4标准格式深度解析

&#x1f60e; 作者介绍&#xff1a;欢迎来到我的主页&#x1f448;&#xff0c;我是程序员行者孙&#xff0c;一个热爱分享技术的制能工人。计算机本硕&#xff0c;人工制能研究生。公众号&#xff1a;AI Sun&#xff08;领取大厂面经等资料&#xff09;&#xff0c;欢迎加我的…

校园选课助手【1】-项目整体架构从此开始

项目背景 随着高校招生规模的不断扩大&#xff0c;学生选课需求日益增长。为提高选课效率&#xff0c;降低学生选课压力&#xff0c;本项目旨在开发一款校园选课助手软件。 项目目标:开发一款具有以下特点的校园选课助手软件&#xff1a; 易用性&#xff1a;界面简洁&#xff…

微信-公众号/订阅号推送消息(js版本)

1.登录或注册微信测试号 &#xff08;测试号的名称由官方自动生成&#xff0c;不能更改&#xff09; 微信测试号入口&#xff1a;微信公众平台 ​ 2.登录进去后会看到自己的appId和appsecret &#xff08;这两个参数都需填入代码中&#xff09; ​ 3.检查是否安装nodeJs…

《刚刚问世》系列初窥篇-Java+Playwright自动化测试-3-启动浏览器(详细教程)

软件测试微信群&#xff1a;https://bbs.csdn.net/topics/618423372 有兴趣的可以扫码加入 1.简介 通过前边两篇文章跟随宏哥学习想必到这里已经将环境搭建好了&#xff0c;今天就在Java项目搭建环境中简单地实践一下&#xff1a; 启动两大浏览器。按市场份额来说&#xff0c…

[极客大挑战 2019]BuyFlag1

这个题目比较常规&#xff0c;算是我遇到的简单题&#xff0c;也是这段时间第一个独立解出的&#xff0c;有点小开心。 首先打开靶机&#xff0c;一个平平无奇的纳新页面&#xff0c;很容易找到 /pay.php 看一下pay.php 这里说了几个条件&#xff1a;需要100000000&#xff0c…

【iOS】copystrong原理+深浅拷贝+完全拷贝

Copy&Strong原理 Copy探究 在回答copy的各种问题前&#xff0c;我们需要先了解我们为什么要使用copy。 拷贝的目的 &#xff1a; 产生一个副本对象&#xff0c;跟源对象互不影响 修改了源对象&#xff0c;不会影响副本对象修改了副本对象&#xff0c;不会影响源对象 iOS…