向AI转型的程序员都关注公众号 机器学习AI算法工程
传统卷积神经网络(CNN)通过局部感受野逐层提取特征,但缺乏动态聚焦关键区域的能力。后续提出的注意力机制(如SE、CBAM等)通过通道或空间维度增强特征表达,但仍存在显著缺陷:
维度割裂:多数方法独立处理通道或空间注意力,忽略跨维度关联(例如通道与空间特征的协同作用)。
信息损失:依赖全局平均池化(GAP)压缩特征,导致细节信息丢失,影响细粒度分类。
计算冗余:引入全连接层或复杂模块(如多分支结构),增加参数量和计算成本。
MCA(多维协作注意力)的提出旨在解决上述问题,通过轻量化设计实现通道、高度、宽度三个维度的协同建模,在动态捕捉关键特征的同时保持计算效率。
改进后的模型
-
多维协作注意力MCAM介绍
MCA(多维协作注意力)的核心在于打破传统注意力机制对通道与空间维度的割裂式处理,通过多维度协同感知与动态轻量化计算,让网络更智能地捕捉特征间的复杂关联。其本质是让模型同时回答三个问题:“哪些特征重要”(通道维度)、“重要特征在垂直方向的位置”(高度维度)、“重要特征在水平方向的位置”(宽度维度),并将三者动态融合。例如,识别一只鸟时,MCA不仅会增强“羽毛纹理”对应的通道,还能在空间上聚焦“头部区域”,且这种多维度判断是相互关联的——羽毛纹理的显著性可能影响头部定位的权重。为实现这一目标,MCA摒弃了传统全连接层等复杂结构,转而通过一维卷积和动态门控机制,在几乎不增加计算量的前提下实现跨维度信息交互。
从提供的图片来看,MCAM模块主要包含以下几个部分:
MCA的整体结构由三个并行的注意力分支(通道、高度、宽度)和一个动态聚合模块组成,每个分支通过维度旋转和轻量化计算实现多维度协作,以下是详细描述:
-
通道分支:通道分支直接处理输入特征图的通道维度。首先,对每个通道同时计算全局平均池化(提取特征整体强度)和全局标准差池化(衡量特征分布的离散程度),两种统计量通过可学习权重融合,形成更全面的通道描述。融合后的统计量通过一维卷积(而非全连接层)生成通道注意力权重,该卷积仅需极少的参数量即可捕捉通道间局部依赖关系。最后,权重与原始特征逐通道相乘,强化重要通道(如与目标类别相关的特征通道)的响应,抑制冗余通道。
-
高度分支:高度分支的目标是定位垂直方向(图像上下区域)的关键位置。为实现轻量化设计,将输入特征图旋转,使高度维度转换为“伪通道”维度。例如,原始特征维度为“通道×高度×宽度”(如64×224×224),旋转后变为“高度×通道×宽度”(224×64×224),此时每个“伪通道”对应原始图像的一行像素。随后,复用通道分支的流程:对每个“伪通道”计算均值与标准差统计量,融合后通过一维卷积生成高度注意力权重。例如,在行人检测任务中,高度分支可能增强图像中上部(对应人体头部和躯干)的权重。最后将加权后的特征逆旋转回原始维度,完成垂直方向的特征增强。
-
宽度分支:宽度分支与高度分支对称,关注水平方向(图像左右区域)的重要性。通过旋转操作将宽度维度转换为“伪通道”,例如原始特征变为“宽度×高度×通道”(224×224×64),每个“伪通道”对应原始图像的一列像素。复用通道分支的统计量融合与一维卷积生成宽度注意力权重。例如,在车辆检测中,宽度分支可能强化图像左右两侧(对应车轮位置)的特征响应。逆旋转后恢复原始维度,完成水平方向的特征增强。
-
动态门控与特征聚合
动态门控:在三个分支的一维卷积中引入轻量级自适应机制。根据输入特征的复杂度(如通过特征方差简单判断),动态选择卷积核大小。例如,复杂场景(如密集的树叶纹理)使用较大的卷积核(如核大小5),增强长程维度交互;简单场景(如纯色背景)则使用较小卷积核(如核大小3),减少计算量。 特征聚合:将通道、高度、宽度分支的输出特征按元素取平均值,综合三个维度的注意力结果。例如,在鸟类识别中,通道分支增强羽毛纹理,高度分支聚焦头部区域,宽度分支定位翅膀伸展方向,聚合后形成判别性更强的特征表达。
-
YOLOv11与MCAM的结合
基于上述的想法,本文将其与A2C2f相结合,通过通道、高度、宽度三向协同建模,动态增强关键特征。同时MCA可显著提升多尺度目标检测精度(如小物体识别)
- DSAM代码部分
通过网盘分享的文件:YOLOv12模块
链接:https://pan.quark.cn/s/0f1b4a80e2a6
提取码:q8xV
- 将DSAM引入到YOLOv12中
第一: 先新建一个v12_changemodel,将下面的核心代码复制到下面这个路径当中,如下图如所示。
E:\Part_time_job_orders\YOLO_NEW\YOLOv12\ultralytics\v12_changemodel。
第二:在task.py中导入包
第三:在task.py中的模型配置部分下面代码
第四:将模型配置文件复制到YOLOV12.YAMY文件中
第五:运行代码
from ultralytics.models import NAS, RTDETR, SAM, YOLO, FastSAM, YOLOWorld
if __name__=="__main__":
# 使用自己的YOLOv12.yamy文件搭建模型并加载预训练权重训练模型
model = YOLO(r"E:\Part_time_job_orders\YOLO_NEW\YOLOv12\ultralytics\cfg\models\12\yolo12_MCAM.yaml")\
.load(r'E:\Part_time_job_orders\YOLO_NEW\YOLOv12\yolo12n.pt') # build from YAML and transfer weights
results = model.train(data=r'E:\Part_time_job_orders\YOLO\YOLOv12\ultralytics\cfg\datasets\VOC_my.yaml',
epochs=300,
imgsz=640,
batch=64,
# cache = False,
# single_cls = False, # 是否是单类别检测
# workers = 0,
# resume=r'D:/model/yolov8/runs/detect/train/weights/last.pt',
amp = True
)
机器学习算法AI大数据技术
搜索公众号添加: datanlp
长按图片,识别二维码
阅读过本文的人还看了以下文章:
整理开源的中文大语言模型,以规模较小、可私有化部署、训练成本较低的模型为主
基于40万表格数据集TableBank,用MaskRCNN做表格检测
《深度学习入门:基于Python的理论与实现》高清中文PDF+源码
2019最新《PyTorch自然语言处理》英、中文版PDF+源码
《21个项目玩转深度学习:基于TensorFlow的实践详解》完整版PDF+附书代码
PyTorch深度学习快速实战入门《pytorch-handbook》
【下载】豆瓣评分8.1,《机器学习实战:基于Scikit-Learn和TensorFlow》
李沐大神开源《动手学深度学习》,加州伯克利深度学习(2019春)教材
【Keras】完整实现‘交通标志’分类、‘票据’分类两个项目,让你掌握深度学习图像分类
如何利用全新的决策树集成级联结构gcForest做特征工程并打分?
Machine Learning Yearning 中文翻译稿
斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)
中科院Kaggle全球文本匹配竞赛华人第1名团队-深度学习与特征工程
不断更新资源
深度学习、机器学习、数据分析、python
搜索公众号添加: datayx