论文阅读:Non-locally Enhanced Encoder-Decoder Network for Single Image De-raining

这是2018ACMMM的一篇论文,在整理ERL-Net的时候发现结构同为编解码结构,一起看看。不过论文有点难懂,之前理解还不是很透彻,这次再下点功夫好好看一下。

2018 ACMMM:NLEDN

在这里插入图片描述
代码:NLEDN

对于现有的去雨方法,要么专注于网络的入口和出口,将输入图像分解为高和低频率信息和使用残差学习减少映射范围,或专注于级联的学习框架将去雨任务分解成多阶段任务。
本文主要是提出了一种基于编解码结构的端到端的网络结构用于增强特征表达和空间关联学习的能力。提出了一种非局部增强型的编解码网络框架,该框架由一个池化索引嵌入编解码网络组成,可以有效地学习越来越抽象的特征表示,从而在完美地保留图像细节的同时,实现更精确的雨纹建模。
该编码-解码器框架由一系列非局部增强的密集块组成,既能充分利用卷积层的层次特征,又能很好地捕获远距离依赖关系和结构信息。

主要介绍:

前人工作:

传统的单幅图像去雨方法是探索关于雨条纹物理特征的某些先验信息,将其建模为一个信号分离问题或者直接将其视为一个图像滤波问题,借助非局部均值平滑进行求解。然而,由于这些模型是基于手工制作的低级特征和先验雨纹假设的融合,它们只能处理特定形状、尺度和密度的雨滴,很容易导致类似雨纹的图像细节的破坏。
CNN由于其具有强大的特征表示和端到端数据推理能力,通常将问题建模成逐像素图像回归过程,通过一系列卷积、池化和非线性操作,直接学习以端到端模式将输入的雨天图像映射为其干净版本或负残差映射。

现有的方法要么是将输入图像分解为高频和低频信息,集中在网络的入口处,要么是设计级联学习方案将去雨任务分解为多个阶段。
JORDER提出了一种上下文化扩展网络来聚合三种接受度尺度的上下文信息,以提高雨纹特征学习的效率。
Kang等人和Li等人分别依靠形态学成分分析和基于高斯混合模型(GMMs)的字典学习。
Yu等通过判别稀疏编码对有雨条纹和无雨场景的字典进行区分。
Zhu等人在联合优化过程中进一步考虑降雨方向。
在这些方法中,尽管雨纹和无雨图像的不同先验信息得到了广泛的利用,但由于手工low-level的特征表示和较强的先验假设,它们往往会使无雨场景的细节过于平滑。

局限:

1、基于CNN设计的浅层神经网络,在网络传播过程中保持不变的特征图分辨率。
2、网络的感受野是有限的,每个空间位置的像素值推断只依赖于较小的局部周边区域,通常很难去除较长的雨纹。
3、由于忽略了远距离空间上下文建模,这些模型在检测暴雨条纹时,往往不能准确地捕捉被雨水去除的图像内容,导致结果往往过于模糊,特别是在纹理丰富的边缘。

本文主要思想:

受自适应非局部均值滤波器的启发,将非局部操作添加进网络结构。
非局部操作以考虑的特征图中特定位置上的特征的加权和来计算空间位置上的特征响应。
提出了一个非局部增强型的编解码器网络框架用于单图像解雨。
核心架构是一个编码器网络和相应的解码器网络的串联。它被设计为对称结构,编码器和解码器网络都由三个级联非局部增强密集块(简称NEDB)组成。
每个NEDB都被设计成一个残差学习模块,残差学习模块包含一个非局部特征图加权,然后是四个紧密连接的卷积层进行层次特征编码,另一个卷积层进行残差推理。
在编码器网络中引入了池化跨步机制来学习越来越抽象的特征表示,这导致分辨率随着感受野的增大而降低。我们进一步将池化索引合并到相应编码器的最大池化步骤中,以在译码器中执行非线性上采样,这有助于保存结果图像中的结构和细节。

主要创新之处:

