当前位置: 首页 > news >正文

基于Yolov8的野外烟雾检测(4):通道优先卷积注意力(CPCA),效果秒杀CBAM和SE等 | 中科院2023最新发表

   

目录

   

1.Yolov8介绍

2.野外火灾烟雾数据集介绍

 3.CPCA介绍

3.1 CPCA加入到yolov8

 4.训练结果分析

5.系列篇


1.Yolov8介绍

         Ultralytics YOLOv8是Ultralytics公司开发的YOLO目标检测和图像分割模型的最新版本。YOLOv8是一种尖端的、最先进的(SOTA)模型,它建立在先前YOLO成功基础上,并引入了新功能和改进,以进一步提升性能和灵活性。它可以在大型数据集上进行训练,并且能够在各种硬件平台上运行,从CPU到GPU。

具体改进如下:

  1. Backbone:使用的依旧是CSP的思想,不过YOLOv5中的C3模块被替换成了C2f模块,实现了进一步的轻量化,同时YOLOv8依旧使用了YOLOv5等架构中使用的SPPF模块;

  2. PAN-FPN:毫无疑问YOLOv8依旧使用了PAN的思想,不过通过对比YOLOv5与YOLOv8的结构图可以看到,YOLOv8将YOLOv5中PAN-FPN上采样阶段中的卷积结构删除了,同时也将C3模块替换为了C2f模块;

  3. Decoupled-Head:是不是嗅到了不一样的味道?是的,YOLOv8走向了Decoupled-Head;

  4. Anchor-Free:YOLOv8抛弃了以往的Anchor-Base,使用了Anchor-Free的思想;

  5. 损失函数:YOLOv8使用VFL Loss作为分类损失,使用DFL Loss+CIOU Loss作为分类损失;

  6. 样本匹配:YOLOv8抛弃了以往的IOU匹配或者单边比例的分配方式,而是使用了Task-Aligned Assigner匹配方式

框架图提供见链接:Brief summary of YOLOv8 model structure · Issue #189 · ultralytics/ultralytics · GitHub

2.野外火灾烟雾数据集介绍

数据集大小737张,train:val:test 随机分配为7:2:1,类别:smoke

 3.CPCA介绍

论文:[2306.05196] Channel prior convolutional attention for medical image segmentation (arxiv.org)

摘要:本文提出了一种高效的通道先验卷积注意力(CPCA)方法,支持注意力权重在通道和空间维度上的动态分布。 通过采用多尺度深度卷积模块,可以有效地提取空间关系,同时保留通道先验。 CPCA具备聚焦信息渠道和重要区域的能力。 基于 CPCA 提出了一种用于医学图像分割的分割网络 CPCANet。 CPCANet 在两个公开可用的数据集上进行了验证。 通过与最先进的算法进行比较,CPCANet 提高了分割性能,同时需要更少的计算资源。 

现有研究问题点:

虽然 CBAM 整合了通道注意和空间注意,但它在其输出特征的所有通道上强制执行一致的空间注意分布。相反,SE(图 1(a))只整合了通道注意,这限制了它选择重要区域的能力。

本文创新:

  • 如图 1(c) 所示,作者提出了一种新的通道优先卷积注意力(Channel Prior Convolutional Attention,CPCA)方法,采用多尺度的深度可分离卷积模块构成空间注意力,可以在通道和空间维度上动态分配注意权重。

 图3:通道先验卷积注意力(CPCA)的整体结构包括通道注意力和空间注意力的顺序放置。特征图的空间信息是由通道注意力通过平均池化和最大池化等操作来聚合的。 随后,空间信息通过共享 MLP(多层感知器)进行处理并添加以生成通道注意力图。 通道先验是通过输入特征和通道注意力图的元素相乘获得的。 随后,通道先验被输入到深度卷积模块中以生成空间注意力图。 卷积模块接收空间注意力图以进行通道混合。 最终,通过通道混合结果与通道先验的逐元素相乘,获得细化的特征作为输出。 通道混合过程有助于增强特征的表示

3.1 CPCA加入到yolov8

核心代码:

