雪花去噪算法学习记录(一)之基础知识

news2024/11/23 19:05:01

在进行实验过程中,需要完成对雪天图像的处理,其中一个主要操作为去雪。相较于去雾,去雨模型,去雪模型相对较少,因此在研究时所能够借鉴的资料有限,这对我们的研究造成了一定困扰。

模型算法

DesnowNet网络模型(2017)

在深度学习领域中,去雪算法的开山鼻祖为DesnowNet,后续去雪算法也大多是在这个基础上改进的。进行我们就将围绕DesnowNet模型来学习相关概念。

DesnowNet模型

DesnowNet的结构下图所示,它由半透明度复原模块和残差生成模块两部分组成,这两个模块均由一个描述子和一个复原器组成。描述子都是以 Inception-v4作为骨干设计的子网络,它使用多次空洞卷积来更好地提取尺度不变特征, 最后将各尺度的结果堆叠起来保持每个尺度的属性。对于上述的特征,接下来复原器使用不同感受野大小的卷积层来进行卷积,最后在所有卷积的结果里取最大值来选取最鲁棒的特征。半透明度复原模块最终输出图像雪花掩膜、色差图和初步复原图,这三个变 量通过堆叠形成新的特征作为残差生成模块的输入。

在这里插入图片描述

该特征经过类似的描述符后,将得 到的结果输入到不同感受野大小的卷积层。把不同层的结果相加起来得到初步复原图与 干净图像之间的残差图,将初步复原图与残差图相加便能得到网络最终输出的去雪花结果。

在这里插入图片描述

HDCW-Net(2021)

code
paper
datasets

应对多种复杂天气(2022)

Learning Multiple Adverse Weather Removal via Two-stage Knowledge Learning and Multi-contrastive Regularization: Toward a Unified Model
这篇论文没有针对某一种恶劣天气进行处理,而是将多种恶劣天气同时进行处理。

code
paper

当前针对恶劣天气的影像复原算法虽然已经发展多年并且已经成熟,但是有着许多的限制:

  1. 单张影像还原(Single Weather Removal) :
    虽然能够在单种气候下获得良好的效果,但是对于其他天气而言效果相当有限,因为所设计的架构大多数是针对某种气候的特征去设计,不利于真实世界的应用。
  2. 多重天气还原(Multi-degradation removal) :可以使用同一种架构去针对不同还原任务去做训练,但是一种还原就要训练一组参数,并且必须事先分辨是哪一种还原任务。
  3. 多合一天气还原 (All-in-one Bad Weather Removal) [4]: 虽然使用Neural architecture search运用一个编码器搜索特征,能够实现一组预训练模型解决所有的天气,但是一种天气就需要一种译码器,对于模型有着大小的不便性。

对于真实世界而言影像还原模型需要能够在不增加运算需求以及模型大小的情况下扩充还原的型态,并且同时有着良好的性能,本篇文章针对这个问题,基于知识蒸馏(Knowledge Distillation)提出了一个新颖的算法,能够在不增加运算资源的情况下在多种天气下达到相当好的性能。

此外,这个团队在过去对于影像还原有许多发表:

  • 单张影像去雪:[JSTASR] (ECCV’20) 、 [HDCW-Net] (ICCV’21)
  • 单张影像去雾:[PMS-Net] (CVPR’19) and [PMHLD] (TIP’20)
  • 单张影像去雨:[ContouletNet] (BMVC’21)

在这里插入图片描述

数据集

常见去雪数据集有:

评价指标

MSE与PSNR

用于衡量一张干净图片与一张有噪声图片间的差异。当两张图片差异越小,意味着噪声越小,即MSE越小,那么信噪比PSNR就越大,也就意味着图像质量越好。

给定一个大小为mxn的干净图像I和噪声图像K,均方误差(MSE)定义为:

在这里插入图片描述

PSNR (Peak Signal-to-Noise Ratio) 峰值信噪比

然后PSNR(dB)就定义为:

在这里插入图片描述

其中MAX为图片可能的最大像素值。如果每个像素都由 8 位二进制来表示,那么就为 255。通常,如果像素值由B位二进制来表示,那么:

在这里插入图片描述

一般地,针对 uint8 数据,最大像素值为 255,;针对浮点型数据,最大像素值为 1。

上面是针对灰度图像的计算方法,如果是彩色图像,通常有三种方法来计算。

  • 分别计算 RGB 三个通道的 PSNR,然后取平均值。
  • 计算 RGB 三通道的 MSE ,然后再除以 3 。
  • 将图片转化为 YCbCr 格式,然后只计算 Y 分量也就是亮度分量的 PSNR

