【YOLO改进实验】探究“CA注意力机制”在YOLOv8n中的最佳嵌入位置:珊瑚礁白化检测实验
一、前言为提升水下珊瑚礁白化/死亡/健康检测精度本实验在YOLOv8n网络中引入CA注意力机制。通过将CACoordinate Attention模块嵌入不同位置骨干网浅、中、深层及颈部对比分析其对模型性能的影响旨在寻找最佳嵌入策略为水下目标检测的注意力优化提供依据。二、实验准备1、数据集来源——Roboflow本实验采用Roboflow平台上的Marjan balance Dataset作为数据来源。Roboflow是全球领先的计算机视觉平台提供数据集管理、标注、增强和模型部署的一站式服务。该数据集包含珊瑚礁白化状态的标注图像类别涵盖健康珊瑚Healthy、死亡珊瑚dead和白化珊瑚Bleached三种状态。2、YOLOv8模型(结合SPPELAN和PSA模块)本实验所采用的改进型YOLOv8模型融合了源自SPMamba‑YOLO架构的两大核心组件——SPPELAN模块S与PSA注意力模块P。其中SPPELANSpatial Pyramid Pooling with Efficient Layer Aggregation Network通过多分支池化与跨阶段特征融合显著扩展了模型的感受野增强了对水下珊瑚图像中多尺度目标的特征提取能力而PSAPyramid Split Attention则通过金字塔式的通道分割与注意力权重重标定使模型能够更敏感地聚焦于珊瑚颜色差异与局部纹理变化。该YOLOv8模型识别效果图本实验的YOLOv8模型资料来源从零开始SPMamba-yolo全流程部署文档模型训练脚本——train.pyfrom ultralytics import YOLO def train_yolov8(): # 初始化模型 # model YOLO(yolov8n.pt) # 这里使用预训练的模型权重 # 修改为自己的配置文件地址 model YOLO(E:/Graduation_project/ultralytics_yolov8/datasets/yolov8.yaml,verboseTrue) # 开始训练 model.train( datadata.yaml, # 数据集配置文件 epochs100, # 训练的轮数 imgsz640, # 输入图像尺寸 device0, # 使用的设备0表示使用第一个GPU workers1, # 数据加载的工作进程数 batch32 # 每批次的样本数量 ) if __name__ __main__: train_yolov8()注训练轮次epochs推荐为300轮3、Coordinate Attention注意力机制为了使模型在解码器部分能够更好地结合深浅层特征利用水平和垂直方向上的两个分支使模型能够动态地调整对不同方向上特征的关注程度以捕获更全面的空间信息然后利用自适应平均池化、卷积和激活函数等操作提高模型精确处理感兴趣特征效率的同时提升检测与定位的精确程度同时引入坐标注意力通过坐标信息嵌入模型将位置信息与特征图中的每个通道相关联然后利用注意力生成模型应用注意力机制来动态调整不同通道之间的关系以及捕获长期依赖关系并提供精确的位置信息。引用相关论文吴琛,唐贝贝,邵叱风.基于注意力机制和DeepLabv3的图像篡改检测方法[J].哈尔滨商业大学学报(自然科学版),2025,41(03):283-289.DOI:10.19492/j.cnki.1672-0946.2025.03.011.CA注意力机制嵌入方法含相关资料芒果YOLO11改进05免费最新结合即插即用CA(Coordinate attention) 注意力机制CVPR 顶会助力分类检测涨点问题与解决方法1发生NameError: name nn is not defined时需要导包在ca.py文件开头加入import torch import torch.nn as nn2发生NameError: nameno is not defined时需要将task.py文件中添加的if c2 ! no:改成if c2 ! nc:三、对比实验在模型中加入CACoordinate Attention注意力机制时其嵌入位置的选择会显著影响模型的性能表现。以下是几种常见的嵌入方案及其具体实现细节实验1、原始基线无CAyolov8.yaml# Ultralytics YOLO , AGPL-3.0 license # YOLOv8 object detection model with P3-P5 outputs. For Usage examples see https://docs.ultralytics.com/tasks/detect # Parameters nc: 3 # number of classes scales: # model compound scaling constants, i.e. modelyolov8n.yaml will call yolov8.yaml with scale n # [depth, width, max_channels] n: [0.33, 0.25, 1024] # YOLOv8n summary: 225 layers, 3157200 parameters, 3157184 gradients, 8.9 GFLOPs s: [0.33, 0.50, 1024] # YOLOv8s summary: 225 layers, 11166560 parameters, 11166544 gradients, 28.8 GFLOPs m: [0.67, 0.75, 768] # YOLOv8m summary: 295 layers, 25902640 parameters, 25902624 gradients, 79.3 GFLOPs l: [1.00, 1.00, 512] # YOLOv8l summary: 365 layers, 43691520 parameters, 43691504 gradients, 165.7 GFLOPs x: [1.00, 1.25, 512] # YOLOv8x summary: 365 layers, 68229648 parameters, 68229632 gradients, 258.5 GFLOPs # YOLOv8.0n backbone 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, Conv, [512, 3, 2]] # 5-P4/16 - [-1, 6, C2f, [512, True]] - [-1, 1, Conv, [1024, 3, 2]] # 7-P5/32 - [-1, 3, C2f, [1024, True]] - [-1, 1, SPPELAN, [1024, 256]] # 9 - [-1, 1, PSA, [1024]] # YOLOv8.0n head head: - [-1, 1, nn.Upsample, [None, 2, nearest]] - [[-1, 6], 1, Concat, [1]] # cat backbone P4 - [-1, 3, C2f, [512]] # 12 - [-1, 1, nn.Upsample, [None, 2, nearest]] - [[-1, 4], 1, Concat, [1]] # cat backbone P3 - [-1, 3, C2f, [256]] # 15 (P3/8-small) - [-1, 1, Conv, [256, 3, 2]] - [[-1, 13], 1, Concat, [1]] # cat head P4 - [-1, 3, C2f, [512]] # 18 (P4/16-medium) - [-1, 1, Conv, [512, 3, 2]] - [[-1, 9], 1, Concat, [1]] # cat head P5 - [-1, 3, C2f, [1024]] # 21 (P5/32-large) - [[16, 19, 22], 1, Detect, [nc]] # Detect(P3, P4, P5)实验效果实验2、替换PSA注意力机制# YOLOv8.0n backbone 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, Conv, [512, 3, 2]] # 5-P4/16 - [-1, 6, C2f, [512, True]] - [-1, 1, Conv, [1024, 3, 2]] # 7-P5/32 - [-1, 3, C2f, [1024, True]] - [-1, 1, SPPELAN, [1024, 256]] # 9 - [-1, 1, CA, [1024]] # YOLOv8.0n head head: - [-1, 1, nn.Upsample, [None, 2, nearest]] - [[-1, 6], 1, Concat, [1]] # cat backbone P4 - [-1, 3, C2f, [512]] # 12 - [-1, 1, nn.Upsample, [None, 2, nearest]] - [[-1, 4], 1, Concat, [1]] # cat backbone P3 - [-1, 3, C2f, [256]] # 15 (P3/8-small) - [-1, 1, Conv, [256, 3, 2]] - [[-1, 13], 1, Concat, [1]] # cat head P4 - [-1, 3, C2f, [512]] # 18 (P4/16-medium) - [-1, 1, Conv, [512, 3, 2]] - [[-1, 9], 1, Concat, [1]] # cat head P5 - [-1, 3, C2f, [1024]] # 21 (P5/32-large) - [[16, 19, 22], 1, Detect, [nc]] # Detect(P3, P4, P5)实验效果对比实验1结果显示mAP0.5指标下降11.6个百分点性能出现显著退化NG实验3、在SPPELAN与PSA之间# YOLOv8.0n backbone 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, Conv, [512, 3, 2]] # 5-P4/16 - [-1, 6, C2f, [512, True]] - [-1, 1, Conv, [1024, 3, 2]] # 7-P5/32 - [-1, 3, C2f, [1024, True]] - [-1, 1, SPPELAN, [1024, 256]] # 9 - [-1, 1, CA, [1024]] - [-1, 1, PSA, [1024]] # YOLOv8.0n head head: - [-1, 1, nn.Upsample, [None, 2, nearest]] - [[-1, 6], 1, Concat, [1]] # cat backbone P4 - [-1, 3, C2f, [512]] # 12 - [-1, 1, nn.Upsample, [None, 2, nearest]] - [[-1, 4], 1, Concat, [1]] # cat backbone P3 - [-1, 3, C2f, [256]] # 15 (P3/8-small) - [-1, 1, Conv, [256, 3, 2]] - [[-1, 14], 1, Concat, [1]] # cat head P4 - [-1, 3, C2f, [512]] # 18 (P4/16-medium) - [-1, 1, Conv, [512, 3, 2]] - [[-1, 9], 1, Concat, [1]] # cat head P5 - [-1, 3, C2f, [1024]] # 21 (P5/32-large) - [[17, 20, 23], 1, Detect, [nc]] # Detect(P3, P4, P5)实验效果对比实验1结果显示mAP0.5指标下降7个百分点性能出现显著退化NG对比实验2结果显示mAP0.5指标上升4.6个百分点性能取得明显改进OK实验4、在Neck的上采样融合之后P5级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, Conv, [512, 3, 2]] # 5-P4/16 - [-1, 6, C2f, [512, True]] - [-1, 1, Conv, [1024, 3, 2]] # 7-P5/32 - [-1, 3, C2f, [1024, True]] - [-1, 1, SPPELAN, [1024, 256]] # 9 - [-1, 2, PSA, [1024]] # YOLOv8.0n head head: - [-1, 1, nn.Upsample, [None, 2, nearest]] - [[-1, 6], 1, Concat, [1]] # cat backbone P4 - [-1, 3, C2f, [512]] # 12 - [-1, 1, nn.Upsample, [None, 2, nearest]] - [[-1, 4], 1, Concat, [1]] # cat backbone P3 - [-1, 3, C2f, [256]] # 15 (P3/8-small) - [-1, 1, Conv, [256, 3, 2]] - [[-1, 13], 1, Concat, [1]] # cat head P4 - [-1, 3, C2f, [512]] # 18 (P4/16-medium) - [-1, 1, Conv, [512, 3, 2]] - [[-1, 9], 1, Concat, [1]] # cat head P5 - [-1, 3, C2f, [1024]] # 21 (P5/32-large) - [-1, 3, CA, [1024]] - [[16, 19, 22], 1, Detect, [nc]] # Detect(P3, P4, P5)实验效果对比实验1结果显示mAP0.5指标上升1.2个百分点性能出现略微提升OK实验5、在Backbone每个阶段输出后# YOLOv8.0n backbone 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, CA, [256]] - [-1, 1, Conv, [512, 3, 2]] # 5-P4/16 - [-1, 6, C2f, [512, True]] - [-1, 1, CA, [512]] - [-1, 1, Conv, [1024, 3, 2]] # 7-P5/32 - [-1, 3, C2f, [1024, True]] - [-1, 1, CA, [1024]] - [-1, 1, SPPELAN, [1024, 256]] # 9 - [-1, 1, PSA, [1024]] # YOLOv8.0n head head: - [-1, 1, nn.Upsample, [None, 2, nearest]] - [[-1, 7], 1, Concat, [1]] # cat backbone P4 - [-1, 3, C2f, [512]] # 12 - [-1, 1, nn.Upsample, [None, 2, nearest]] - [[-1, 4], 1, Concat, [1]] # cat backbone P3 - [-1, 3, C2f, [256]] # 15 (P3/8-small) - [-1, 1, Conv, [256, 3, 2]] - [[-1, 16], 1, Concat, [1]] # cat head P4 - [-1, 3, C2f, [512]] # 18 (P4/16-medium) - [-1, 1, Conv, [512, 3, 2]] - [[-1, 12], 1, Concat, [1]] # cat head P5 - [-1, 3, C2f, [1024]] # 21 (P5/32-large) - [[19, 22, 25], 1, Detect, [nc]] # Detect(P3, P4, P5)实验效果对比实验1结果显示mAP0.5指标上升3.6个百分点性能出现显著提升OK对比实验4结果显示mAP0.5指标上升2.4个百分点性能出现明显提升OK四、实验结论实验结果表明实验5的效果最为显著。该实验训练的YOLOv8模型识别效果图