1、提出了一个非局部增强的编解码器网络框架NLEDN来去除单图像的雨条纹。
2、在编码阶段,它能够学习越来越抽象的特征表示以获得更准确的雨纹建模,并且能够在解码过程中去除所有级别的雨纹,同时保留纹理细节。
3、提出了非局部增强的稠密块(NEDB),它不仅可以充分利用所有嵌入的卷积层的层次特征,还可以很好地捕获空间上下文建模的远程依赖关系。

网络结构:

在这里插入图片描述

这里,我们从下往上看。
下半部分是一个非局部增强密集模块(NEDB)
左边是一个多尺度的输入,可以采用全局级的非局部增强将整个特征图输入NEDB,也可以将特征图划分为区域网格实现区域级的非局部增强。
然后将这个多尺度的输入,分别进行三个并行的1x1卷积,分别将H x W x C转换成HW x C 、C x HW 和HW x C ,然后两两进行矩阵乘积,最终变回HW x C 即 H x W x C,再经过一个1x1的卷积,并与最初的进行加和。
再之后将非局部增强特征激活(没错文中就是这个名字)传递给五个密集连接的递归卷积层。
在最后将处理之前的前一阶段的特征进行融合。
//吐槽一下,这个图画的有点让人看不清意图。。

上半部分就是本文提出的非局部增强编解码网络(NLEDN)
从图中可以看到,输入图像和低级特征激活通过长距离跳跃连接连接到框架的末端。
跳跃连接提供了长距离的信息补偿,这样原始像素值和低水平的特征激活在整个架构的最后仍然可用;
其次,它们使残差学习成为可能,这有助于梯度反向传播和像素级预测。
核心结构就是一种非局部增强的编解码器,创新在于上述解释的非局部增强密集块(NEDB)和池化索引引导。

首先是通过两个卷积层来提取浅层的特征,然后是一个由多尺度NEDB和最大池化层组成的编解码网络,并且在编解码器结构中加入了池化指引连接,后面会讲到。最后在1x1卷积之后与跳跃连接传递过来的浅层特征进行融合,再通过一个非线性单元与最初的雨图加和得到最终的去雨结果。

具体实现:

1、非局部网络

在每一次二维非局部操作中,某一位置的响应被计算为所有空间位置特征的加权和。
是神经网络的第一个成分,可以将相邻位置的感受野扩大到整个图像。
这种非局部操作主要是受传统的非局部均值滤波的启发。

2、网络的输入输出层

输入层是两个卷积层用于提取浅层特征。
在这里插入图片描述在这里插入图片描述

输出层部分:
输入图像I0和浅层特征F0逐渐加入到整个网络出口附近的层的特征激活中。
特别地,采用一个tanh层作为最终卷积层的非线性单元,得到像素值在(1,1)以内的雨图R。
在这里插入图片描述

3、非局部增强密集块NEDB

感觉表述还不是很清晰
将NEDB的输入特征激活表示为Fn,其空间维数为Hn * Wn * Cn。
计算成对关系的成对函数 f 可以表示为:
在这里插入图片描述
其中Fn,i, Fn,j分别表示第i, j位置的特征激活Fn。
θ(·)和ϕ(·)是两个带有不同学习参数Wθ、Wϕ的功能嵌入操作。

NEDB中的非局部操作可以定义为:
在这里插入图片描述
g(·)是计算Fn表示的一元函数。
C(F)是归一化因子,是系数加和
这样,通过考虑每个位置i的所有位置(j),特征表示被非局部增强。

之后是五个密集连接的递归卷积层,采用了从每一层到所有后续层的直接连接。因此,第lth层从所有前面的层接收特征激活,D0,…,Dl−1作为输入:
在这里插入图片描述
同时,为了避免网络层数和连接数增加导致梯度消失/爆炸的问题,我们在每个NEDB的设计中都采用了局部剩余学习。
形式上,第m个NEDB的fnal输出可以表示为:
在这里插入图片描述
其中F (Fm−1,Wm)表示要在考虑的块中学习的残差映射,它实际上是从前面所有层的特征激活与1×1卷积层的连接中推断出来的,
在这里插入图片描述

4、池化索引引导解码

英语太差了,,表达都是费劲的句子。。

