YOLOv9改进策略:loss优化 | LRM loss困难样本挖掘,提升难样本、遮挡物、低对比度等检测精度

   💡💡💡本文改进内容:LRM loss困难样本挖掘引入到YOLOv9,性能优于Focal Loss

 💡💡💡 LRM loss应用到能够大幅提升小目标、红外小目标、大幅度提升遮挡物性能,性能如下图所示:

《YOLOv9魔术师专栏》将从以下各个方向进行创新:

原创自研模块多组合点优化注意力机制卷积魔改block&多尺度融合结合损失&IOU优化上下采样优化 【SPPELAN & RepNCSPELAN4优化】【小目标性能提升】前沿论文分享训练实战篇】

订阅者通过添加WX: AI_CV_0624,入群沟通,提供改进结构图等一系列定制化服务。

订阅者可以申请发票,便于报销 

 YOLOv9魔术师专栏

💡💡💡为本专栏订阅者提供创新点改进代码,改进网络结构图,方便paper写作!!!

💡💡💡适用场景:红外、小目标检测、工业缺陷检测、医学影像、遥感目标检测、低对比度场景

💡💡💡适用任务:所有改进点适用【检测】、【分割】、【pose】、【分类】等

💡💡💡全网独家首发创新,【自研多个自研模块】,【多创新点组合适合paper 】!!!

☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️ ☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️

包含注意力机制魔改、卷积魔改、检测头创新、损失&IOU优化、block优化&多层特征融合、 轻量级网络设计、24年最新顶会改进思路、原创自研paper级创新等

🚀🚀🚀 本项目持续更新 | 更新完结保底≥80+ ,冲刺100+ 🚀🚀🚀

🍉🍉🍉 联系WX: AI_CV_0624 欢迎交流!🍉🍉🍉

⭐⭐⭐专栏涨价趋势 99 ->199->259->299,越早订阅越划算⭐⭐⭐

💡💡💡 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框架图

1.1 YOLOv9框架介绍

YOLOv9各个模型介绍

​​

 1.hard example mining(困难样本挖掘)

困难例挖掘方法通常可以提高目标检测器的性能,因为它受到不平衡训练集的影响。为了通过RoI正确地挖掘困难例,引入了在线困难例挖掘(OHEM)方法[15]。该方法建议只考虑对反向传播最有利的RoI。给出最高损失值的RoI被认为是最难的例子,因此也是最有利的例子。因此,上述方法选择了B/N个最差的损失案例进行训练,并在训练中丢弃了其余的案例。尽管这种新方法是困难例挖掘中最有前途的方法之一,但它只适用于two-stage网络,因为它需要RoI来工作。

1.2  改进的one-shot目标检测的困难样本挖掘方法

论文:https://arxiv.org/pdf/2202.13080.pdf

        提议的研究结合了两种不同的困难样本挖掘方法,并将产生的方法应用于YOLOv5,它是性能最好的单次shot目标检测器之一。为此,焦点损失被改编为YOLOv5,而LRM(最初被设计为适用于单一特征图)被修改为适用于多个特征图。接下来,这两种方法被结合起来,得到一个单一的损失函数,如图1所示。我们进行了定量实验,以验证这些方法在不操纵困难样本数量的情况下挖掘了困难样本。 

​图1: YOLOv5对象性损失(左)与提议的综合损失(右)。对于提议的损失,首先对每个单元应用平衡焦点损失,而不是BCE,然后对每个特征图,检测按其损失值进行排序。最后,选择具有最高损失值的前B级检测进行损失计算和反向传播。

1.3 Loss Rank Mining

在其原始论文[18]中,该方法与YOLOv2[9]一起使用,YOLOv2有一个特征图用于目标检测。由于YOLOv5对小、中、大目标使用了三个特征图,因此也对原方法进行了修改,使其能适用于所有三个特征图。

在原来的LRM结构中,首先选择损失量最大的K个检测结果。在我们的方法中,对于每个特征图,首先选择B(排名因子)检测结果。图1说明了所提出的组合物性损失结构与原始YOLOv5损失之间的比较,对于每个特征图,该方法可以总结如下:

  1. 通过每个小批次,平衡焦点损失被应用于细胞以获得检测的损失值。
  2. 通过扁平化三维单元结构,每个图像样本的损失值被分别串联成不同的向量。
  3. 每幅图像的损失值都按一个数值排序。
  4. 从排序的损失向量中,选择每个图像样本的细胞数量的前B比例。
  5. 每个选定的损失的平均值都是单独取的。
  6. 这些平均数相加,形成目标损失。

由于我们没有预定的困难例集,我们把困难例定义为替代方法的区别性失败。如图2所示,落在同一单元的检测和失误被分为TP-TP、TP-FN、TN-FP、FP-FP和FN-FN。由于所有这些方法都已经是最先进的,所以这些算法都失败的帧被算作是困难例。因此,这些实验的目的是为了检查TP-FN和TNFP对。原因是,如果方法A对方法B的一些FN和FP有正确的输出(TP和TN),而且方法A对方法B的TP和TN有较少的错误输出,那么就有理由认为方法A对困难例更好。这是一种无监督的性能评估方法,因为困难例子的数量是未知的。