相关新闻

如何用独立截图工具将工作效率提升3倍:从信息捕获到智能处理的完整解决方案

如何用独立截图工具将工作效率提升3倍:从信息捕获到智能处理的完整解决方案

如何用独立截图工具将工作效率提升3倍:从信息捕获到智能处理的完整解决方案 【免费下载链接】QQScreenShot 电脑QQ截图工具提取版,支持文字提取、图片识别、截长图、qq录屏。默认截图文件名为ScreenShot日期 项目地址: https://gitcode.com/gh_mirrors/qq/QQScree…

2026/10/12 10:09:32 阅读更多 →
Mac 远程桌面体验:6 个工具的 macOS 适配情况整理

Mac 远程桌面体验:6 个工具的 macOS 适配情况整理

Mac 远程桌面体验:6 个工具的 macOS 适配情况整理 前言“你那边 Mac 上的稿子改好没?发我一下。” 周三晚上,我在公司用 Windows 加班,家里那台 Mac mini 上还开着没改完的设计文件。我想直接远程过去接着弄,打开平时那…

2026/10/3 10:36:59 阅读更多 →
pandapower:Python开源电网分析工具,从潮流计算到工业级应用

pandapower:Python开源电网分析工具,从潮流计算到工业级应用

1. 从Excel到电网:为什么我们需要pandapower 如果你在电力系统领域工作过,或者接触过电网分析,大概率对“潮流计算”这个词不陌生。简单来说,它就像给电网做一次全面的“体检”,计算在给定发电和负荷条件下&#xff0c…

