一、本次改进是在yolov10的基础上添加注意力机制LSKA模块
LSKA(Large Separable Kernel Attention)是一种用于计算机视觉任务的新型注意力机制,旨在通过使用大尺寸可分离卷积核来增强模型的特征提取能力。
论文地址:https://arxiv.org/pdf/2309.01439.pdf
LSKA的主要特点和创新:
-
可学习的缩放核: LSKA提出的关键创新在于使用了可学习的缩放核来对注意力分配进行加权,这与传统的注意力机制不同。传统的自注意力机制通常使用固定的权重矩阵来计算注意力,而LSKA使用缩放核,这些核的参数是可以通过训练数据自动学习到的。
-
提高效率: 传统的自注意力机制计算量大,尤其是在处理长序列时,计算复杂度为O(n²),其中n是序列长度。LSKA通过引入缩放核,能够有效减少计算量,提高注意力机制的效率。
-
更好的信息流动: LSKA通过动态地调整注意力权重,使得信息能够更加有效地在不同层次之间流动。缩放核使得模型能够在不同的上下文之间找到更合适的关联,提升了模型的性能。
-
适应性强: 由于核是可学习的,LSKA能够根据不同任务的需求灵活调整注意力的方式。这使得它在多种自然语言处理(NLP)任务中都有较好的表现。
二、LSKA的yaml文件
# Ultralytics YOLO 🚀, AGPL-3.0 license
# YOLOv10 object detection model. For Usage examples see https://docs.ultralytics.com/tasks/detect
# Parameters
nc: 80 # number of classes
scales: # model compound scaling constants, i.e. 'model=yolov10n.yaml' will call yolov10.yaml with scale 'n'
# [depth, width, max_channels]
n: [0.33, 0.25, 1024]
backbone:
# [from, repeats, module, args]
- [-1, 1, Conv, [64, 3, 2]] # 0-P1/2
- [-1, 1, Conv, [128, 3, 2]] # 1-P2/4
- [-1, 3, C2f, [128, True]]
- [-1, 1, Conv, [256, 3, 2]] # 3-P3/8
- [-1, 6, C2f, [256, True]]
- [-1, 1, SCDown, [512, 3, 2]] # 5-P4/16
- [-1, 6, C2f, [512, True]]
- [-1, 1, SCDown, [1024, 3, 2]] # 7-P5/32
- [-1, 3, C2f, [1024, True]]
- [-1, 1, SPPF, [1024, 5]] # 9
- [-1, 1, PSA, [1024]] # 10
# YOLOv10.0n head
head:
- [-1, 1, nn.Upsample, [None, 2, "nearest"]]
- [[-1, 6], 1, Concat, [1]] # cat backbone P4
- [-1, 3, C2f, [512]] # 13
- [-1, 1, nn.Upsample, [None, 2, "nearest"]]
- [[-1, 4], 1, Concat, [1]] # cat backbone P3
- [-1, 3, C2f, [256]] # 16 (P3/8-small)
- [-1, 1, LSKA, []] # 17 (P3/8-small) 小目标
- [-1, 1, Conv, [256, 3, 2]]
- [[-1, 13], 1, Concat, [1]] # cat head P4
- [-1, 3, C2f, [512]] # 20 (P4/16-medium)
- [-1, 1, LSKA, []] # 21 (P4/16-medium) 中目标
- [-1, 1, SCDown, [512, 3, 2]]
- [[-1, 10], 1, Concat, [1]] # cat head P5
- [-1, 3, C2fCIB, [1024, True, True]] # 24 (P5/32-large)
- [-1, 1, LSKA, []] # 25 (P5/32-large) 大目标
- [[17, 21, 25], 1, v10Detect, [nc]] # Detect(P3, P4, P5)
三、添加完改进代码更换yaml文件就可以运行了
python train.py