云计算百科
云计算领域专业知识百科平台

YOLOv13最新创新改进系列:粉丝福利!!融合最新顶会提出的HCANet网络中MSFN注意力融合模块,有效提升小目标检测性能!

YOLOv13最新创新改进系列:粉丝福利!!融合最新顶会提出的HCANet网络中MSFN注意力融合模块,有效提升小目标检测性能!

购买相关资料后畅享一对一答疑!

详细的改进教程以及源码,戳这!戳这!!戳这!!!B站:AI学术叫叫兽 源码在相簿的链接中,动态中也有链接,感谢支持!祝科研遥遥领先!

购买相关资料后畅享一对一答疑!

详细视频手把手教程参考我B站:Ai学术叫叫兽 非常详细!!!

视频教程戳这里!!!——YOLOv13最新创新改进系列:粉丝福利!!融合最新顶会提出的HCANet网络中MSFN注意力融合模块,有效提升小目标检测性能!

一、摘要

HCANet提出原文戳这!

摘要高光谱图像去噪是高光谱数据有效分析和解释的关键。然而,同时建模全局和局部特征很少被探索以增强HSI去噪。在这封信中,我们提出了一个混合卷积和注意力网络(HCANet),它利用了卷积神经网络(CNN)和变压器的优势。为了增强全局和局部特征的建模,我们设计了一个卷积和注意力融合模块,旨在捕获长程依赖性和邻域光谱相关性。此外,为了改善多尺度信息聚合,我们设计了一个多尺度前馈网络,通过提取不同尺度的特征来提高去噪性能。在主流HSI数据集上的实验结果验证了HCANet的合理性和有效性。该模型能有效去除各种复杂噪声。我们的代码可在https://github.com/summitgao/HCANet上获得。 在这里插入图片描述

二、介绍

超光谱成像是一种强大的技术,它可以从物体或场景中获取丰富的光谱信息。与RGB数据相比,高光谱图像(HSI)捕获的光谱信息更精细。因此,HSI已被广泛用于许多实际应用中,例如解混[1]和地物分类[2]。然而,HSI经常受到传感器成像过程中不可避免的混合噪声的困扰,这是由于曝光时间和反射能量不足造成的。这些噪声可能会降低图像质量并妨碍后续分析和解释的性能。消除这些噪声可以提高地面目标检测和分类的准确性。因此,HSI去噪是许多遥感应用中预处理阶段的关键和不可缺少的技术。受HSI的空间和光谱特性的启发,传统的HSI去噪方法利用具有先验的优化方案,例如低秩[3],全变差[4],非局部相似性[5],虽然这些方法已经取得了可观的性能,但它们通常取决于手工先验和真实世界噪声模型之间的相似程度。近年来,卷积神经网络(CNN)[7]为HSI去噪提供了新的思路,表现出显着的性能进步。Maffei等人。[8]提出了一种基于CNN的HSI去噪模型,将噪声水平图作为输入来训练网络。Wang等人。[9]提出了一种基于联合Octave和注意力机制的卷积网络,用于HSI去噪。Pan等人。[10]提出了一种渐进的多尺度信息聚合网络,以消除HSI中的噪声。这些基于CNN的方法使用卷积核进行局部特征建模。最近,随着Vision Transformer(ViT)的出现,基于Transformer的方法在各种计算机视觉任务中取得了重大成功。现有的基于Transformer的图像去噪方法通过学习全局上下文信息取得了很大的成功。然而,如果局部特征被有效地考虑和利用,HSI去噪性能可能会进一步提高。因此,通过结合CNN和Transformers来考虑局部和全局信息以提高去噪性能是很重要的。由于以下两个挑战,为HSI去噪构建有效的Transformer和CNN混合模型通常是不平凡的:1)局部和全局特征建模的最佳混合架构仍然是一个悬而未决的问题。卷积核捕捉局部特征,这意味着失去了长距离的信息交互。卷积和注意力的结合可以提供一个可行的解决方案。2)Transformer中前馈网络的单尺度特征聚合受到限制。一些方法使用深度卷积来改善FFN中的局部特征聚合。然而,由于隐藏层中的信道数量较多,单尺度令牌聚合很难利用丰富的信道表示。为了解决上述两个挑战,我们提出了一种用于HSI去噪的混合卷积和注意力网络(HCANet),它同时利用全局上下文信息和局部特征,如图1所示。具体来说,为了增强全局和局部特征的建模,我们设计了一个卷积和注意力融合模块(CAFM),旨在捕获长程依赖性和邻域光谱相关性。此外,为了提高FFN中的多尺度信息聚合,我们设计了一个多尺度前馈网络(MSFN),通过提取不同尺度的特征来提高去噪性能。在MSFN中使用了三个具有不同步长的并行扩张卷积。通过在两个真实世界的数据集上进行实验,我们验证了我们提出的HCANet是上级优于其他国家的最先进的竞争对手。

