【YOLOv5改进系列(10)】高效涨点----将CAM(上下文增强模块)添加到Neck特征融合模块当中

本文主要是介绍【YOLOv5改进系列(10)】高效涨点----将CAM(上下文增强模块)添加到Neck特征融合模块当中,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述


文章目录

  • 🚀🚀🚀前言
  • 一、1️⃣ 添加位置
  • 二、2️⃣修改代码内容
  • 三、3️⃣参数量变化
  • 四、4️⃣实验结果
    • 4.1 🎓 替换掉SPPF实验结果
    • 4.2 ✨在Neck部分添加CAM


在这里插入图片描述

👀🎉📜系列文章目录

【YOLOv5改进系列(1)】高效涨点----使用EIoU、Alpha-IoU、SIoU、Focal-EIOU替换CIou
【YOLOv5改进系列(2)】高效涨点----Wise-IoU详细解读及使用Wise-IoU(WIOU)替换CIOU
【YOLOv5改进系列(3)】高效涨点----Optimal Transport Assignment:OTA最优传输方法
【YOLOv5改进系列(4)】高效涨点----添加可变形卷积DCNv2
【YOLOv5改进系列(5)】高效涨点----添加密集小目标检测NWD方法
【YOLOv5改进系列(6)】高效涨点----使用DAMO-YOLO中的Efficient RepGFPN模块替换yolov5中的Neck部分
【YOLOv5改进系列(7)】高效涨点----使用yolov8中的C2F模块替换yolov5中的C3模块
【YOLOv5改进系列(8)】高效涨点----添加yolov7中Aux head 辅助训练头
【YOLOv5改进系列(9)】高效涨点----使用CAM(上下文增强模块)替换掉yolov5中的SPPF模块

🚀🚀🚀前言

🚀在yolov5改进系列[9]里面我是已经将CAM模块替换掉了backbone最后一层的SPPF模块,经过实验可以得出,在我自己的钢轨表面疵点数据集上使用adaptive连接方式涨点效果最优map@0.5提升了7个百分点。后来发现在Neck特征融合部分也能添加CAM模块这里就在PANet的stage=1/32concat特征融合之前添加CAM模块进行处理


一、1️⃣ 添加位置

在下面蓝色框部分添加CAM模块,用于检测大目标物体。如果有兴趣的也可以试一试分别添加到PANet的stage为16、8这两个部位。
在这里插入图片描述

二、2️⃣修改代码内容

📌其实就是在yolov5s_CAM.yaml文件中的head部分,最后一个stage上添加了CAM模块并指定连接方式,添加内容如下:
在这里插入图片描述
也可以将下面代码复制到yolov5s_CAM.yaml

### yolov5 cam yaml
nc: 80  # number of classes
depth_multiple: 0.33  # model depth multiple
width_multiple: 0.50  # layer channel multiple
anchors:- [10,13, 16,30, 33,23]  # P3/8- [30,61, 62,45, 59,119]  # P4/16- [116,90, 156,198, 373,326]  # P5/32# YOLOv5 v6.0 backbone
backbone:# [from, number, module, args][[-1, 1, Conv, [64, 6, 2, 2]],  # 0-P1/2[-1, 1, Conv, [128, 3, 2]],  # 1-P2/4[-1, 3, C3, [128]],[-1, 1, Conv, [256, 3, 2]],  # 3-P3/8[-1, 6, C3, [256]],[-1, 1, Conv, [512, 3, 2]],  # 5-P4/16[-1, 9, C3, [512]],[-1, 1, Conv, [1024, 3, 2]],  # 7-P5/32[-1, 3, C3, [1024]],[-1, 1, SPPF, [1024, 5]],  # 9]# YOLOv5 v6.0 head
head:[[-1, 1, Conv, [512, 1, 1]],[-1, 1, nn.Upsample, [None, 2, 'nearest']],[[-1, 6], 1, Concat, [1]],  # cat backbone P4[-1, 3, C3, [512, False]],  # 13[-1, 1, Conv, [256, 1, 1]],[-1, 1, nn.Upsample, [None, 2, 'nearest']],[[-1, 4], 1, Concat, [1]],  # cat backbone P3[-1, 3, C3, [256, False]],  # 17 (P3/8-small)[-1, 1, Conv, [256, 3, 2]],[[-1, 14], 1, Concat, [1]],  # cat head P4[-1, 3, C3, [512, False]],  # 20 (P4/16-medium)[-1, 1, Conv, [512, 3, 2]],[10, 1, CAM, ['concat']],[[-2, -1], 1, Concat, [1]],  # cat head P5[-1, 3, C3, [1024, False]],  # 23 (P5/32-large)[[17, 20, 24], 1, Detect, [nc, anchors]],  # Detect(P3, P4, P5)]

三、3️⃣参数量变化

🔥下面第一幅图是将CAM替换掉SPPF模块的运行参数量,GFLOPs的为22.0,第二图是与第一幅图有着相同连接方式的CAM模块,但是第二幅图的CAM是添加到了PANet最后一个stage的concat之前,参数量GFLOPs为17.8,会发现参数量少了许多,但是在训练过程中我明显发现第二种CAM添加方式,导致了模型训练的速度变慢了不少,训练速度增加了一倍不止。

在这里插入图片描述
在这里插入图片描述

四、4️⃣实验结果

这里我不放太多实验了,只选取两个实验,分别是替换SPPF模块和在PANet最后一个stage的concat之前添加CAM模块。这两处的CAM模块都是使用concat连接方式进行连接。

4.1 🎓 替换掉SPPF实验结果

➤训练结果:F1置信度分数为0.73、map@0.5=0.821;
在这里插入图片描述

4.2 ✨在Neck部分添加CAM

➤训练结果:F1置信度分数为0.73、map@0.5=0.766;这里添加到Neck部分效果并不太好,如果在PANet的三个stage部分都添加可能会涨点,但是需要你直接去实验。
在这里插入图片描述


在这里插入图片描述

这篇关于【YOLOv5改进系列(10)】高效涨点----将CAM(上下文增强模块)添加到Neck特征融合模块当中的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/866091

相关文章

一文深入详解Python的secrets模块

《一文深入详解Python的secrets模块》在构建涉及用户身份认证、权限管理、加密通信等系统时,开发者最不能忽视的一个问题就是“安全性”,Python在3.6版本中引入了专门面向安全用途的secr... 目录引言一、背景与动机:为什么需要 secrets 模块?二、secrets 模块的核心功能1. 基

C++高效内存池实现减少动态分配开销的解决方案

《C++高效内存池实现减少动态分配开销的解决方案》C++动态内存分配存在系统调用开销、碎片化和锁竞争等性能问题,内存池通过预分配、分块管理和缓存复用解决这些问题,下面就来了解一下... 目录一、C++内存分配的性能挑战二、内存池技术的核心原理三、主流内存池实现:TCMalloc与Jemalloc1. TCM

Python基于微信OCR引擎实现高效图片文字识别

《Python基于微信OCR引擎实现高效图片文字识别》这篇文章主要为大家详细介绍了一款基于微信OCR引擎的图片文字识别桌面应用开发全过程,可以实现从图片拖拽识别到文字提取,感兴趣的小伙伴可以跟随小编一... 目录一、项目概述1.1 开发背景1.2 技术选型1.3 核心优势二、功能详解2.1 核心功能模块2.

基于Python构建一个高效词汇表

《基于Python构建一个高效词汇表》在自然语言处理(NLP)领域,构建高效的词汇表是文本预处理的关键步骤,本文将解析一个使用Python实现的n-gram词频统计工具,感兴趣的可以了解下... 目录一、项目背景与目标1.1 技术需求1.2 核心技术栈二、核心代码解析2.1 数据处理函数2.2 数据处理流程

Python中bisect_left 函数实现高效插入与有序列表管理

《Python中bisect_left函数实现高效插入与有序列表管理》Python的bisect_left函数通过二分查找高效定位有序列表插入位置,与bisect_right的区别在于处理重复元素时... 目录一、bisect_left 基本介绍1.1 函数定义1.2 核心功能二、bisect_left 与

Python使用FFmpeg实现高效音频格式转换工具

《Python使用FFmpeg实现高效音频格式转换工具》在数字音频处理领域,音频格式转换是一项基础但至关重要的功能,本文主要为大家介绍了Python如何使用FFmpeg实现强大功能的图形化音频转换工具... 目录概述功能详解软件效果展示主界面布局转换过程截图完成提示开发步骤详解1. 环境准备2. 项目功能结

Python Pandas高效处理Excel数据完整指南

《PythonPandas高效处理Excel数据完整指南》在数据驱动的时代,Excel仍是大量企业存储核心数据的工具,Python的Pandas库凭借其向量化计算、内存优化和丰富的数据处理接口,成为... 目录一、环境搭建与数据读取1.1 基础环境配置1.2 数据高效载入技巧二、数据清洗核心战术2.1 缺失

Python logging模块使用示例详解

《Pythonlogging模块使用示例详解》Python的logging模块是一个灵活且强大的日志记录工具,广泛应用于应用程序的调试、运行监控和问题排查,下面给大家介绍Pythonlogging模... 目录一、为什么使用 logging 模块?二、核心组件三、日志级别四、基本使用步骤五、快速配置(bas

macOS Sequoia 15.5 发布: 改进邮件和屏幕使用时间功能

《macOSSequoia15.5发布:改进邮件和屏幕使用时间功能》经过常规Beta测试后,新的macOSSequoia15.5现已公开发布,但重要的新功能将被保留到WWDC和... MACOS Sequoia 15.5 正式发布!本次更新为 Mac 用户带来了一系列功能强化、错误修复和安全性提升,进一步增

使用Python和SQLAlchemy实现高效的邮件发送系统

《使用Python和SQLAlchemy实现高效的邮件发送系统》在现代Web应用中,邮件通知是不可或缺的功能之一,无论是订单确认、文件处理结果通知,还是系统告警,邮件都是最常用的通信方式之一,本文将详... 目录引言1. 需求分析2. 数据库设计2.1 User 表(存储用户信息)2.2 CustomerO