2026/10/12 23:29:04 阅读更多 →

最新新闻

Triepoch | 认知发行:AI 不缺算力,缺的是专家级的判断力

Triepoch | 认知发行:AI 不缺算力,缺的是专家级的判断力

无数人都有过一种矛盾的体验:今天的 AI 越来越强大,参数越来越大、算力越来越足、生成速度越来越快,但真正落地到专业工作时,依旧“能用、不好用、不敢用”。它可以一秒生成海量内容,却始终做不出符合场景、贴合需求、…

2026/10/13 3:23:49 阅读更多 →
A股量化软件推荐 三款工具如何界定研究范围与风险过滤

A股量化软件推荐 三款工具如何界定研究范围与风险过滤

A股量化软件推荐,先确认你打算研究哪些股票,再选择软件。本文把BigQuant、牛股王股票和掘金量化放在同一任务下比较:保留研究范围的定义,解释风险过滤发生在哪里,并把筛选范围与账户可交易范围分开。希望审读数据过滤表…

2026/10/13 3:23:49 阅读更多 →
股票量化软件对比 三款工具怎样补齐买入与卖出规则

股票量化软件对比 三款工具怎样补齐买入与卖出规则

股票量化软件对比,先别只展示买入信号。本文比较青柠量化、牛股王股票和掘金量化,回答一条股票规则怎样成为有明确结束条件的交易研究。想在画布里检查入场与出场,先看青柠量化;希望通过交易模型配置买入、持有和卖出,…

