图像去模糊:MSSNet 模型详解

news2024/12/27 12:07:27

  本内容主要介绍实现单图像去模糊的 MSSNet 模型

论文:MSSNet: Multi-Scale-Stage Network for Single Image Deblurring

代码(官方):https://github.com/kky7/MSSNet


1. 背景

  单图像去模糊旨在从模糊图像(由相机抖动或被拍摄物体运动引起的模糊)中恢复一张清晰的图像。由于图像模糊会严重降低图像质量和其他任务(如物体检测)的性能,过去几十年来,图像去模糊已经被广泛研究。

  在深度学习之前,大部分经典的单图像去模糊方法通过交替优化方式来估计模糊核(模糊核描述了图像是如何被模糊的)和潜在的清晰图像。为了高效并准确估计模糊核和潜在清晰图像,这些经典方法广泛采用了从粗到细方案。从粗到细方案:首先在粗尺度估计一个小的模糊核和清晰图像,然后将它们作为下一尺度的初始解。在粗尺度的小尺寸的图像和模糊使得能够快速估计。此外,粗尺度的小模糊尺寸使得能够更准确估计模糊核和潜在图像。因此,从粗到细方案能够快速为下一个尺度提供准确的初始解,并提高去模糊的质量和效率。

  深度学习出现后,成功将深度学习应用到了单图像去模糊领域。基于深度学习的单图像去模糊模型可以分为两大类:

  • 沿用传统去模糊模型的方案,首先使用 CNN 网络估计模糊核,然后使用模糊核得到清晰图像。
  • 使用深度学习网络以端到端的方式直接从模糊图像恢复得到清晰图像,不需要估计模糊核。

  同时,使用深度学习网络直接模糊图像恢复得到清晰图像的模型又可以分为两类:

  • 多尺度方法,例如 DeepDeblur、SRN 和 PSS-NSC 等模型。由于从粗到细方案的有效性,这类模型基本都采用从粗到细方案。它们通常采用多尺度神经网络架构,将不同尺度的子网络堆叠在一起,首先估计小尺度的潜在清晰图像,然后使用小尺度的潜在清晰图像作为指导估计大尺度的潜在清晰图像。不管是否估计模糊核,使用从粗到细方案的动机都是一样的,即 由于在粗尺度上图像和模糊尺寸很小,因此可以更有效准确地估计去模糊图像

  • 单尺度方法,例如 DMPHN、MT-RNN、MPRNet、HINet 等模型。与多尺度的主要区别在于,其只会接收一种尺度的模糊图像作为输入。

  单尺度方法的作者们指出以前多尺度方案计算耗时,以及粗尺度的结果对最终去模糊质量的贡献比较低。并且这些单尺度方法在质量和计算耗时上都超越了以前的多尺度方法,使得传统的从粗到细方案看起来似乎过时了。

  基于这种情况,作者通过重新审视从粗到细方案,分析了以前从粗到细方法的缺陷,这些缺陷降低了模型性能。然后为了解决这些缺陷,提出了 MSSNet(Multi-Scale-Stage Network,多尺度多阶段网络)。接下来我们一起看看作者是如何一步步提出 MSSNet 网络的。

2. 以前从粗到细方法的分析

  我们先来了解一下以前从粗到细方法实现单图像去模糊的流程。图 1.1 展示了以前从粗到细方法的网络架构。其中 SRN 在相邻的尺度子网络之间还存在额外的循环连接(这些额外连接可以获得额外的性能增益),在图中没有体现。以前的从粗到细方法基本上采用相同的去模糊流程,详细步骤如下:

  1. 首先,通过对输入的模糊图像进行下采样,从而构建一个图像金字塔。
  2. 然后,从最粗尺度开始,从下采样的模糊图像估计出一张去模糊图像,对估计出的去模糊图像进行上采样,并将其输入到下一尺度的子网络中。
  3. 最后,下一尺度的子网络利用上一尺度的去模糊图像作为指导,从当前尺度的模糊图像中估计出一张去模糊图像。
