【YOLOv8改进 - 注意力机制】HCF-Net 之 MDCR:多稀释通道细化器模块 ,以不同的稀释率捕捉各种感受野大小的空间特征 | 小目标

简介: HCF-Net是针对红外小目标检测的深度学习模型,采用U-Net改进架构,包含PPA、DASI和MDCR模块。PPA利用多分支特征提取增强小目标表示,DASI实现自适应通道融合,MDCR通过多扩张率深度可分离卷积细化空间特征。实验显示,HCF-Net在SIRST数据集上表现出色,超越其他方法。代码和论文可在给出的链接获取。

YOLO目标检测创新改进与实战案例专栏

专栏目录: YOLO有效改进系列及项目实战目录 包含卷积,主干 注意力,检测头等创新机制 以及 各种目标检测分割项目实战案例

专栏链接: YOLO基础解析+创新改进+实战案例

介绍

image-20240701160512143

摘要

摘要——红外小目标检测是计算机视觉中的一项重要任务,涉及识别和定位红外图像中的微小目标,这些目标通常只有几个像素。然而,由于目标体积小且红外图像背景通常复杂,这项任务面临诸多挑战。本文提出了一种深度学习方法HCF-Net,通过多个实用模块显著提升红外小目标检测性能。具体而言,该方法包括并行化的感知补丁注意力(PPA)模块、维度感知选择性融合(DASI)模块和多膨胀通道优化(MDCR)模块。PPA模块使用多分支特征提取策略来捕捉不同尺度和层次的特征信息。DASI模块实现了自适应的通道选择和融合。MDCR模块通过多层深度可分离卷积捕捉不同感受野范围的空间特征。大量实验结果表明,在SIRST红外单帧图像数据集上,所提出的HCF-Net表现优异,超越了其他传统和深度学习模型。代码可在https://github.com/zhengshuchen/HCFNet获取。

文章链接

论文地址:论文地址

代码地址:代码地址

基本原理

HCF-Net(Hierarchical Context Fusion Network)是一种用于红外小目标检测的深度学习模型,旨在提高对红外图像中微小目标的识别和定位能力。

  1. 网络架构:HCF-Net采用了一种升级版的U-Net架构,主要由三个关键模块组成:Parallelized Patch-Aware Attention(PPA)模块、Dimension-Aware Selective Integration(DASI)模块和Multi-Dilated Channel Refiner(MDCR)模块。这些模块在不同层级上解决了红外小目标检测中的挑战 。

  2. PPA模块

    • Hierarchical Feature Fusion:PPA模块利用分层特征融合和注意力机制,以在多次下采样过程中保持和增强小目标的表示,确保关键信息在整个网络中得以保留[T1]。
    • Multi-Branch Feature Extraction:PPA采用多分支特征提取策略,以捕获不同尺度和级别的特征信息,从而提高小目标检测的准确性 。
  3. DASI模块

    • Adaptive Feature Fusion:DASI模块增强了U-Net中的跳跃连接,专注于高低维特征的自适应选择和精细融合,以增强小目标的显著性 。
  4. MDCR模块

    • Spatial Feature Refinement:MDCR模块通过多个深度可分离卷积层捕获不同感受野范围的空间特征,更细致地建模目标和背景之间的差异,提高了定位小目标的能力 。

image-20240701161043152