其中,第二和第三种方法比较常见。

# im1 和 im2 都为灰度图像,uint8 类型

# method 1
diff = im1 - im2
mse = np.mean(np.square(diff))
psnr = 10 * np.log10(255 * 255 / mse)
# method 2
psnr = skimage.measure.compare_psnr(im1, im2, 255)

SSIM(Structure Similarity Index Measure)

衡量两张图片的相似性,也可用于衡量图片的失真程度。如下,在MSE相同的情况下,SSIM不同差别则很大。

在这里插入图片描述

结构相似指标可以衡量图片的失真程度,也可以衡量两张图片的相似程度。与MSE和PSNR衡量绝对误差不同,SSIM是感知模型,即更符合人眼的直观感受。
SSIM 主要考量图片的三个关键特征:
亮度(Luminance):指所有像素值灰度的平均值。
对比度(Contrast),
结构 (Structure)

在这里插入图片描述
在这里插入图片描述

则有:
在这里插入图片描述

在这里插入图片描述

每次计算的时候都从图片上取一个NxN的窗口,然后不断滑动窗口进行计算,最后取平均值作为全局的 SSIM。
其取值范围为【-1,1】,具有边界性,唯一最大性。

# im1 和 im2 都为灰度图像,uint8 类型
ssim = skimage.measure.compare_ssim(im1, im2, data_range=255)

针对超光谱图像,我们需要针对不同波段分别计算 SSIM,然后取平均值,这个指标称为 MSSIM。

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

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

相关文章

[VPN]华为SecoClient客户端Linux使用

准备 安装环境:CentOS 下载安装包: # wget http://www.corem.com.cn/sites/default/files/tools/secoclient/secoclient-linux-64-7.0.2.26.run 安装 在root用户下,执行: # chmod x secoclient-linux-64-7.0.2.26.run # ./secoc…

瞎搞!你真的懂什么是ERP、中台、低代码吗?

企业数字化领域从来都不缺新概念 从制造资源计划到中台,企业MRP报表数字还没对齐,就要忙着“去烟囱”化; 从中台到低代码,企业“数据孤岛”还没打通,又要忙着“赋能数字化能力”给业务人员了。 这一来二去,…

已有仓库,上传代码,如果你是先写代码,想上传git上你可以这样操作

已有仓库,上传代码,如果你是先写代码,想上传git上你可以这样操作 第一步:初始化 git git init 第二步:添加文件 git add * 第三步:提交文件 git commit -m "完整项目可直接下载使用" 第四步:配置…

【MySql】MySql索引的操作

文章目录 索引结构问题聚簇索引与非聚簇索引索引操作创建主键索引唯一索引创建普通索引创建全文索引创建删除索引查询索引索引创建原则 索引结构问题 InnoDB 在建立索引结构来管理数据的时候,其他数据结构为何不行 链表:线性遍历,在效率上是不合适的 二叉搜索树&am…

如何用Jmeter提取和引用Token

1.执行获取token接口 在结果树这里,使用$符号提取token值。 $根节点,$.data.token表示提取根节点下的data节点下的token节点的值。 2.使用json提取器,提取token 变量路径就是把在结果树提取的路径写上。 3.使用BeanShell取样器或者BeanShell后…

在 Navicat Premium 中管理 MySQL 用户 | 第 2 部分:创建新用户

第 2 部分:创建新用户 第 2 部分:创建新用户 第 1 部分 中,我们学习了如何使用 Navicat Premium 用户管理工具保护 MySQL 的 root 帐号。本篇文章将集中介绍如何设置新用户的帐号详细信息、帐号限制和 SSL 设置。如果你想边学边用&#xff1…

做好用户体验设计 关键看5个方面

用户来了就走,用户吐槽不好用,用户留不住,好的功能没人用,这到底是怎么回事?问题关键在于好的用户体验设计,而做好用户体验设计,关键看5个方面: 1、是否有用 我们需要考量产品。对用…

如何用数字人技术让课堂活起来?番职院和3DCAT实时云渲染给出答案

2023年4月20日,广州市第二届智慧教育成果巡展活动在番禺职业技术学院(下文简称番职院)举行,本次活动的主题是智能AI助教—让课堂活起来。 活动现场,瑞云科技受邀展示了其自主研发的瑞云数字人课堂互动教学解决方案。数…