这封信的贡献可以总结如下: 1.探索了用于HSI去噪的全局和局部特征建模的有前途但具有挑战性的问题。据我们所知,这是第一个将联合收割机卷积和注意力机制结合起来用于HSI去噪任务的工作。 2.提出了多尺度前馈网络,在不同尺度上无缝提取特征,有效抑制多尺度噪声。 3.在两个基准数据集上进行了大量实验,验证了HCANet的合理性和有效性。

结论

我们提出了HCANet,一种新的网络HSI去噪。特别是,我们提出了卷积和注意力融合模块,CAFM,融合全局和局部特征。此外,我们提出了多尺度前馈网络,MSFN从多个尺度提取特征,提高去噪性能。在具有挑战性的HSI数据集上的实验结果表明,与现有的HSI去噪方法相比,我们提出的模型是有效的。我们的模型实现了显着的去噪性能的定量指标和重建图像的视觉质量。

三、改进YOLOv13,打造自己的新模型!

3.1 复制下述代码,新建MSFN.py文件至nn文件夹下

import sys
import torch
import torch.nn as nn
import torch.nn.functional as F
from pdb import set_trace as stx
import numbers
import math
import torch.nn as nn
import torch
from timm.models.layers import SqueezeExcite

from typing import Optional, Union, Sequence

from torch.nn.modules.conv import _ConvNd
from torch.nn.modules.utils import _pair
from torch.nn.parameter import Parameter
import functools
from torch.nn.modules.batchnorm import _BatchNorm
from mmcv.cnn import ConvModule, build_norm_layer
from mmengine.model import BaseModule, constant_init
from mmengine.model.weight_init import trunc_normal_init, normal_init
from mmengine.logging import MMLogger

from einops import rearrange
import os

class MSFN(nn.Module):
def __init__(self, dim, ffn_expansion_factor=2.66, bias=False):
super(MSFN, self).__init__()

hidden_features = int(dim*ffn_expansion_factor)

self.project_in = nn.Conv3d(dim, hidden_features*3, kernel_size=(1,1,1), bias=bias)

self.dwconv1 = nn.Conv3d(hidden_features, hidden_features, kernel_size=(3,3,3), stride=1, dilation=1, padding=1, groups=hidden_features, bias=bias)
# self.dwconv2 = nn.Conv3d(hidden_features, hidden_features, kernel_size=(3,3,3), stride=1, dilation=2, padding=2, groups=hidden_features, bias=bias)
# self.dwconv3 = nn.Conv3d(hidden_features, hidden_features, kernel_size=(3,3,3), stride=1, dilation=3, padding=3, groups=hidden_features, bias=bias)
self.dwconv2 = nn.Conv2d(hidden_features, hidden_features, kernel_size=(3,3), stride=1, dilation=2, padding=2, groups=hidden_features, bias=bias)
self.dwconv3 = nn.Conv2d(hidden_features, hidden_features, kernel_size=(3,3), stride=1, dilation=3, padding=3, groups=hidden_features, bias=bias)

self.project_out = nn.Conv3d(hidden_features, dim, kernel_size=(1,1,1), bias=bias)

def forward(self, x):
x = x.unsqueeze(2)
x = self.project_in(x)
x1,x2,x3 = x.chunk(3, dim=1)
x1 = self.dwconv1(x1).squeeze(2)
x2 = self.dwconv2(x2.squeeze(2))
x3 = self.dwconv3(x3.squeeze(2))
# x1 = self.dwconv1(x1)
# x2 = self.dwconv2(x2)
# x3 = self.dwconv3(x3)
x = F.gelu(x1)*x2*x3
x = x.unsqueeze(2)
x = self.project_out(x)
x = x.squeeze(2)
return x
#详细改进流程和操作,请关注B站博主:Ai学术叫叫兽
#详细改进流程和操作,请关注B站博主:Ai学术叫叫兽

