1,本文介绍
FFA-Net(Feature Fusion Attention Network)主要用于图像去雾任务,其核心思想是通过特征融合注意力网络直接恢复无雾图像。它的架构包括以下三个关键组件:
-
特征注意力(Feature Attention, FA)模块:结合通道注意力(Channel Attention)和像素注意力(Pixel Attention)机制。通道注意力处理不同通道的特征信息,而像素注意力则关注不同像素上的雾分布差异。FA模块通过灵活地调整特征和像素的重要性,提升了卷积神经网络的表示能力,处理了雾的复杂分布。
-
基本块结构:包括局部残差学习(Local Residual Learning)和特征注意力。局部残差学习允许不重要的信息(如轻雾区域或低频成分)被绕过,使网络更加关注关键的去雾信息,同时保留了局部细节。
-
基于注意力的不同级别特征融合(FFA)结构:通过FA模块自适应学习特征权重,为重要特征分配更高的权重。这种结构不仅保留了浅层的信息,还有效地将其传递到深层,以提升去雾效果。
这种设计使FFA-Net能够更有效地恢复图像细节和真实颜色,提升去雾效果。
关于FFA-Net的详细介绍可以看论文:https://arxiv.org/pdf/1911.07559.pdf
本文将讲解如何将FFA-Net融合进yolov8
话不多说,上代码!
2, 将FFA-Net融合进yolov8
2.1 步骤一
找到如下的目录'ultralytics/nn/modules',然后在这个目录下创建一个FFANet.py文件,文件名字可以根据你自己的习惯起,然后将FFA-Net的核心代码复制进去。
import torch.nn as nn
import torch
__all__ = (
FFA,
)
def default_conv(in_channels, out_channels, kernel_size, bias=True):
return nn.Conv2d(in_channels, out_channels, kernel_size, padding=(ke