一、本文介绍
本文记录的是利用焦点调制模块Focal Modulation改进YOLOv11的方法研究。Focal Modulation
利用深度可分离卷积层
实现的焦点语境化来编码从短到长范围的视觉语境,通过门控聚合
有选择性地为每个查询标记收集语境到调制器中,并利用逐元素仿射变换
将调制器注入查询,优化了对视觉任务中标记交互的建模能力,提高模型性能。
专栏目录:YOLOv11改进目录一览 | 涉及卷积层、轻量化、注意力、损失函数、Backbone、SPPF、Neck、检测头等全方位改进
专栏地址:YOLOv11改进专栏——以发表论文的角度,快速准确的找到有效涨点的创新点!
二、Focal Modulation结构详解
Focal Modulation Networks
2.1 设计出发点
- 对自注意力机制的思考:自注意力(SA)机制在视觉任务中虽有优势,但存在计算复杂度高的问题,尤其是对于高分辨率输入。许多研究通过各种方法改进SA,但作者思考是否存在比SA更好的方式来建模输入相关的长程交互。
- 现有相关工作的启发:一些研究通过在SA中增加卷积操作来捕捉长程依赖并兼顾局部结构,但作者希望探索一种全新的机制。受焦点注意力的启发,作者尝试先聚集每个查询周围的上下文,然后用聚集的上下文自适应地调制查询,从而提出Focal Modulation机制。
2.2 原理
2.2.1 从自注意力到焦点调制
- 自注意力(SA):使用晚期聚合程序,先计算查询和目标之间的注意力分数,然后对上下文进行聚合。
- 焦点调制(Focal Modulation):采用早期聚合程序,先在每个位置聚合上下文特征,然后查询与聚合后的特征进行交互。
2.2.2 上下文聚合
分层语境化(Hierarchical Contextualization):通过一系列深度可分离卷积层,从局部到全局范围提取不同粒度级别的上下文,每层的输出通过线性层投影和激活函数得到。
- 门控聚合(Gated Aggregation):根据查询内容,使用线性层获取空间和层级感知的门控权重,对不同粒度级别的上下文特征进行加权求和,得到单个特征图,再通过另一个线性层得到调制器。
2.2.3 焦点调制操作
- 在得到调制器后,通过查询投影函数和元素级乘法将调制器注入到查询中,实现焦点调制。
2.3 结构
- 网络架构:使用与Swin和Focal Transformers相同的阶段布局和隐藏维度,但将SA模块替换为Focal Modulation模块。通过指定焦点级别数量和每个级别的内核大小来构建不同的Focal Modulation Network(FocalNet)变体。
- 模块组成
- 深度可分离卷积层:用于分层语境化,提取不同层次的上下文特征。
- 线性层:用于投影、获取门控权重以及生成调制器等操作。
2.4 优势
- 计算效率
- 参数数量:整体可学习参数数量主要由几个线性投影和深度可分离卷积决定,相较于一些对比模型,模型大小可通过调整相关参数得到控制。
- 时间复杂度:除了线性投影和深度可分离卷积层,元素级乘法对每个视觉标记引入的复杂度相对较低,相比Swin Transformer的窗口注意力和ViT的普通自注意力,具有一定优势。
- 性能优势
- 在多个任务上超越对比模型:在图像分类、目标检测和语义分割等任务上,FocalNets始终显著优于SoTA SA相关模型(如Swin和Focal Transformers),在不同的数据集和评估指标上均有体现。
- 模型解释性强:通过可视化调制器、门控权重等,可以直观地看到模型对不同区域的关注和信息聚合方式,为模型解释提供了新的途径。
三、实现代码及YOLOv11修改步骤
模块完整介绍、个人总结、实现代码、模块改进、二次创新以及各模型添加步骤参考如下地址: