1 总体概述
GCANet是端到端去雾的一篇代表性的文章,它摒弃以往使用手工设计的先验以及大气散射模型的使用,直接通过原始有雾图像估计出无雾图像J与有雾图像I之间的残差,图像恢复阶段直接使用网络输出的残差与输入有雾图像I之间的加和完成去雾过程。
文章本身最大的贡献:
1、借鉴并使用了平滑空洞卷积消除以往空洞卷积存在的网格伪影以及特征相关性不强的问题,提出了一个门限子网络,用于依据不同level的特征的权重进行特征加权融合
2、GCANet达到当前的SOTA,并且使用消融试验对不同模块重要性进行了分析
3、GCANet应用到去雨任务中依然获得了SOTA
2 灵感来源
之前的研究者利用扩张卷积来聚合上下文信息,可以获得更加细腻和准确的结果,主要原因是扩张卷积不损失分辨率,但是他也存在一些问题,比如网格伪影,远距离信息没有相关性。因此也有很多人去尝试改进上述问题,比如使用平滑空洞卷积来消除网格伪影;也有人使用不同level的特征图进行融合获得更好的去雾效果;也有使用使用gated fusion module ,但是它是直接使用原始图的拷贝而非中间所获取的特征图;GCANet借鉴了上述思想,使用了扩张卷积,借鉴了smooth 扩张卷积消除伪影,借鉴了融合特征图的思路,提出了一个门限子网络用于辨析不同level特征图的重要性
3 现有工作分析
去雾分为两种,其一是基于传统先验知识的去雾,其二是基于学习的方式, 区别就是第一种方案通过手工获取的先验知识在第二钟方案是通过学习获取
传统方案去雾
1、基于暗通道先验以及其对应的优化方案
2、最大对比度
3、颜色衰减先验等
深度学习去雾
1、使用端到端的深度学习方式,利用多尺度网络预测透射率图,但是透射率图估计的不准确导致去雾结果较差
2、将全局大气光值A以及透射率参数融合为一个参数,使用轻量级的网络进行预测
3、也有使用两个子网络分别预测全局大气光值A以及透射率参数,并依据大气散射模型进行图像去雾的
4 本文GCANet方法
整体架构是:首先使用编码模块将输入的有雾图像编码为特征;接着通过聚合上下文信息以及融合不同level的特征强化编码特征(主要使用平滑空洞卷积以及特殊设计的门限子网络);最后使用一个解码网络将特征映射回原图空间,并加上原始图就可以获取最终的去雾图像
4.1 Smoothed Dilated Convolution
什么是网格伪影?

由上图可知,最右边的这一幅特征图中的红蓝绿黄色四种小点来自于之前特征层对应颜色的独立特征,特征之间没有交互,没有融合,导致最终获取的当前层的特征的之间没有相关性可言,造成局部信息丢失,这对于pixel_level的预测来说是极其致命的。
消除网格伪影有两种方式,第一种是在使用空洞卷积之前,使用共享可分离卷积先进行特征之间的融合;另一种方式是在卷积后特征整合之前,使用类似于shuffleNet一样的方式进行特征交互,具体可以参考如下链接:总结-空洞卷积(Dilated/Atrous Convolution)
本文采用第一种方式完成空洞卷积的网格效应消除
class ResidualBlock(nn.Module):
def __init__(self, channel_num, dilation=1, group=1):
super(ResidualBlock, self).__init__()
self.conv1 = nn.Conv2d(channel_num, channel_num, 3, 1, padding=dilation, dilation=dilation, groups=group,
bias=False)
self.norm1 = nn.InstanceNorm2d(channel_num, affine=True)
self.conv2 = nn.Conv2d(channel_num, channel_num, 3, 1, padding=dilation, dilation=dilation, groups=

GCANet通过端到端学习去除图像雾气,利用平滑空洞卷积和门限子网络融合不同层级特征,达到SOTA性能。文章还探讨了传统先验方法与深度学习方法的区别,以及GCANet在去雨任务中的应用。
最低0.47元/天 解锁文章
1489

被折叠的 条评论
为什么被折叠?



