在过去十年中,学习范式不断演进,深度网络大量涌现,多基于线性投影与非线性激活融合的模块。自注意力机制在自然语言处理和计算机视觉领域广泛应用,但存在效率不高、注意力复杂度随令牌数量增加而二次增长的问题。近期,通过元素乘法融合不同子空间特征的新学习范式受到关注,即星运算。它在自然语言处理和计算机视觉等多个领域展现出良好性能与效率,但此前对其应用的基础原理缺乏深入探索,多为基于直觉和假设的解释,这为理解和有效利用星运算带来挑战。在此背景下,研究人员提出 StarNet,以验证星运算在高效网络中的有效性 。
上面是原模型,下面是改进模型
1. StarNet介绍
星运算能够将输入映射到高维非线性特征空间,类似于核技巧。在单隐藏层神经网络中,星运算可重写为多项求和形式,能扩展出约(2d)2个线性独立维度,在不增加计算开销的情况下显著扩大特征维度。通过堆叠多层星运算,可指数级增加隐式维度,使网络能在低维空间计算的同时获得高维特征表示,这一特性使星运算适合用于高效网络设计 。
从提供的图片来看,StarNet模块主要包含以下几个部分:
StarNet 采用 4 阶段分层架构,使用卷积层进行下采样,通过修改后的演示块(demo block)进行特征提取。为提高效率,将层归一化(Layer Normalization)替换为批归一化(Batch Normalization),并置于深度可分离卷积之后(推理时可融合)。受 MobileNeXt 启发,在每个块的末尾加入深度可分离卷积。通道扩展因子固定为 4,网络宽度在每个阶段翻倍。演示块中的 GELU 激活函数替换为 ReLU6。通过改变块数量和输入嵌入通道数构建不同规模的 StarNet 。
2. YOLOv11与StarNet 的结合
用 StarNet 替换 YOLOv11 的 backbone,能凭借其独特的星运算高效映射到高维非线性特征空间,在不增加过多计算量的情况下提升特征提取能力,从而可能增强 YOLOv1对复杂目标的识别精度;同时,StarNet 结构简洁、运行速度快,有望降低模型整体延迟,使检测效率得到显著提升。
3. StarNet代码部分
视频讲解:
YOLOv8_improve/YOLOv11.md at master · tgf123/YOLOv8_improve · GitHub
YOLOv11模型改进讲解,教您如何修改YOLOv11_哔哩哔哩_bilibili
YOLOv11全部代码,现有几十种改进机制。
4. StarNet引入到YOLOv11中
第一: 将下面的核心代码复制到D:\model\yolov11\ultralytics\change_models路径下,如下图所示。
第二:在task.py中导入包
第三:在YOLOv11\ultralytics\nn\tasks.py中的模型配置部分下面代码
第四:将模型配置文件复制到YOLOV11.YAMY文件中
第五:运行成功
from ultralytics.models import NAS, RTDETR, SAM, YOLO, FastSAM, YOLOWorld
if __name__=="__main__":
# 使用自己的YOLOv8.yamy文件搭建模型并加载预训练权重训练模型
model = YOLO(r"E:\bilibili\model\YOLOV8_new\ultralytics-main\ultralytics\cfg\models\11\yolo11_starnet_s4.yaml")\
# .load(r'E:\bilibili\model\YOLOV8_new\ultralytics-main\yolo11n.pt') # build from YAML and transfer weights
results = model.train(data=r'D:\model\yolov11\ultralytics\cfg\datasets\VOC_my.yaml',
epochs=300,
imgsz=640,
batch=32,
# cache = False,
# single_cls = False, # 是否是单类别检测
# workers = 0,
# resume='',
amp = True
)