图 1.1 以前从粗到细方法的网络架构

  通过对这些方法所采用的的网络架构进行分析,作者发现这些网络架构存在如下三个缺陷:

  • 无视模糊尺度的网络架构。在对图像去模糊时,为了恢复具体像素的像素值,需要比模糊尺寸更大的感受野。因此,更大的模糊尺寸需要更大的感受野或者更深的网络。同样地,从粗到细方法中更细的尺度需要更深的子网络。而以前的从粗到细的模型,在不同尺度中采用相同的网络架构。
  • 低效的跨尺度信息传播。以前的从粗到细的方法将去模糊图像的像素值从粗尺度传递到下一个尺度。这导致在粗尺度的特征向量中编码的丰富信息出现显著损失,并最终降低去模糊的性能。
  • 下采样导致的信息损失。在生成多尺度的输入模糊图像时,以前的方法都是通过对输入的模糊图像进行反复下采样来构建图像金字塔。但是下采样会导致严重的信息损失。

3. 模型设计

3.1 网络架构

  基于前面对以前从粗到细方法的分析,为了解决这些缺陷,作者提出了 MSSNet 网络,一种新的基于深度学习的单图像去模糊方法,它采用了从粗到细方案。图 1.2 展示了 MSSNet 的网络架构。和以前的从粗到细方法一样,MSSNet 由三个尺度组成,从粗到细,分别表示为 S 1 S_1 S1 S 2 S_2 S2 S 3 S_3 S3。MSSNet 会预测一张残差图像 R R R,然后与模糊图像 B B B 相加从而得到一张去模糊图像 L = B + R L = B+R L=B+R

图 1.2 MSSNet 的网络架构

  为了解决前面分析的以前从粗到细方法的缺陷,MSSNet 采用了三种策略:

  • 反映模糊尺度的阶段配置。
  • 一种跨尺度的信息传播方案。
  • 一种基于 Pixel-Shuffle 的多尺度方案。

  接下来,我们详细了解一下每种策略的具体实现。

3.1.1 反映模糊尺度的阶段配置

  为了反映模糊尺度,MSSNet 的更细尺度的子网络拥有更深的网络架构。具体的实现如下:

  • MSSNet 的 S 1 S_1 S1 S 2 S_2 S2 S 3 S_3 S3 分别有 1、2 和 3 个阶段(stage)网络,每个阶段网络由单个轻型的 UNet 模块组成。我们使用 U i j U_i^j Uij 表示每个阶段网络,其中 i i i j j j 分别表示尺度(scale)和阶段(stage)的索引。
  • 每个 UNet 模块享有相同的网络架构,但是拥有不用的权重。
  • 每个 UNet 模块都可以生成残差特征,这些残差特征可以转换为残差图像,将残差图像与模糊图像相加可以得到一张去模糊图像。

3.1.2 一种跨尺度的信息传输方案

  以前的多尺度网络将上采样的去模糊图像从粗到细传递到下一尺度;而 MSSNet 则传递上采样的残差特征,以促进尺度之间的有效信息传播。具体的实现如下:

  • 首先,对粗尺度网络输出的残差特征,依次进行双线性上采样和 1 x 1 的卷积操作。
  • 然后,将上面的输出与从细尺度模糊图像提取的特征进行拼接,再连接一个 3 x 3 的卷积操作,从而得到融合后的特征。
  • 最后,将上面得到的融合特征送入后续的 UNet 网络中。

