人类视觉系统通过自上而下的注意力机制(Top-down Attention)实现高效感知:首先获取场景的整体概览(Overview First),识别显著线索,随后进行精细化局部分析(Look Closely Next)。这种机制通过反馈信号引导视觉处理,提升目标定位和分类的准确性。
现有卷积网络的局限性主流卷积网络(如 ResNet、ConvNeXt)采用层级金字塔结构,通过下采样扩大感受野,但缺乏显式的自上而下语义引导,导致中间层特征难以准确定位目标(如图 2 所示,传统模型在远离分类器的阶段难以正确激活目标区域)。现有动态卷积方法(如 Deformable Conv)虽能建模局部变化,但难以同时捕捉长程依赖和保持局部归纳偏置,在大分辨率输入时性能受限。
上面是原模型,下面是改进模型

1. OverLoCK介绍
OverLoCK 的理论核心是模拟人类视觉系统的自上而下注意力机制(Top-down Attention),提出 *深阶段分解策略(DDS将网络拆分为三个协同子网络:
Base-Net提取中低层特征,Overview-Net通过粗粒度全局建模生成动态语义先验(模拟 “先概览” 过程),Focus-Net在全局先验引导下进行精细化特征感知(模拟 “后精修” 过程)。
结合上下文混合动态卷积(ContMix),通过计算输入特征与全局区域中心的亲和度生成动态卷积核,使每个像素的卷积操作融合全局语义信息,既突破传统卷积的固定核限制以建模长程依赖,又保留局部归纳偏置捕捉细节。
OverLoCK 的结构独特且高效,主要由三个并行的子网络组成,它们相互协作以实现强大的特征提取能力。
输入图像首先进入 Base - Net,该网络负责提取中低层特征,将图像下采样至H/16×W/16分辨率。之后,Base - Net 的输出被分为两条路径。一条路径连接到 Overview - Net,此网络会进一步将特征下采样至H/32×W/32,从而生成全局上下文先验,为后续的特征提取提供全局语义信息。另一条路径则通向 Focus - Net,这是特征提取的关键部分。
Focus - Net 以动态块为核心构建。每个动态块包含 3×3 深度卷积来捕捉局部细节,门控动态空间聚合器(GDSA)结合上下文混合动态卷积(ContMix)和门控机制,有效抑制上下文噪声,同时实现长程依赖建模。此外,还有 ConvFFN 增强特征的非线性表达。在 Focus - Net 中,上下文先验与输入特征通过拼接、门控机制和动态卷积实现特征级与权重级的双重引导。而且,上下文先验在每个块中会不断更新,通过残差连接防止信息稀释,保证了网络能够充分利用全局和局部信息,在多种视觉任务中展现出出色的性能。
2. YOLOv11与OverLoCK的结合
OverLoCK 替换 YOLO 主干时,借人类视觉 “先概览后精修” 机制提升目标定位精度,动态卷积自适应捕捉全局与局部特征,对多尺度目标检测更鲁棒,且纯卷积架构高效易部署,平衡速度与性能。
3. OverLoCK代码部分
视频讲解:
YOLOv8_improve/YOLOv11.md at master · tgf123/YOLOv8_improve · GitHub
YOLOv11模型改进讲解,教您如何替换原有的YOLO11 backbone提升精度_哔哩哔哩_bilibili
用一篇论文教您如何使用YOLOv11改进模块写一篇1、2区论文_哔哩哔哩_bilibili
YOLOv11模型改进讲解,教您如何修改YOLOv11_哔哩哔哩_bilibili
YOLOv11全部代码,现有一百多种改进机制。
4. TOverLoCK引入到YOLOv11中
第一: 将下面的核心代码复制到D:\model\yolov11\ultralytics\change_models路径下,如下图所示。
第二:在task.py中导入包
第三:在YOLOv11\ultralytics\nn\tasks.py中的模型配置部分下面代码
第四:将模型配置文件复制到YOLOV11.YAMY文件中
第五:运行成功
from sympy import false
from ultralytics.models import NAS, RTDETR, SAM, YOLO, FastSAM, YOLOWorld
if __name__=="__main__":
# 使用自己的YOLOv8.yamy文件搭建模型并加载预训练权重训练模型
model = YOLO(r"EE:\bilibili\model\YOLOV8_new\ultralytics-main\ultralytics\cfg\models\11\yolo11_overlock_s.yaml")\
.load(r'E:\Part_time_job_orders\YOLO\YOLOv11\yolo11n.pt') # build from YAML and transfer weights
results = model.train(data=r'E:\Part_time_job_orders\YOLO\YOLOv11\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
)