热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

域适应加雾代码:通过《bringingoldphotosbacktolife》

目录我想说的一些话:摘要引言1相关工作1.1大气散射模型1.2图像加雾1.2.1基于传统方法的雾图合成1.2.2基于深度学习的雾图合成1.2.3图像处理

目录

        我想说的一些话:

摘要

引言

1相关工作

1.1大气散射模型

 1.2图像加雾

1.2.1基于传统方法的雾图合成

1.2.2基于深度学习的雾图合成

1.2.3图像处理软件加雾

2.方法

2.1图像到图像的翻译

2.2变分自编码器

2.3 域适应雾图合成

3.实验

4结论

附录:开源代码和姊妹文章(去雾)



我想说的一些话:

在研究去雾的过程中,发现数据集问题是一个比较棘手的问题,于是顺手做了一下数据加雾的任务,思路很简单,把去雾的输入输出反过来训练,一般的模型都可以做到加雾任务,有时改动极少的一些中间代码即可。我将其总结之后视作水文进行了发表,由于操之过急且未重视,文章中难免有些错误,如公式序号、画图粗糙等问题,但是无伤大雅,希望能给大家带来一些思路或者灵感。

代码我放在百度云中,论文的部分核心中文版我放在此博客中,英文发表的全文我放在百度云中。其中一些含有公式等,为了节省时间,我进行截图替代,造成不便多多谅解!中文版为较早写的草稿,以英文版为准。见附录

下面开始正文。





摘要

数据集问题一直以来制约着深度学习去雾的发展,因为受到环境和设备等因素,有雾和无雾的图像对极难获得。为缓解该问题,本文提出一种新的基于域适应的雾霾场景生成算法,利用变分自编码器将合成雾图对和真实雾图编码到潜空间,合成雾图直接指导模型学习清晰图像到有雾图像的转换,真实雾图则通过对抗损失用于校正模型的编码潜空间,尽可能使解码出的雾图接近真实雾图。通过对模型的加雾结果与加雾软件、传统通过大气模型等方式进行对比,本文生成的雾图更加逼真;使用传统方法对合成雾图进行去雾,SSIM和PSNR均有所提升,说明生成雾图的合理性;通过一些无参照雾浓度评测算法也证明本文加雾结果的有效性。

引言

去雾一直以来是计算机视觉中的重要任务,但是人们通常只关注如何去雾,而很少关注如何合成雾和如何合成更真实的雾。这在深度学习快速发展的今天更加重要,拥有大量高质量的数据能够使模型表现更好,然而深度学习去雾中数据集大多是人工合成的。这些合成的数据集不能完全模拟出真实世界中的雾,因此,使用此类数据集的深度学去雾模型难以在真实雾图上表现良好。 目前,雾图合成主要有两种方法。一是基于大气模型[9,10]合成,首先测量或者估计出图像对应的深度图,利用大气模型合成雾图[27,29]。由于深度图难免存在误差,且大气模型难以完全模拟真实环境,因此合成的雾图有一定的缺陷。二是基于深度学习的加雾算法,利用成对数据训练模型,可实现端到端的合成雾图。由于基于深度学习的方法同样需要训练数据,因此合成的雾图和真实雾图也有一定的偏差。三是一些其他的方法,如软件合成,渲染等。 为缓解以上问题,本文提出域适应雾图合成算法。该算法基于变分自编码器和生成对抗网络,通过生成对抗损失将合成雾图向真实雾图进行域适应,从而以端到端的方式生成更加逼真的雾图。 本文的主要贡献包括以下方面: (1)提出一种新的域适应雾图合成算法,产生较为真实的雾图 (2)提出使用生成对抗损失将合成雾图域向真实雾图特征进行域适应。

1相关工作


1.1大气散射模型

 1.2图像加雾


1.2.1基于传统方法的雾图合成

传统方法的雾图合成,主要通过公式(1)和公式(3),加雾流程如图(3)所示。室内雾图合成可用的数据集有Middlebury Stereo[36-40]、NYUv2数据集等,后者源数据是通过Microsoft Kinect获取的,经过对深度缺失值的填充以及标记等后处理的图片有1499张,通常这些数据可以用来进行深度估计、语义分割等任务。室外雾图合成可用的数据有HAZERD数据集,以及Cityscapes[41]、KITTI [ 42]

Fig . 3 Haze image generation based on traditional method.

3 基于传统方法的雾图生成

基于传统方式的雾图生成,通过读取深度图和原始清晰图像在线合成雾化图像.

1.2.2基于深度学习的雾图合成

生成对抗网络GAN [18]在提出后,受到广泛的关注,并可用来进行雾图合成。经典的图像翻译模型pix2pix[1]模型由多分辨率生成器,多尺度判别器构成:判别器能够对生成结果进行多尺度判别,判别器使用Patch GAN结构,最终结果为其输出的判别矩阵的平均,生成器的基础结构则是U-Net[21],能够生成高分辨率和清晰的结果;但是该方法是监督学习,若用来进行加雾,则能利用的数据就是人工合成的雾图对,其训练出来的结果和真实雾图也会有一定的差异. 著名的非监督图像转换方法Cycle-GAN[4]经提出后,为不成对数据训练提供了一个有效的损失函数循环一致性损失,通过该损失,可以利用真实雾图进行加雾, 利用GAN加雾的算法通常增加额外损失[1, 23,25,26] , 增加了需要调节的超参数和训练的难度.另外GAN模型通常需要更多的数据进行训练,数据的质量对模型的训练效果有很大影响. 无监督方式主要利用循环一致性损失,无绝对映射的训练方式会使产生的结果出现非期望转换风格,有监督加雾模型又陷入雾图对的问题,利用合成雾图会导致加雾结果不真实。

1.2.3图像处理软件加雾

Adobe lightroom 中含有一个去朦胧功能,可以将图片清晰化,当将其值调为负时,则会产生雾的效果。本文中通过此软件的去朦胧功能对图片进行加雾,用于对照实验.

2.方法


2.1图像到图像的翻译

图像到图像的翻译[1,2]是指通过学习将图像从一个域映射到另一个域. 监督学习的图像翻译需要成对数据集,对应的图像翻译算法有pix2pix[1]模型,pix2pixHD[2]模型等.非监督学习的图像翻译[3,4]不需要成对数据集,数据的收集变得简单。 图像翻译需要学习不同域图像的联合分布.在无监督环境中,数据由来自两个不同域中的两个边缘分布组成,从边缘分布推断联合分布是一个高度不适定问题,需要在联合分布的基础上加入额外的假设,如共享潜空间假设[3]、循环一致性损失[4]等. 如文献[4]中提出的Cycle- GAN模型,解决了数据不匹配问题,文献[3]中提出了基于生成对抗网络和变分自编码器的UNIT框架,从共享潜空间角度对每个域使用VAE-GAN进行建模,进行两域之间样本的学习.

2.2变分自编码器

变分自编码器(VAE)从变分和贝叶斯理论出发,期望编码向量的后验分布尽量接近多元正态分布,本质是在常规自编码器的基础上,对编码的结果加上了“高斯噪声”,使得解码器能够对噪声有鲁棒性,利于解码结果多样化;同时,使用KL散度损失约束编码结果的分布靠近正态分布,相当于对编码器施加正则项,如图所示2. 图像重建时,从潜空间进行采样操作不可导,无法进行梯度下降.假设数据映射到多元正态分布 ,

Fig4. Hybrid samples learning network structure diagram based on latent space translation.

 4基于潜空间翻译的混合样本学习网络结构图

2.3 域适应雾图合成

3.实验

一些结果如下图所示

  5 Adobe lightroom和我们的方法与SOTS测试集中部分数据的的定性比较

      

 

 图8 我们的方法加不同浓度雾的结果,通过对重复使用本文方法进行加雾

4结论

本文通过一种域适应学习问题,给出了一种基于潜空间翻译的混合样本学习算法,并将其用于图像加雾,验证了该算法的有效性.

更新(使用方法,和云盘中加入权重,和压缩包):

依赖库:

一般情况下直接安装如图所示即可。

 


附录:开源代码和姊妹文章(去雾)



代码:

链接: https://pan.baidu.com/s/1ruZeQhuxLBBoMza2FNsmxg 提取码: uxmn 复制这段内容后打开百度网盘手机App,操作更方便哦

对应的英文论文:

链接: https://pan.baidu.com/s/1BNHKhHDxbhWm4of4tygZxA 提取码: q278 复制这段内容后打开百度网盘手机App,操作更方便哦

姊妹博客:

图像去雾,利用《bringing old photos back to life》 的开源代码_Alocus的博客-CSDN博客

图像去雾,利用《bringing old photos back to life》 训练并修改_Alocus的博客-CSDN博客

完善后的根据深度图加雾代码Python_Alocus的博客-CSDN博客


推荐阅读
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • 本文介绍了Python语言程序设计中文件和数据格式化的操作,包括使用np.savetext保存文本文件,对文本文件和二进制文件进行统一的操作步骤,以及使用Numpy模块进行数据可视化编程的指南。同时还提供了一些关于Python的测试题。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 无损压缩算法专题——LZSS算法实现
    本文介绍了基于无损压缩算法专题的LZSS算法实现。通过Python和C两种语言的代码实现了对任意文件的压缩和解压功能。详细介绍了LZSS算法的原理和实现过程,以及代码中的注释。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了在Python张量流中使用make_merged_spec()方法合并设备规格对象的方法和语法,以及参数和返回值的说明,并提供了一个示例代码。 ... [详细]
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • 本文由编程笔记#小编整理,主要介绍了关于数论相关的知识,包括数论的算法和百度百科的链接。文章还介绍了欧几里得算法、辗转相除法、gcd、lcm和扩展欧几里得算法的使用方法。此外,文章还提到了数论在求解不定方程、模线性方程和乘法逆元方面的应用。摘要长度:184字。 ... [详细]
  • 本文介绍了Android中的assets目录和raw目录的共同点和区别,包括获取资源的方法、目录结构的限制以及列出资源的能力。同时,还解释了raw目录中资源文件生成的ID,并说明了这些目录的使用方法。 ... [详细]
  • 统一知识图谱学习和建议:更好地理解用户偏好
    本文介绍了一种将知识图谱纳入推荐系统的方法,以提高推荐的准确性和可解释性。与现有方法不同的是,本方法考虑了知识图谱的不完整性,并在知识图谱中传输关系信息,以更好地理解用户的偏好。通过大量实验,验证了本方法在推荐任务和知识图谱完成任务上的优势。 ... [详细]
author-avatar
心上锁退
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有