3.1.3 一种基于 Pixel-Shuffle 的多尺度方案

  在生成尺度输入模糊图像时,为了避免因下采样导致的信息丢失,作者提出了一种基于 Pixel-Shuffle 的多尺度方案。我们先设定模糊图像 B B B 的尺寸为 W × H × 3 W \times H \times 3 W×H×3,对 B B B 进行下采样得到 B 2 B_2 B2,其尺寸为 W / 2 × H / 2 × 3 W/2 \times H/2 \times 3 W/2×H/2×3。具体的实现如下:

  • 对于最细尺度 S 3 S_3 S3,使用模糊图像 B 3 = B B_3 = B B3=B 作为输入。
  • 对于 S 2 S_2 S2,对模糊图像 B B B 进行 unshuffle 操作,从而得到 4 张尺寸为 W / 2 × H / 2 × 3 W/2 \times H/2 \times 3 W/2×H/2×3 的图像。然后,沿着通道方法堆叠这 4 张图像,从而得到一个张量 X 2 X_2 X2,其尺寸为 W / 2 × H / 2 × 12 W/2 \times H/2 \times 12 W/2×H/2×12,将其作为 S 2 S_2 S2 的输入。我们可以看到 X 2 X_2 X2 B 2 B_2 B2 有相同的空间尺寸(即 W / 2 × H / 2 W/2 \times H/2 W/2×H/2),但是却拥有和 B 3 B_3 B3 相同的信息。正是由于 X 2 X_2 X2 拥有更丰富的信息,从而让 S 2 S_2 S2 能够生成更准确的结果。
  • 对于最粗尺度 S 1 S_1 S1,对 B 2 B_2 B2 进行相同的 unshuffle 处理操作,从而得到尺寸为 W / 4 × H / 4 × 12 W/4 \times H/4 \times 12 W/4×H/4×12 的张量 X 1 X_1 X1,将其作为 S 1 S_1 S1 的输入。大家可以会好奇为什不直接对 B B B 进行 unshuffle 操作,得到尺寸为 W / 4 × H / 4 × 48 W/4 \times H/4 \times 48 W/4×H/4×48 的张量作为输入。其实作者也有测试这种方案,但是发现这种方案会造成轻微的性能损失。

3.1.4 跨阶段和跨尺度的特征融合

  MSSNet 采用了跨阶段的特征融合方案。具体地,跨阶段的特征融合方案是指在相邻阶段之间提供额外连接(图 1.2 中粉红色虚线),以促进相邻阶段之间进行更有效的信息传播。图 1.3(a)展示了跨阶段的特征融合方案。

  另外,MSSNet 也采用了跨尺度的特征融合方案。同样地,其在相邻尺度之间提供额外连接(图 1.2 中绿色虚线),以促进相邻尺度之间进行更有效的信息传播。图 1.3(b)展示了跨阶段的特征融合方案。

图 1.3 跨阶段和跨尺度的特征融合方案

总结:由于每种策略都简单明了,从而决定了 MSSNet 是一种简单的架构网络。尽管 MSSNet 网络架构简单,但是作者通过实验证明,在当时 MSSNet 在模型性能、网络规模和计算耗时方面可以达到最优。

3.2 训练和损失函数

  在训练期间,会使用辅助层为 MSSNet 的每个阶段生成一张去模糊图像,即总共会产生 6(1+2+3=6) 张去模糊图像。需要注意的是,在推理阶段,只有图 1.2 中的 U 3 3 U_3^3 U33 才会生成去模糊图像。具体的实现如下:

  • 对于 S 3 S_3 S3,在 U 3 j U_3^j U3j 后面连接一个 3 x 3 的卷积层,生成残差图像 R 3 j R_3^j R3j(其尺寸为 W × H × 3 W \times H \times 3 W×H×3),然后将其与 B 3 B_3 B3 相加得到去模糊图像 L 3 j L_3^j L3j
  • 对于 S 2 S_2 S2,在 U 2 j U_2^j U2j 后面添加一个 3 x 3 的卷积层和一个 Pixel-Shuffle 操作层,从而生成残差图像(其尺寸为 W × H × 3 W \times H \times 3 W×H×3),然后将其与 B 3 B_3 B3 相加得到去模糊图像 L 2 j L_2^j L2j
  • 对于 S 1 S_1 S1,在 U 1 j U_1^j U1j 后面添加一个 3 x 3 的卷积层和一个 Pixel-Shuffle 操作层,从而生成残差图像(其尺寸为 W / 2 × H / 2 × 3 W/2 \times H/2 \times 3 W/2×H/2×3),然后将其与 B 2 B_2 B2 相加得到去模糊图像 L 1 j L_1^j L1j
图 1.4 MSSNet 的训练。在训练时,每个阶段都会使用辅助的卷积层和 pixel-shuffle 层生成残差图像。

3.2.1 损失函数

  作者在训练 MSSNet 时,损失函数由内容损失 L c o n t \mathcal{L}_{cont} Lcont 和频率重构损失 L f r e q \mathcal{L}_{freq} Lfreq 组成,具体公式如式(1.1)所示:

L t o t a l = L c o n t + λ L f r e q (1.1) \mathcal{L}_{total} = \mathcal{L}_{cont} + \lambda \mathcal{L}_{freq} \tag{1.1} Ltotal=Lcont+λLfreq(1.1)

其中, λ = 0.1 \lambda = 0.1 λ=0.1

  内容损失函数采用 L1 损失,具体公式如式(1.2)所示:

L c o n t = 1 N 1 ∣ ∣ L 1 1 − L g t ↓ ∣ ∣ 1 + ∑ j = 1 2 1 N 2 ∣ ∣ L 2 j − L g t ∣ ∣ 1 + ∑ j = 1 3 1 N 3 ∣ ∣ L 3 j − L g t ∣ ∣ 1 (1.2) \mathcal{L}_{cont} = \frac{1}{N_1} ||L_1^1-L_{gt\downarrow}||_1 +\sum_{j=1}^2\frac{1}{N_2}||L_2^j-L_{gt}||_1 +\sum_{j=1}^3\frac{1}{N_3}||L_3^j-L_{gt}||_1 \tag{1.2} Lcont=N11∣∣L11Lgt1+j=12N21∣∣L2jLgt1+j=13N31∣∣L3jLgt1(1.2)

其中 L g t L_{gt} Lgt 是真实的清晰图像, L g t ↓ L_{gt\downarrow} Lgt L g t L_{gt} Lgt 的下采样结果; L i j L_i^j Lij 是每个阶段生成的去模糊图像; N 1 N_1 N1 N 2 N_2 N2 N 3 N_3 N3 是归一化因子,分别为 N 1 = W / 2 × H / 2 × 3 N_1=W/2 \times H/2 \times 3 N1=W/2×H/2×3 N 2 = N 3 = W × H × 3 N_2=N_3=W \times H \times 3 N2=N3=W×H×3

  使用频率重构损失的目的:通过最小化去模糊图像和真实图像在频域的差异,从模糊图像中恢复高频细节。具体公式如式(1.3)所示:

L f r e q = 1 N 1 ∣ ∣ F ( L 1 1 ) − F ( L g t ↓ ) ∣ ∣ 1 + ∑ j = 1 2 1 N 2 ∣ ∣ F ( L 2 j ) − F ( L g t ) ∣ ∣ 1 + ∑ j = 1 3 1 N 3 ∣ ∣ F ( L 3 j ) − F ( L g t ) ∣ ∣ 1 (1.3) \begin{aligned} \mathcal{L}_{freq} = &\frac{1}{N_1}||\mathcal{F}(L_1^1)-\mathcal{F}(L_{gt\downarrow})||_1 +\sum_{j=1}^2 \frac{1}{N_2}||\mathcal{F}(L_2^j)-\mathcal{F}(L_{gt})||_1 \\ &+\sum_{j=1}^3 \frac{1}{N_3}||\mathcal{F}(L_3^j)-\mathcal{F}(L_{gt})||_1 \end{aligned} \tag{1.3} Lfreq=N11∣∣F(L11)F(Lgt)1+j=12N21∣∣F(L2j)F(Lgt)1+j=13N31∣∣F(L3j)F(Lgt)1(1.3)

其中 F \mathcal{F} F 为傅里叶变换。

3.3 模型变体

  对于 MSSNet 模型,作者提供了三种变体,他们的主要区别:UNet 网络中的通道数进行了不同的设置。MSSNet-small 设置为 20、60 和 100,MSSNet 设置为 54、96 和 138,MSSNet-large 设置为 80、130 和 180。

参考:

[1] MSSNet: Multi-Scale-Stage Network for Single Image Deblurring

[2] https://github.com/kky7/MSSNet

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

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

相关文章

ZLMediaKit在Windows上实现Rtmp流媒体服务器以及模拟rtmp推流和http-flv拉流播放