######################  CPCAAttention   ####     start   by  AI&CV  ###############################class CPCAChannelAttention(nn.Module):def __init__(self, input_channels, internal_neurons):super(CPCAChannelAttention, self).__init__()self.fc1 = nn.Conv2d(in_channels=input_channels, out_channels=internal_neurons, kernel_size=1, stride=1, bias=True)self.fc2 = nn.Conv2d(in_channels=internal_neurons, out_channels=input_channels, kernel_size=1, stride=1, bias=True)self.input_channels = input_channelsdef forward(self, inputs):x1 = F.adaptive_avg_pool2d(inputs, output_size=(1, 1))# print('x:', x.shape)x1 = self.fc1(x1)x1 = F.relu(x1, inplace=True)x1 = self.fc2(x1)x1 = torch.sigmoid(x1)x2 = F.adaptive_max_pool2d(inputs, output_size=(1, 1))# print('x:', x.shape)x2 = self.fc1(x2)x2 = F.relu(x2, inplace=True)x2 = self.fc2(x2)x2 = torch.sigmoid(x2)x = x1 + x2x = x.view(-1, self.input_channels, 1, 1)return x######################  CPCAAttention   ####     end   by  AI&CV  ###############################

核心代码:YoloV8优化:通道优先卷积注意力,效果秒杀CBAM和SE等 | 即插即用系列_AI小怪兽的博客-CSDN博客

 4.训练结果分析

训练结果如下:

原始mAP@0.5 0.839提升至0.890

YOLOv8_CPCAChannelAttention summary (fused): 171 layers, 3137427 parameters, 0 gradients, 7.8 GFLOPsClass     Images  Instances      Box(P          R      mAP50  mAP50-95):  67%|██████▋   | 2/3 [00:22<00:11, 11.59s/it]WARNING  NMS time limit 1.500s exceededClass     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 3/3 [00:28<00:00,  9.40s/it]all        148        148       0.92      0.854       0.89      0.547

5.系列篇

1)基于Yolov8的野外烟雾检测

2)基于Yolov8的野外烟雾检测(2):多维协作注意模块MCA| 2023.9最新发布

3)基于Yolov8的野外烟雾检测(3):动态蛇形卷积,实现暴力涨点 | ICCV2023

4)基于Yolov8的野外烟雾检测(4):通道优先卷积注意力(CPCA) | 中科院2023最新发表 

http://www.lryc.cn/news/170293.html

相关文章:

  • 程序员必掌握的核心算法:提升编程技能的关键路径
  • 面试算法10:和为k的子数组
  • 王道考研操作系统
  • HEXO 基本使用
  • Webpack Sourcemap文件泄露漏洞
  • WebGL层次模型——单节点模型
  • 【链表】反转链表 II-力扣 92 题
  • 【考研数学】高等数学第六模块 —— 空间解析几何(1,向量基本概念与运算)
  • 巨人互动|Facebook海外户Facebook客户反馈分数
  • Tomcat多实例部署和动静分离
  • 关于 C/C++ 中在指针前加 const 关键字的作用说明
  • Vue.js新手指南:从零开始建立你的第一个应用
  • 【案例】--EasyExcel导入导出文件案例
  • 深入探索图像处理:从基础到高级应用
  • Jetpack Compose基础组件 - Image
  • UINavigationController内的页面跳转实现 UIViewController 的 present和dismiss动画
  • PMP对项目管理工作有什么用?
  • Python 将‘20230919182550‘ 转换为 ‘%Y年%m月%d日 %H:%M‘
  • vue2.0检测无用的代码并删除
  • 小米华为,化干戈为玉帛!
  • 【文末赠书】SRE求职必会 —— 可观测性平台可观测性工程(Observability Engineering)
  • content生成自定义图标的方式是什么?
  • 无涯教程-JavaScript - SECH函数
  • 天宇微纳芯片ic测试软件如何测试芯片上下电功能?
  • 1万多爱背句子英语口语ACCESS\EXCEL数据库
  • C++:new 和 delete
  • mysql5.7版本的数据导入到mysql8.0版本需要怎么做
  • Python150题day06
  • 2023Node.js零基础教程(小白友好型),nodejs新手到高手,(一)NodeJS入门
  • 拉格朗日乘子法思路来源