Multi-Dilated Channel Refiner(MDCR)模块是HCF-Net中的关键组成部分,旨在增强网络对红外小目标检测的特征表示和区分能力。

  1. MDCR模块的目的:MDCR模块旨在通过采用多种扩张率的深度可分离卷积层,捕获不同感受野大小的空间特征,从而实现对目标和背景之间差异的详细建模,提升网络有效区分小目标的能力 。

  2. MDCR模块的结构

    • 输入特征的划分:MDCR模块将输入特征F_a沿通道维度划分为四个独立的头部,生成对应的(a_i),其中i从1到4。每个头部对应特定的特征集合 。
    • 深度可分离扩张卷积:每个头部经历独立的深度可分离扩张卷积,具有不同的扩张率,最终生成(a'_i),其中i从1到4。这些卷积的扩张率分别标记为d1、d2、d3和d4 。
    • 特征增强:通过对各个头部应用深度可分离扩张卷积,MDCR模块增强了特征表示和网络的区分能力 。
  3. MDCR模块的有效性

    • 捕获空间特征:MDCR模块在不同感受野范围内捕获空间特征,使网络更好地理解红外图像中目标的上下文和细节 。
    • 区分小目标:通过利用具有不同扩张率的多个深度可分离卷积层,MDCR模块增强了网络区分小目标和背景的能力,提高了检测性能 。

    如下图所示MDCR沿着通道维度将输入特征$\mathbf{F}_{a}\in\mathbb{R}^{H\times W\times C}$分成四个不同的头,生成$(\mathbf{a}i){i=1}^4\in\mathbb{R}^{H\times W\times\frac{C}{4}}$。然后,每个头部以不同的扩张率分别进行深度可分离的扩张卷积,得到$(\mathbf{a}^{\prime}i){i=1}^4\in\mathbb{R}^{H\times W\times\frac{C}{4}}$。将卷积扩张率分别命名为$d1、d2、d3$和$d4$。

    $$\mathbf{a}_i^{\prime}=DDWConv(\mathbf{a}_i),$$

    其中,$\mathbf{a}_i^{\prime}$表示对第$i$个头部进行深度可分离扩张卷积后获得的特征。操作$DDWConv()$表示深度可分离扩张卷积,$i$取值为1、2、3、4。

    MDCR通过通道分割和重组来增强特征表示。具体来说,我们将$\mathbf{a'}i$分割成单个通道,从而得到每个头部的$(\mathbf{a}^{j}{i})_{j=1}^{\frac{C}{4}}\in\mathbb{R}^{H\times W\times1}$。然后,我们将这些通道交错排列,形成$(\mathbf{h}j){j=1}^{\frac{C}{4}}\in\mathbb{R}^{H\times W\times4}$,从而增强多尺度特征的多样性。随后,我们使用点式卷积法进行组间和跨组信息融合,得到输出$\mathbf{F}_{o}\in\mathbb{R}^{H\times W\times C}$,实现轻量高效的聚合效果。

    $$\mathbf{h}_j=Winner([\mathbf{a}^j_1, \mathbf{a}^j_2, \mathbf{a}^j_3, \mathbf{a}^j_4]), \mathbf{F}_{o}=\delta(B(W_{outer}([\mathbf{h}_1, \mathbf{h}_2, \ldots, \mathbf{h}_j])))$$

    其中,$W{inner}$和$W{outer}$是用于点卷积的权重矩阵。这里,$\mathbf{a}^j_i$表示第$i$个头的第$j$个通道,而$\mathbf{h}_j$表示第$j$组特征。$i \in {1, 2, 3, 4}$,$j \in {1, 2, \ldots, \frac{C}{4}}$。函数$\delta()$和$\mathcal{B}()$分别对应于整流线性单元(ReLU)和批量归一化(BN)。


image-20240701161122511

YOLOv8引入

class MDCR(nn.Module):
    def __init__(self, in_features, out_features, norm_type='bn', activation=True, rate=[1, 6, 12, 18]):
        super().__init__()

        # 定义四个卷积块,每个块使用不同的扩张率进行深度可分离卷积
        self.block1 = conv_block(
            in_features=in_features//4,
            out_features=out_features//4,
            padding=rate[0],
            dilation=rate[0],
            norm_type=norm_type,
            activation=activation,
            groups=128
        )
        self.block2 = conv_block(
            in_features=in_features//4,
            out_features=out_features//4,
            padding=rate[1],
            dilation=rate[1],
            norm_type=norm_type,
            activation=activation,
            groups=128
        )
        self.block3 = conv_block(
            in_features=in_features//4,
            out_features=out_features//4,
            padding=rate[2],
            dilation=rate[2],
            norm_type=norm_type,
            activation=activation,
            groups=128
        )
        self.block4 = conv_block(
            in_features=in_features//4,
            out_features=out_features//4,
            padding=rate[3],
            dilation=rate[3],
            norm_type=norm_type,
            activation=activation,
            groups=128
        )

        # 定义输出的尺寸调整卷积块和最终输出卷积块
        self.out_s = conv_block(
            in_features=4,
            out_features=4,
            kernel_size=(1, 1),
            padding=(0, 0),
            norm_type=norm_type,
            activation=activation,
        )
        self.out = conv_block(
            in_features=out_features,
            out_features=out_features,
            kernel_size=(1, 1),
            padding=(0, 0),
            norm_type=norm_type,
            activation=activation,
        )

    def forward(self, x):
        split_tensors = []
        x = torch.chunk(x, 4, dim=1)  # 沿通道维度将输入张量分成四个部分
        x1 = self.block1(x[0])
        x2 = self.block2(x[1])
        x3 = self.block3(x[2])
        x4 = self.block4(x[3])

        # 对每个通道进行操作,拼接和处理
        for channel in range(x1.size(1)):
            channel_tensors = [tensor[:, channel:channel + 1, :, :] for tensor in [x1, x2, x3, x4]]
            concatenated_channel = self.out_s(torch.cat(channel_tensors, dim=1))  # 在通道维度上拼接
            split_tensors.append(concatenated_channel)

        x = torch.cat(split_tensors, dim=1)  # 沿通道维度拼接
        x = self.out(x)  # 最终输出
        return x

task与yaml配置

详见:https://blog.csdn.net/shangyanaf/article/details/140104977

相关文章
|
6月前
|
机器学习/深度学习 存储 计算机视觉
【CVPR2020】ECA-Net:深度卷积神经网络的有效通道注意力
【CVPR2020】ECA-Net:深度卷积神经网络的有效通道注意力
1016 1
【CVPR2020】ECA-Net:深度卷积神经网络的有效通道注意力
|
机器学习/深度学习 数据可视化 算法
ECA-Net:深度卷积神经网络的高效通道注意力
最近,**通道注意力机制**已被证明在提高深度卷积神经网络 (CNN) 的性能方面具有巨大潜力。然而,大多数现有方法致力于开发更复杂的注意力模块以获得更好的性能,这不可避免地增加了模型的复杂性。为了克服性能和复杂性权衡的悖论,**本文提出了一种高效通道注意 (ECA) 模块,该模块仅涉及少量参数,同时带来明显的性能增益**。通过剖析 SENet 中的通道注意模块,我们凭经验表明**避免降维对于学习通道注意很重要**,**适当的跨通道交互可以在显着降低模型复杂度的同时保持性能**。因此,**我们提出了一种无需降维的局部跨通道交互策略,可以通过一维卷积有效实现**。此外,**我们开发了一种自适应选
2028 0
ECA-Net:深度卷积神经网络的高效通道注意力
|
3月前
|
存储 开发框架 .NET
"揭秘.NET内存奥秘:从CIL深处窥探值类型与引用类型的生死较量,一场关于速度与空间的激情大戏!"
【8月更文挑战第16天】在.NET框架中,通过CIL(公共中间语言)可以深入了解值类型与引用类型的内存分配机制。值类型如`int`和`double`直接在方法调用堆栈上分配,访问迅速,生命周期随栈帧销毁而结束。引用类型如`string`在托管堆上分配,堆栈上仅存储引用,CLR负责垃圾回收,确保高效且自动化的内存管理。
55 6
|
4月前
|
机器学习/深度学习 计算机视觉 网络架构
【YOLOv8改进 - 注意力机制】HCF-Net 之 DASI: 维度感知选择性整合模块 | 小目标
YOLO目标检测专栏介绍了HCF-Net,一种针对红外小目标检测的深度学习模型,包含PPA、DASI和MDCR模块。PPA利用多分支注意力捕获多层次特征,DASI实现自适应特征融合,MDCR通过深度可分离卷积细化空间特征。HCF-Net在SIRST数据集上的实验超越其他模型。论文和代码可在提供的链接中找到。DASI模块通过信道分区选择机制动态融合高维和低维特征。YOLOv8引入了DASI结构,结合不同尺度特征以增强小目标检测。更多配置细节参见相关链接。
|
4月前
|
机器学习/深度学习 计算机视觉 网络架构
【YOLOv8改进 - 注意力机制】HCF-Net 之 PPA:并行化注意力设计 | 小目标
YOLO目标检测专栏介绍了HCF-Net,一种用于红外小目标检测的深度学习模型,它通过PPA、DASI和MDCR模块提升性能。PPA利用多分支特征提取和注意力机制,DASI实现自适应特征融合,MDCR通过多层深度可分离卷积细化空间特征。HCF-Net在SIRST数据集上表现出色,超越其他方法。论文和代码分别在[arxiv.org](https://arxiv.org/pdf/2403.10778)和[github.com/zhengshuchen/HCFNet](https://github.com/zhengshuchen/HCFNet)上。YOLOv8的PPA类展示了整合注意力机制的结构
|
6月前
|
机器学习/深度学习 编解码 算法
Yolov5改进算法之添加Res2Net模块
Res2Net(Residual Resolution Network)是一种用于图像处理和计算机视觉任务的深度卷积神经网络架构。它旨在解决传统的ResNet(Residual Network)存在的问题,如对不同尺度和分辨率特征的建模不足以及网络深度受限的问题。Res2Net通过引入多分支的结构和逐级增加的分辨率来提高网络的表达能力,从而在各种视觉任务中取得了显著的性能提升。
365 0
|
安全 JavaScript C#
【代码审计-.NET】基于.NET框架开发的基本特征
【代码审计-.NET】基于.NET框架开发的基本特征
186 0
【代码审计-.NET】基于.NET框架开发的基本特征
|
运维 安全 网络安全
.NET HttpWebRequest(请求被中止: 未能创建 SSL/TLS 安全通道)和(基础连接已经关闭: 发送时发生错误)问题查找解决
.NET HttpWebRequest(请求被中止: 未能创建 SSL/TLS 安全通道)和(基础连接已经关闭: 发送时发生错误)问题查找解决
935 0
.NET HttpWebRequest(请求被中止: 未能创建 SSL/TLS 安全通道)和(基础连接已经关闭: 发送时发生错误)问题查找解决
|
JavaScript