场景 开源流媒体服务器ZLMediaKit在Windows上运行、配置、按需拉流拉取摄像头rtsp视频流)并使用http-flv网页播放: 开源流媒体服务器ZLMediaKit在Windows上运行、配置、按需拉流拉取摄像头rtsp视频流)并使用http-flv网页播放_霸道流氓气质的博客-CSDN博客 上面讲…

OJ刷题 第十二篇

21308 - 特殊的三角形 时间限制 : 1 秒 内存限制 : 128 MB 有这样一种特殊的N阶的三角形&#xff0c;当N等于3和4时&#xff0c;矩阵如下&#xff1a; 请输出当为N时的三角形。 输入 输入有多组数据&#xff0c;每行输入一个正整数N&#xff0c;1<N<100 输出 按照给出…

从管理摆脱烦躁:几步打造优秀的仓库管理系统

伴随着物流行业的迅速发展&#xff0c;仓库管理成为了各个供应链环节的重要组成部分。为了更好地管理仓库&#xff0c;节约时间、提高效率&#xff0c;越来越多的企业开始使用仓库管理系统。那么&#xff0c;仓库管理系统是什么&#xff0c;为什么要用它呢&#xff1f;本篇文章…

春秋云境:CVE-2022-25578(文件包含)

目录 一、题目 二、蚁剑连接 一、题目 介绍&#xff1a; taocms v3.0.2允许攻击者通过编辑.htaccess文件执行任意代码 进入题目 访问URL&#xff0c;通过弱口令登录后台&#xff1a;admin/tao 进入后台 点击文件管理&#xff1a; 添加AddType application/x-httpd-php .jpg…

【技术】《Netty》从零开始学netty源码(四十一)之PoolChunk

PoolChunk 我们再回顾以下netty中与内存相关的类&#xff1a; 前面我们已经分析了PoolSubpag&#xff0c;本章我们分析PoolChunk,先看下它的属性值&#xff1a; 为了更好的理解这些属性值&#xff0c;我们结合它的构造函数来理解&#xff0c;具体的源码如下&#xff1a; 其…

网络通信之传输层协议

文章目录 传输层在网络通信中扮演的角色认识TCP协议TCP协议的多种机制确认应答(ACK)机制超时重传机制连接管理机制&#x1f53a;滑动窗口流量控制拥塞控制延迟应答捎带应答面向字节流粘包问题TCP异常处理 总结 传输层在网络通信中扮演的角色 上图是网络通信中五个模块&#xff…

信号完整性分析:关于传输线的三十个问题解答(三)

21.FR4 中 50 欧姆传输线的单位长度电感是多少&#xff1f;如果阻抗加倍怎么办&#xff1f;&#xff08;What is the inductance per length of a 50-Ohm transmission line in FR4? What if the impedance doubles?&#xff09; FR4 中的所有 50 欧姆传输线的单位长度电感约…

Vector - 常见设备I/O设置及使用

做过协议测试的朋友基本都会知道vector相关的设备&#xff0c;而且很多人都会去使用IO接口&#xff0c;但是并非所有的I/O接口都是一样的&#xff0c;然而他们到底是什么样的呢&#xff1f;这个需要我们去识别不同的设备&#xff0c;然后根据不同的设备去使用对应的IO配置&…

基于docker安装mongo

1.背景 基于业务的需求,部分数据量较大,基本一天的数据量都在1亿左右,关系型数据库已经满足不了了要求,所以更换为非关系型数据库.当然非关系型数据库的种类有很多,我们选择的是mongo,要想了解熟悉mongo,不能只做书面上的功夫,必须较强实际操作,才可以得心应手. 2. 安装mongo…

软件测试概念篇(上)

作者&#xff1a;爱塔居 专栏&#xff1a;软件测试​​​​​ 作者简介&#xff1a;大三学生&#xff0c;希望和大家一起好好学习&#xff01; 文章简介&#xff1a;简述了软件测试方面的基础概念 文章目录 目录 文章目录 一、软件测试概念 二、调试和测试的区别 三、软件测试和…

【linux】对于权限的理解

权限 Linux权限的概念用户之间的切换 Linux权限管理文件权限操作文件的人Linux文件默认权限的设置权限掩码 所属组/其他删除拥有者创建的文件文件拥有者、所属组的修改修改文件拥有者修改文件所属组一次性修改拥有者和所属组 目录的执行权限 Linux权限的概念 首先&#xff0c;…

ROS主机搭建NFS服务器,虚拟机通过挂载访问及修改主机文件

本文主要介绍在ROS主机中搭建NFS服务器&#xff0c;虚拟机&#xff08;从机&#xff09;通过nfs挂载的方式访问及修改主机中文件的方法 一、ROS主机NFS服务器搭建&#xff1a; 若机器人配有显示屏&#xff0c;此部分可直接在机器人上操作&#xff0c;否则&#xff0c;可通过SSH…

java 一文讲透API [常用类 + 常用工具](20万字博文)

目录 一、前言 二、API 简介 1.什么是API? 2.java中组件的层次结构 : 3.什么是模块 三、API&#xff08;常用类&#xff09; 1.Object类 2.String类 3.StringBuilder 和 StringBuffer类 4.Math类 和 System类 5.Date 和 Calender类 6.八大包装类 7.常用类补充 —— Arra…

案例分享 | 汽车电机控制箱螺钉浮高检测

电机控制器是通过主动工作来控制电机按照设定的方向、速度、角度、响应时间进行运动的集成电路&#xff0c;日常生活中的洗衣机、冰箱、印刷机等设备都需要电机控制器来控制其运行工作&#xff0c;是各种机械设备中不可或缺的部件。 在电动车辆中&#xff0c;电机控制器也是关…

C++的类和对象(1)

类和对象 1.面向过程和面向对象的初步认识2.类的引入3. 类的定义 &#xff08;class关键字&#xff09;4. 类的访问限定符及封装4.1. 类的访问限定符4.2. 类的封装什么是封装&#xff1f;为什么要封装&#xff1f; 5.类的作用域6.类的实例化 1.面向过程和面向对象的初步认识 C…

LeetCode 1043. 分隔数组以得到最大和

原题链接&#xff1a;1043. 分隔数组以得到最大和 给你一个整数数组 arr&#xff0c;请你将该数组分隔为长度 最多 为 k 的一些&#xff08;连续&#xff09;子数组。分隔完成后&#xff0c;每个子数组的中的所有值都会变为该子数组中的最大值。 返回将数组分隔变换后能够得到…

巧用千寻位置GNSS软件| 线路施工放样应用技巧

线路施工放样主要是解决线路工程和水利工程施工中&#xff0c;线路及渠道中线和边坡施工放样编辑的专用程序。千寻位置GNSS软件中完成线路施工放样可按照下述步骤操作。 点击【测量】->【线路施工放样】&#xff0c;选择一条线路放样&#xff0c;如图 5.6-1所示。 图 5.6-1…

跟姥爷深度学习4 从数学计算看神经网络

一、前言 我们前面简单的做了一个气温预测&#xff0c;经过反复调试&#xff0c;效果还不错。实际上在这个方向上我们还可以更进一步优化&#xff0c;但因为我们是学习嘛&#xff0c;主要还是看广度而不是深度。考虑到后面要开始学习卷积网络&#xff0c;我们必须把更基础的内…

打印流,Properties类

打印流只有输出流&#xff0c;没有输入流 package com.hspedu.printstream;import java.io.IOException; import java.io.PrintStream;/*** author 韩顺平* version 1.0* 演示PrintStream &#xff08;字节打印流/输出流&#xff09;*/ public class PrintStream_ {public stat…

网络安全-网站漏洞扫描器

网络安全-网站漏洞扫描器 网站漏洞扫描器是用来扫描对方网站可能存在哪些漏洞的工具&#xff0c;我们可以借助网站漏洞扫描器来当作辅助作用去检测对方网站的漏洞。下面我们来介绍一款常用、好用的漏洞扫描器–AWVS。 AWVS 先说缺点-这玩意简称漏扫&#xff0c;你一旦发送&a…