2026/10/13 3:23:49 阅读更多 →
Python 模块导入报错 ModuleNotFoundError 从根源到实战排查指南

Python 模块导入报错 ModuleNotFoundError 从根源到实战排查指南

写 Python 代码最怕什么?不是业务逻辑绕不清楚,而是脚本写到一半,运行到 import 那一行,控制台直接甩给你一句 ModuleNotFoundError: No module named matplotlib。尤其是刚接触 Python 的新手,装完解释器兴冲冲跑第一…

2026/10/13 3:23:49 阅读更多 →
意图共鸣科技10月12日正式发布《认知律》——律,是不可被选择绕过的运行机制

意图共鸣科技10月12日正式发布《认知律》——律,是不可被选择绕过的运行机制

发布机构:东莞市意图共鸣科技有限公司 发布日期:2026年10月12日 作者:意图共鸣科技 文档类型:律前言本文档是律。不是方法论。不是框架。不是经验。不是理论。不是规范。律是不可被选择绕过的运行机制。绕过它,得到的不…

2026/10/13 3:23:49 阅读更多 →
【STM32C5教程】(4)GPIO 外部中断实验

【STM32C5教程】(4)GPIO 外部中断实验

欢迎关注 youcansxidian【嵌入式软件AI编程】专栏 【STM32C5教程】(1)STM32C5系列介绍 【STM32C5教程】(2)STM32CubeMX2 安装与STM32C5闪灯 【STM32C5教程】(3)GPIO 按键输入实验 【STM32C5教程】&#xff…

2026/10/13 3:22:49 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →