本文主要是介绍YOLOv9如何提高检测精度(NEU-DET为案列),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
💡💡💡本文改进内容: 通过各个YOLOv9魔术师专栏改进点提升原始网络检测精度,目前跑完的实验有:
1)超轻量高效动态上采样DySample
2)基于 Haar 小波的下采样(HWD)
YOLOv9魔术师专栏
☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️ ☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️
包含注意力机制魔改、卷积魔改、检测头创新、损失&IOU优化、block优化&多层特征融合、 轻量级网络设计、24年最新顶会改进思路、原创自研paper级创新等
☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️
✨✨✨ 新开专栏暂定免费限时开放,后续每月调价一次✨✨✨
🚀🚀🚀 本项目持续更新 | 更新完结保底≥50+ ,冲刺100+🚀🚀🚀
🍉🍉🍉 联系WX: AI_CV_0624 欢迎交流!🍉🍉🍉
YOLOv9魔改:注意力机制、检测头、blcok魔改、自研原创等
YOLOv9魔术师
💡💡💡全网独家首发创新(原创),适合paper !!!
💡💡💡 2024年计算机视觉顶会创新点适用于Yolov5、Yolov7、Yolov8等各个Yolo系列,专栏文章提供每一步步骤和源码,轻松带你上手魔改网络 !!!
💡💡💡重点:通过本专栏的阅读,后续你也可以设计魔改网络,在网络不同位置(Backbone、head、detect、loss等)进行魔改,实现创新!!!
1.YOLOv9原理介绍
论文: 2402.13616.pdf (arxiv.org)
代码:GitHub - WongKinYiu/yolov9: Implementation of paper - YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information摘要: 如今的深度学习方法重点关注如何设计最合适的目标函数,从而使得模型的预测结果能够最接近真实情况。同时,必须设计一个适当的架构,可以帮助获取足够的信息进行预测。然而,现有方法忽略了一个事实,即当输入数据经过逐层特征提取和空间变换时,大量信息将会丢失。因此,YOLOv9 深入研究了数据通过深度网络传输时数据丢失的重要问题,即信息瓶颈和可逆函数。作者提出了可编程梯度信息(programmable gradient information,PGI)的概念,来应对深度网络实现多个目标所需要的各种变化。PGI 可以为目标任务计算目标函数提供完整的输入信息,从而获得可靠的梯度信息来更新网络权值。此外,研究者基于梯度路径规划设计了一种新的轻量级网络架构,即通用高效层聚合网络(Generalized Efficient Layer Aggregation Network,GELAN)。该架构证实了 PGI 可以在轻量级模型上取得优异的结果。研究者在基于 MS COCO 数据集的目标检测任务上验证所提出的 GELAN 和 PGI。结果表明,与其他 SOTA 方法相比,GELAN 仅使用传统卷积算子即可实现更好的参数利用率。对于 PGI 而言,它的适用性很强,可用于从轻型到大型的各种模型。我们可以用它来获取完整的信息,从而使从头开始训练的模型能够比使用大型数据集预训练的 SOTA 模型获得更好的结果。对比结果如图1所示。
YOLOv9框架图
2.NEU-DET数据集介绍
NEU-DET钢材表面缺陷共有六大类,一共1800张,
类别分别为:'crazing','inclusion','patches','pitted_surface','rolled-in_scale','scratches'
数据集如何划分详见另一篇博客:
YOLOv9如何训练自己的数据集(NEU-DET为案列)_yolov9训练自己的数据集-CSDN博客
3.YOLOv9可视化分析
3.1原始yolov9-c结果
yolov9-c summary: 604 layers, 50709828 parameters, 0 gradients, 236.7 GFLOPsClass Images Instances P R mAP50 mAP50-95: 100%|██████████| 16/16 01:33all 486 1069 0.722 0.704 0.754 0.424crazing 486 149 0.503 0.369 0.42 0.141inclusion 486 222 0.786 0.734 0.805 0.432patches 486 243 0.879 0.872 0.926 0.604pitted_surface 486 130 0.78 0.769 0.796 0.494rolled-in_scale 486 171 0.657 0.585 0.691 0.33scratches 486 154 0.725 0.892 0.884 0.543
F1_curve.png:F1分数与置信度(x轴)之间的关系。F1分数是分类的一个衡量标准,是精确率和召回率的调和平均函数,介于0,1之间。越大越好。
TP:真实为真,预测为真;
FN:真实为真,预测为假;
FP:真实为假,预测为真;
TN:真实为假,预测为假;
精确率(precision)=TP/(TP+FP)
召回率(Recall)=TP/(TP+FN)
F1=2*(精确率*召回率)/(精确率+召回率)
PR_curve.png :PR曲线中的P代表的是precision(精准率),R代表的是recall(召回率),其代表的是精准率与召回率的关系。
预测结果:
3.2 超轻量高效动态上采样DySample
YOLOv9改进策略:上采样涨点系列 | 超轻量高效动态上采样DySample,效果秒杀CAFFE,助力小目标检测-CSDN博客
论文:https://arxiv.org/pdf/2308.15085.pdf
摘要:我们介绍DySample,一个超轻量和有效的动态上采样器。虽然最近基于内核的动态上采样器(如CARAFE、FADE和SAPA)的性能提升令人印象深刻,但它们带来了大量的工作负载,主要是由于耗时的动态卷积和用于生成动态内核的额外子网络。此外,对高特征指导的需求在某种程度上限制了它们的应用场景。为了解决这些问题,我们绕过动态卷积并从点采样的角度制定上采样,这更节省资源,并且可以很容易地使用PyTorch中的标准内置函数实现。我们首先展示了一个朴素的设计,然后演示了如何逐步加强其上采样行为,以实现我们的新上采样器DySample。与以前基于内核的动态上采样器相比,DySample不需要定制CUDA包,并且具有更少的参数、FLOPs、GPU内存和延迟。除了轻量级的特点,DySample在五个密集预测任务上优于其他上采样器,包括语义分割、目标检测、实例分割、全视分割和单目深度估计。
图1所示。不同上采样器的性能、推理速度和GFLOPs的比较。圆圈的大小表示GFLOPs的开销。通过×2上采样大小为256 × 120 × 120的特征图来测试推理时间。在ADE20K数据集[42]上使用SegFormer-B1[40]测试了mIoU性能和额外的gflop。
性能如下:
3.2 基于 Haar 小波的下采样(HWD)
原文链接:YOLOv9改进策略:下采样涨点系列 | 一种新颖的基于 Haar 小波的下采样HWD,有效涨点系列-CSDN博客
链接:https://www.sciencedirect.com/science/article/abs/pii/S0031320323005174
摘要:卷积神经网络中普遍使用最大池化或跨步卷积等下采样操作(CNN)聚合局部特征,扩大感受野,并最小化计算开销。然而,对于语义分割任务,在局部邻域上池化特征可能会导致重要空间信息的丢失,这有利于逐像素预测。为了解决这个问题,我们引入了一种简单而有效的池化操作,称为基于 Haar 小波的下采样(HWD)模块。该模块可以轻松集成到 CNN 中,以增强语义分割模型的性能。HWD的核心思想是应用Haar小波变换来降低特征图的空间分辨率,同时保留尽可能多的信息。此外,为了研究 HWD 的好处,我们提出了一种新的指标,称为特征熵指数(FEI),它衡量 CNN 中下采样后的信息不确定性程度。具体来说,FEI 可用于指示下采样方法在语义分割中保留基本信息的能力。我们的综合实验表明,所提出的 HWD 模块可以(1)有效地提高具有各种 CNN 架构的不同模态图像数据集的分割性能;(2) 与传统的下采样方法相比,有效降低信息不确定性。
图1所示。DeepLabv3+中平均池化、最大池化、跨行卷积和HWD的下采样示例[13]。与传统的降采样方法相比,HWD后的特征保留了更多的边界、纹理和细节信息,如图(d)中四个红色方块所示,其中树枝得到了更好的保存。
四种不同的池化方法
图3所示。提出的HWD模块的体系结构由两个主要块组成:无损特征编码块和特征表示学习块。注意,特征映射的通道数可以通过表示学习块来调整。
性能如下:
yolov9-c-HWD summary: 599 layers, 52086084 parameters, 0 gradients, 240.1 GFLOPsClass Images Instances P R mAP50 mAP50-95: 100%|██████████| 16/16 00:34all 486 1069 0.742 0.681 0.756 0.43crazing 486 149 0.523 0.289 0.41 0.164inclusion 486 222 0.769 0.73 0.803 0.436patches 486 243 0.841 0.877 0.912 0.587pitted_surface 486 130 0.822 0.738 0.821 0.515rolled-in_scale 486 171 0.703 0.585 0.677 0.295scratches 486 154 0.793 0.87 0.914 0.581
这篇关于YOLOv9如何提高检测精度(NEU-DET为案列)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!