实时监控Active Directory用户登录操作

用户登录到其域计算机是任何企业中发生的日常活动。一开始,这可能看起来是一个简单的Active Directory事件,但分配了不同角色的管理员可以将这些有价值的数据用于各种审计,合规性和运营需求。组织需要审核“AD 用户登录日志”的详细信息&…

JavaWeb学习路线(5)——MyBatis

准备工作:JDBC 概念: JDBC(Java DataBase Connectivity),就是使用Java语言操作关系型数据库的一套API。JDBC使用数据库的五大步骤 //步骤一:注册驱动 Class.forName("com.mysql.cj.jdbc.Driver"…

手机App弹窗的常用测试点

手机App弹窗是目前流行的一种内容展示形式,根据内容性质可以划分为消息、通知、广告、营销等等,展现形式也比较多变,刚上手测试特容易手忙脚乱,为了帮助新人能够快速入门,笔者在此将弹窗常见的测试点一一进行罗列&…

「网络编程」第二讲:网络编程socket套接字(三)_ 简单TCP网络通信程序的实现

「前言」文章是关于网络编程的socket套接字方面的,上一篇是网络编程socket套接字(二),下面开始讲解! 「归属专栏」网络编程 「笔者」枫叶先生(fy) 「座右铭」前行路上修真我 「枫叶先生有点文青病」「每篇一句」 I do…

maven-mvnd搞起来

maven-mvnd是Apache Maven团队借鉴了Gradle和Takari的优点,衍生出来的更快的构建工具,maven的强化版! maven-mvnd 在设计上,使用一个或多个守护进程来构建服务,以此来达到并行的目的!同时,mave…

FreeRTOS 创建任务

例子:创建一个任务,并在任务里面翻转LED 灯 1. 函数原型 BaseType_t xTaskCreate(TaskFunction_t pxTaskCode,const char * const pcName,const uint16_t usStackDepth,void * const pvParameters,UBaseType_t uxPriority,TaskHandle_t * const pxCreat…

STM32的定时器详解(嵌入式学习)

STM32的定时器详解 0. 前言1. Systick定时器概念工作原理时钟基准Systick练习 2. HAL_Delay函数分析3. 定时器基本概念定时器分类定时器组成计数器自动重装寄存器预分频器 定时器计数原理定时器练习 4. 软件定时器概念设计思想代码 0. 前言 想要了解STM32的时钟系统 点击这里跳…

【数据分享】1929-2022年全球站点的逐日平均风速数据(Shp\Excel\12000个站点)

气象数据是在各项研究中都经常使用的数据,气象指标包括气温、风速、降水、能见度等指标,说到气象数据,最详细的气象数据是具体到气象监测站点的数据! 对于具体到监测站点的气象数据,之前我们分享过1929-2022年全球气象…

考上了!成为图技术大师的第一步!

好消息!! 自创邻科技GBCA课程开设以来 截至6月20日 已有近20名学员通过考试 获得GBCA认证证书! 距离成为图技术认证专家 跨出关键一步! 前不久,创邻科技为了让更多图技术爱好者能够快速了解、上手图数据库&#xff0c…

【一些随笔】艰难存折,恨不睡觉:大话年轻人的钱包囧境与梦想退休

一些随笔 1️⃣ 存钱难吗?难!它难在哪?2️⃣ 关于年轻人如何攒钱理财的一点建议3️⃣ 关于裸辞的一些经验及看法4️⃣ 谁又不想攒够钱了提前退休呢?但要存够多少呢? 1️⃣ 存钱难吗?难!它难在哪…

【HISI IC萌新虚拟项目】ppu模块基于spyglass的lint清理环境搭建与lint清理

关于整个虚拟项目,请参考: 【HISI IC萌新虚拟项目】Package Process Unit项目全流程目录_尼德兰的喵的博客-CSDN博客 前言 RTL代码在交付给验证同时进行功能验证时,可以同步进行lint的清理工作。一般而言影响编译和仿真的问题会在vcs的error和warning中被修正,因此清理lin…

[RocketMQ] Broker启动流程源码解析 (二)

文章目录 1.Brocker介绍2.BrokerStartup启动入口3.createBrokerController创建BrokerController3.1 创建各种配置类3.2 创建broker控制器3.3 初始化broker控制器3.3.1 加载配置文件3.3.2 创建消息存储对象MessageStore3.3.3 Load加载恢复消息文件3.3.4 初始化Broker通信层3.3.5…