✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。
我是Srlua小谢,在这里我会分享我的知识和经验。🎥
希望在这里,我们能一起探索IT世界的奥妙,提升我们的技能。🔮
记得先点赞👍后阅读哦~ 👏👏
📘📚 所属专栏:传知代码论文复现
欢迎访问我的主页:Srlua小谢 获取更多信息和资源。✨✨🌙🌙
目录
本文所有资源均可在该地址处获取。
基于特征增强的双重注意力去雾网络
介绍:
本文复现了一个轻量级的图像去雾网络,不需要租赁服务器,使用自己的电脑就可以完成模型训练及测试。该网络基于编解码器建立,在编解码部分使用特征增强以改善整体的恢复效果。
创新点
1、该网络基于编解码结构建立,在网络高维部分结合通道和空间注意力建立双重注意力特征增强模块。
2、该网络为了实现模型轻量化,引入Ghost模块替代非线性卷积;设计RFB(Receptive Field Block)模块以扩大感受野,实现对不同尺度特征的充分融合
3、实验表明,该网络对均匀雾上的复原效果较好
网络结构
网络由编码器、双重注意力特征增强模块和解码器三个部分组成。
如图所示,编码器由步长为1的浅层卷积和四个不同尺度大小的特征提取模块组成。
解码器由四个对应尺度大小的特征复原模块和一个步长为1的尾卷积组成。
网络高维部分为双重注意力特征增强模块,该模块由三个模块串联而成,分别为Ghost模块、RFB模块和双重注意力模块。
之后将详细介绍每个模块的结构。
Ghost模块
这个模块是GhostNet: More Features from Cheap Operations这篇论文提出的,被这篇论文引用用来实现网络的轻量级。Ghost的想法很简单,因为存在特征图相似度很高的情况,所以Ghost的作者认为这种相似的特征图是可以利用其中一张进行简单的线性运算来得到的,这样就可以用更少的参数获得更多的特征图。
Ghost的结构图看起来复杂,但是整体结构很好理解,如图所示,整体利用普通的逐点卷积(1×1)压缩通道数,之后再利用逐层卷积(3×3)来获得相似的特征图,最后将所有的结果堆叠得到输出特征图。
代码实现如下,需要注意通道数在过程中的变化,设置好合适的卷积核大小。
class GhostModule(nn.Module):
def __init__(self, inp, oup, kernel_size=1, ratio=2, dw_size=3, stride=1, relu=True):
super(GhostModule, self).__init__()
self.oup = oup
init_channels = math.ceil(oup / ratio) # ratio = oup / intrinsic
new_channels = init_channels * (ratio - 1)
self.primary_conv = nn.Sequential(
nn.Conv2d(inp, init_channels, kernel_size, stride, kernel_size // 2, bias=False),
nn.BatchNorm2d(init_channels),
nn.ReLU(inplace=True) if relu else nn.Sequential(),
)
self.cheap_operation = nn.Sequential(
nn.Conv2d(init_channels, new_channels, dw_size, 1, padding=dw_size // 2, groups=init_channels, bias=False),
# groups 分组
基于特征增强的双重注意力去雾网络复现



最低0.47元/天 解锁文章
1285

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