3.2 在task.py中添加两段代码,如下图:

3.2.1 开头位置添加上(详情跟着我B站教程来,很详细。)

from ultralytics.nn.MSFN.py import MSFN

3.2.2 找到此图位置中,在下图代码下方添加:

在这里插入图片描述

3.3 新建MSFN.yaml文件,内容直接复制下方即可。(详情跟着我B站教程来:Ai学术叫叫兽,很详细。)

nc: 80 # number of classes
scales: # model compound scaling constants, i.e. 'model=yolov13n.yaml' will call yolov13.yaml with scale 'n'
# [depth, width, max_channels]
n: [0.50, 0.25, 1024] # Nano
s: [0.50, 0.50, 1024] # Small
l: [1.00, 1.00, 512] # Large
x: [1.00, 1.50, 512] # Extra Large

backbone:
# [from, repeats, module, args]
[-1, 1, Conv, [64, 3, 2]] # 0-P1/2
[-1, 1, Conv, [128, 3, 2, 1, 2]] # 1-P2/4
[-1, 2, DSC3k2, [256, False, 0.25]]
[-1, 1, Conv, [256, 3, 2, 1, 4]] # 3-P3/8
[-1, 2, DSC3k2, [512, False, 0.25]]
[-1, 1, DSConv, [512, 3, 2]] # 5-P4/16
[-1, 4, A2C2f, [512, True, 4]]
[-1, 1, DSConv, [1024, 3, 2]] # 7-P5/32
[-1, 4, A2C2f, [1024, True, 1]] # 8

head:
[[4, 6, 8], 2, HyperACE, [512, 8, True, True, 0.5, 1, "both"]]
[-1, 1, nn.Upsample, [None, 2, "nearest"]]
[ 9, 1, DownsampleConv, []]
[[6, 9], 1, FullPAD_Tunnel, []] #12
[[4, 10], 1, FullPAD_Tunnel, []] #13
[[8, 11], 1, FullPAD_Tunnel, []] #14

[-1, 1, nn.Upsample, [None, 2, "nearest"]]
[[-1, 12], 1, Concat, [1]] # cat backbone P4
[-1, 2, DSC3k2, [512, True]] # 17
[[-1, 9], 1, FullPAD_Tunnel, []] #18

[17, 1, nn.Upsample, [None, 2, "nearest"]]
[[-1, 13], 1, Concat, [1]] # cat backbone P3
[-1, 2, DSC3k2, [256, True]] # 21
[10, 1, Conv, [256, 1, 1]]
[[21, 22], 1, FullPAD_Tunnel, []] #23

[-1, 1, Conv, [256, 3, 2]]
[[-1, 18], 1, Concat, [1]] # cat head P4
[-1, 2, DSC3k2, [512, True]] # 26
[[-1, 9], 1, FullPAD_Tunnel, []]

[26, 1, Conv, [512, 3, 2]]
[[-1, 14], 1, Concat, [1]] # cat head P5
[-1, 2, DSC3k2, [1024,True]] # 30 (P5/32-large)
[[-1, 11], 1, FullPAD_Tunnel, []]
[-1, 1, MSFN, [1024]]

[[23, 27, 32], 1, Detect, [nc]] # Detect(P3, P4, P5)

写在最后

学术因方向、个人实验和写作能力以及具体创新内容的不同而无法做到一通百通,所以本文作者即B站Up主:Ai学术叫叫兽 在所有B站资料中留下联系方式以便在科研之余为家人们答疑解惑,本up主获得过国奖,发表多篇SCI,擅长目标检测领域,拥有多项竞赛经历,拥有软件著作权,核心期刊等经历。因为经历过所以更懂小白的痛苦!因为经历过所以更具有指向性的指导!

祝所有科研工作者都能够在自己的领域上更上一层楼!!!

所有科研参考资料均可点击此链接,合适的才是最好的,希望我的能力配上你的努力刚好合适!

请添加图片描述

赞(0)
未经允许不得转载:网硕互联帮助中心 » YOLOv13最新创新改进系列:粉丝福利!!融合最新顶会提出的HCANet网络中MSFN注意力融合模块,有效提升小目标检测性能!
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!