默认损失与Focal损失: 原始YOLOv5损失函数和原始Focal Loss的比较是在γ: 1.5和α: 0.25. 根据表1中的结果,基线焦点损失函数将8.06%被评估为TP的测试集错误地转换为FN,从而降低了算法的性能。虽然它也将一些FN转化为TP,FP转化为TN,但通过在YOLOv5中实施原始焦点损失,困难例的整体性能在测试集上下降了6%。因此,在其余的实验中没有使用基线焦点损失。

默认损失与平衡焦点损失: 原有的YOLOv5损失函数和提议的平衡焦点损失在测试集的帧数(#)和百分比(%)方面对方法对进行了对比。

3.LRM loss加入到YOLOv9

3.1 utils/loss_tal_dual.py

训练方法为 train_dual,因此本博客以此展开

1)首先进行LRM loss实现

后续开源

2)修改class ComputeLoss:

加入以下代码

3.2 修改data/hyps/hyp.scratch-high.yaml

加入以下代码

fl_gamma: 0.0  # focal loss gamma (efficientDet default gamma=1.5)
LRM_ignore: 0.65 # Loss Rank Mining ignore ratio

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/577750.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【51单片机入门记录】Onewire单总线协议 温度传感器DS18B20概述

一、温度传感器DS18B20概述 (1)数字化温度传感器 美国DALLAS半导体公司的数字化温度传感器DS1820是世界上第一片支持“一线总线”接口的温度传感器。一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建…

JSON数据的类型

JSON 代表 JavaScript Object Notation。JSON是开放的标准格式,由key-value对组成。JSON的主要用于在服务器与web应用之间传输数据。 PostgreSQL提供了两种存储JSON数据的类型:json和jsonb; jsonb是json的二进制形式。 json格式写入快&#x…

comfyui api

stable diffusion comfyui的api使用教程_厦门外里科技的技术博客_51CTO博客stable diffusion comfyui的api使用教程,为什么要使用comfyui的api?对比webui的api,它有什么好处?stablediffusion如何实现队列https://blog.51cto.com/u…

HarmonyOS 应用开发之UIAbility组件启动模式

UIAbility的启动模式是指UIAbility实例在启动时的不同呈现状态。针对不同的业务场景,系统提供了三种启动模式: singleton(单实例模式)multiton(多实例模式)specified(指定实例模式)…

【SpringBoot】【经典面试题】每天10个Java面试题-面试大厂起飞系列-day01

嗨,各位小伙伴! 🐱‍💻 我是【行走的程序喵】!一个兼具Web前端和Java后端技能的技术宅! 🌟 我的博客上分享最新的Web前端和Java后端技术文章,从基础入门到进阶应用,应有…

Git相关命令(一)

一、简介 Git 是一个开源的分布式版本控制系统。 当然, git 不会傻傻的把你的每一个版本完整的存储下来,他仅仅会存储每次修改的位置和内容(可持久化),每一次 commit 可以理解为产生一个版本,接下来的版本…

HarmonyOS实战开发-实现UIAbility内和UIAbility间页面的跳转

介绍 本篇Codelab基于Stage模型下的UIAbility开发,实现UIAbility内和UIAbility间页面的跳转。包含如下功能: UIAbility内页面的跳转。跳转到指定UIAbility的首页。跳转到指定UIAbility的指定页面(非首页)。 最终效果图如下&…

【HCIP学习】网络类型级数据链路层协议

思维导图在上面哦~ 一、网络类型的分类(4种) 出现原因:数据链路层使用的协议及规则不同,造成了不同的网络类型 1、多点接入网络(MA)------一条网段内上出现多个设备 BMA:广播型多点接入&…

vivado 生成比特流或器件镜像

在生成比特流或器件镜像之前 , 请复查其设置 , 确保这些设置对于您的设计都正确无误 , 这一点至关重要。 Vivado IDE 中的比特流和器件镜像设置分为 2 种类型 : 1. 比特流或器件镜像文件格式设置。 2. 器件配置设置。 在 V…

翔云身份证实名认证接口-PHP调用方法

网络平台集成实名认证接口,是顺应当下网络实名制规定,有效规避法律风险。互联网平台若没有实名认证功能,那么便无法保证网民用户身份的真实性,很有可能被虚假用户攻击,特别是在当网络平台产生垃圾信息乃至是违法信息时…

大模型预测,下一个token何必是文字?

太快了太快了… 大模型的生成技能,已经到了普通人看不懂的境界! 它可以根据用户过去5年的体检报告,生成未来第1年、第2年、第3年的体检报告。 你看,这个生成的过程,是不是像极了ChatGPT,根据历史单词预测…

JUC并发编程之常用方法

sleep() public void testSleepAndYield() {Thread t1 new Thread(() -> {try {log.debug("t1-sleep...");Thread.sleep(2000);} catch (InterruptedException e) {throw new RuntimeException(e);}}, "t1");log.debug("t1 start 前的状态&#…