YOLO11 改进、魔改|RFA(Receptive Field Aggregator)通过分层聚合多尺度感受野,提高多尺度目标检测能力
在卷积神经网络(ConvNets)发展中,构建长程依赖关系成为关键需求 —— 传统小核(如 3×3)ConvNet 虽能通过堆叠保持有效感受野(ERF)的渐近高斯分布(AGD,即中心像素对输出影响更大、边缘像素影响递减的合理特征权重分布),但 ERF 规模有限,难以捕捉全局上下文;而大核(如 31×31、51×51)ConvNet 虽扩大了 ERF,却存在参数与计算量(FLOPs)激增的问题,且破坏了 AGD,导致特征权重分布紊乱(如异常位置像素影响过强或不同尺度像素影响趋同),难以平衡性能与效率。为此,RFA 应运而生,旨在通过合理组合小核,解决 “扩大 ERF” 与 “保持 AGD”“控制参数量” 之间的矛盾,为不同尺度的 ConvNet 提供高效的感受野优化方案。
1.RFA原理
RFA 从感受野调控角度出发,核心原理是通过分层设计与组件协作,在聚合多尺度感受野的同时维持 AGD,并降低参数成本。其通过将输入特征沿通道维度拆分為多个头部,利用 “金字塔式通道增量” 策略减少冗余计算;再通过核心组件 Layer Operator(LO)的两大模块 ——Amplifier(Amp)与 Discriminator(Dis)协同工作:Amp 通过深度可分离大核卷积与逐元素乘法,扩大感受野尺度并放大关键像素(如目标核心区域像素)的影响;Dis 则引入小核卷积,为 Amp 生成的大感受野补充小尺度新像素(如目标边缘、细节区域像素)的特征贡献,构建两层 AGD。通过堆叠多个 RFA 模块,最终使 ERF 达到大核 ConvNet 的规模,同时保持从中心到边缘的 AGD 特性,实现 “大感受野 + 合理特征权重 + 低参数量” 的统一。
RFA 的结构以 “分层聚合” 为核心,分为多头部输入拆分与Layer Operator(LO)堆叠两部分,具体如下:
- 输入头部拆分:根据 RFA 的层数 N,将输入特征沿通道维度拆分为 N+1 个头部(记为 A₁、H₁~H_N)。其中 A₁为 “基础头部”,初始通道数为 C/(N+1)(C 为输入总通道数);H₁~H_N 为 “辅助头部”,用于与 A₁经 LO 处理后的特征交互。
- Layer Operator(LO)设计:LO 是 RFA 的核心单元,每个 LO 含 Amp 与 Dis 两个组件:
- Amp:接收经 1×1 卷积投影的特征 aₙ₁与 aₙ₂,对 aₙ₁先做 GELU 激活再进行深度可分离大核(如 7×7、9×9)卷积,随后与 aₙ₂逐元素乘法,实现感受野扩大与关键像素影响放大;
- Dis:接收经 1×1 卷积投影的特征 hₙ,通过深度可分离大核与小核(如 3×3)卷积结合,为 Amp 的大感受野补充小尺度特征;
- 输出融合:Amp 与 Dis 的输出拼接,得到通道数增量为 C/(N+1) 的新头部 Aₙ₊₁,实现 “感受野扩展 + AGD 维持 + 通道适配”。
- 金字塔式通道聚合:A₁依次输入 LO1~LON,通道数从 C/(N+1) 逐步增至 C;H₁~H_N 按层号对应输入 LO1~LON,与 A 系列头部交互,最终所有头部融合为完整特征,完成多尺度感受野聚合。
2. RFA习作思路
在目标检测中的优点
基于 “扩大 ERF + 保持 AGD + 低参数量” 的核心特性,RFA 在目标检测中能显著提升任务适配性:其大 ERF 可覆盖不同尺度目标(从远距离小目标到近距离大目标),尤其能捕捉大目标的全局上下文与小目标的局部关键特征;AGD 特性使目标中心像素(如物体主体)与边缘像素(如物体轮廓)形成合理的权重梯度,提升目标定位精度,减少因特征权重紊乱导致的误检(如将背景纹理误判为目标)与漏检(如遗漏小目标);同时,金字塔式通道增量与 1×1 卷积的特征融合设计,在保证感受野规模的同时控制了参数量与计算量,避免检测速度下降,契合目标检测对 “精度 - 速度平衡” 的需求。
在分割中的优点
结合多尺度感受野聚合与 AGD 调控能力,RFA 在语义分割中可优化像素级分类效果:其大 ERF 能整合全局语义信息(如场景上下文,区分 “街道上的车” 与 “停车场的车”),避免因感受野有限导致的同类区域误分;AGD 特性使分割区域的核心像素(如前景物体内部)与边界像素(如前景 - 背景过渡区)权重合理分配,减少边界模糊问题(如区分 “树叶” 与 “树枝” 的细微边界);此外,分层头部处理能保留多尺度纹理特征(如物体表面纹理、细小结构),提升细粒度分割精度,且低参数量设计保证了像素级处理的实时性,避免因复杂计算导致分割延迟。
3. YOLO与RFA的结合
YOLO 系列强调实时性与端到端检测,RFA 的加入可在不牺牲速度的前提下提升 YOLO 的检测性能:一方面,RFA 扩大的 ERF 能增强 YOLO 对小目标与密集目标的捕捉能力,减少因感受野不足导致的小目标漏检;另一方面,其 AGD 特性与低参数量设计,可让 YOLO 在保持高推理速度的同时,优化目标定位精度与类别区分能力,尤其适配 YOLO 在实时场景(如实时监控、自动驾驶)中的应用需求。
4.RFA代码部分
YOLO11|YOLO12|改进| RFA(Receptive Field Aggregator)通过分层聚合多尺度感受野,提高多尺度目标检测能力_哔哩哔哩_bilibili
YOLOv11模型改进讲解,教您如何修改YOLOv11_哔哩哔哩_bilibili
代码获取:YOLOv8_improve/YOLOV12.md at master · tgf123/YOLOv8_improve · GitHub
5. RFA到YOLOv11中
第一: 将下面的核心代码复制到D:\model\yolov11\ultralytics\change_model路径下,如下图所示。
第二:在task.py中导入包
第三:在task.py中的模型配置部分下面代码
第四:将模型配置文件复制到YOLOV11.YAMY文件中
第五:运行代码
from ultralytics.models import NAS, RTDETR, SAM, YOLO, FastSAM, YOLOWorld
import torch
if __name__=="__main__":# 使用自己的YOLOv8.yamy文件搭建模型并加载预训练权重训练模型model = YOLO("/home/shengtuo/tangfan/YOLO11/ultralytics/cfg/models/11/yolo11_RFA.yaml")\# .load(r'E:\Part_time_job_orders\YOLO\YOLOv11\yolo11n.pt') # build from YAML and transfer weightsresults = model.train(data="/home/shengtuo/tangfan/YOLO11/ultralytics/cfg/datasets/VOC_my.yaml",epochs=300,imgsz=640,batch=4,# cache = False,# single_cls = False, # 是否是单类别检测# workers = 0,# resume=r'D:/model/yolov8/runs/detect/train/weights/last.pt',amp = False)