由以上可知,编码部分由三个连续的NEDB组成,每个NEDB后面都有一个带有跨步机制的max-pooling层,对特征激活进行下采样。
对称地,另外三个NEDB堆叠在解码器部分,每个部分后面都有一个maxunpooling层,对特征激活进行上采样。
此外,还使用了跳跃连接将编码层的特征激活链接到解码层的对应部分。

特别地,本文还在编码期间记录池化索引,以便在解码部分进行进一步的上采样推断。
maxunpooling层使用在对应编码层的最大池化步骤中计算的池化索引来执行非线性上采样。
鉴于记录的池化索引矩阵,max-unpooling的输出特征图在最大池化操作之前通过最初初始化特征图大小计算,然后分配特征序列在每个位置的输入特性映射到相应的位置(由索引矩阵给出)和归零剩余的位置。
上采样的特征激活是稀疏的,并与随后的可训练的flters卷积,以产生密集的特征地图。

还是不太明白是什么意思,大概就是每次在编码器部分每次最大池化下采样的时候记录一个索引,然后通过这个索引来指导解码器部分非池化来进行上采样。

5、多尺度非局部增强

由于NEDB中的非局部操作需要计算feature activation map的每两个空间位置之间的成对关系,因此当空间维度变大时,计算量急剧增加。
提出了一种灵活的非局部增强通过不同空间分辨率的特征激活,在构建编码和解码层时以多尺度的方式实现非局部操作。
对于空间分辨率最低的特征激活,后续的NEDB直接在整个特征激活图上工作,以实现全局级别的非局部增强。
对于具有更高空间分辨率的特征激活,我们首先将其划分为区域网格,k x k NEDB表示在执行区域上的非局部操作之前如何对输入的特征图进行划分。
这种区域级的非局部增强可以避免直接进行高分辨率特征激活而导致不可接受的计算消耗。
另一方面,与传统的在3x3或5x5窗口内进行的局部卷积运算相比,区域级非局部增强能够检索远程结构线索,从而更好地去除雨纹。

6、损失函数
MAE、平均绝对误差、l1损失:
在这里插入图片描述

总结

这是我第二次读这篇文章,还是读的半知半解,因为作者的英语表达很神奇,很多地方为了高端而高端,不能很好地朴素地表达清楚想要展示什么。
对于这篇文章,在我看来主要创新点是在原有的编解码网络的基础上,添加了一个非局部增强密集块作为基本模块,同时在传统跳跃连接的基础上还增添了池化指引用于特征信息更好地传递。
对于非局部增强密集模块,是进行了空间位置之间成对关系的计算,将相邻位置的感受野扩大到整个图像。
同时也是采用了多尺度信息的输入,更好地完成去雨。

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于视频编解码的FPGA源码分析,这是一个非常复杂和广泛的话题。在FPGA中实现视频编解码通常涉及到以下几个方面: 1. 视频编码标准:FPGA实现视频编解码首先需要选择一个视频编码标准,如H.264、H.265、MPEG-2等。不同的标准有不同的压缩算法和编码器结构。 2. 编码器架构:视频编码器通常包括预处理、变换、量化、熵编码等模块。在FPGA中实现编码器,需要设计合适的数据流架构,使得各个模块能够高效地并行处理视频数据。 3. 解码器架构:视频解码器通常包括熵解码、逆量化、逆变换、去块效应滤波等模块。在FPGA中实现解码器,需要设计合适的数据流架构,使得各个模块能够高效地并行处理解码数据。 4. 缓存和存储:视频编解码通常需要使用大量的缓存和存储来存储视频数据和中间结果。在FPGA中实现视频编解码,需要合理设计和管理缓存和存储结构,以满足高带宽和低延迟的需求。 5. 性能优化:在FPGA中实现视频编解码,需要进行一系列的性能优化,如流水线设计、并行处理、资源共享等,以提高系统的吞吐量和效率。 综上所述,视频编解码的FPGA源码分析涉及到多个方面的知识和技术,需要深入理解视频编解码算法和FPGA架构,并且具备良好的硬件设计和优化能力。对于具体的视频编解码源码分析,您可以参考相关的文档、论文或者开源项目,以了解具体实现的细节和思路。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值