YOLOV10阅读总结

GitHub - THU-MIG/yolov10: YOLOv10: Real-Time End-to-End Object Detection

YOLOv10 - Ultralytics YOLO Docs

https://arxiv.org/pdf/2405.14458 论文地址

最近yolo又出了个yolov10了,不得不感慨CV是真卷,毕竟yolov9也才没多久。记录一下阅读笔记。

目录

方法

1.双标签分配 dual label assignments:

2.模型设计

2.1 Lightweight classification head

2.2 Spatial-channel decoupled downsampling

2.3 Rank-guided block design.

2.4 Large-kernel convolution

2.5 Partial self-attention (PSA)

结果:


方法

主要特点总结:

  • 7*7 conv,DW,PW,
  • partial slef-attention,
  • one2many && one2one head(nms free),
  • Rank-guided block

这就是网络的结构了,前面的backbone和PAN都和yolos差不多。核心的特点是:

1.双标签分配 dual label assignments:

one-to-many head:一个gt对应了多个正样本候选预测bbox。

one-to-one head:一个gt对应了一个正样本候选预测bbox,避免NMS.

one-to-many head 和one-to-one head,大概逻辑是,以前的yolo大多都是anchor-based,需要后处理NMS,这必然需要计算资源和时间,这里他在训练的时候把one-to-many head 和one-to-one head同时一起训练,而再推理的时候只使用one-to-one head做推理,那么可以避免NMS。但是呢one-to-one head的训练效果一般都不如one-to-many head,所以作者采用了one-to-many head 去监督one-to-one head,让它向one-to-many学习,效果也会不错。

2.模型设计

2.1 Lightweight classification head

作者认为分类是很简单的任务,难度小,不需要像回归头那样那么大的参数量,所以简化了一下。

2.2 Spatial-channel decoupled downsampling

作者认为:传统的YOLO模型使用3x3标准卷积,并以步长2来实现空间下采样和通道转换(从C到2C)。这种方法计算量较大。作者采用先使用PW卷积来调整通道维度,然后再使用DW卷积来执行空间下采样。从而减少参数量和提高速度。

2.3 Rank-guided block design.

  1. YOLO模型通常会在所有阶段使用相同的基本构建块,如YOLOv8中的瓶颈块。

  2. 作者使用"内在秩"分析了每个阶段的冗余度。结果显示,更深的阶段和更大的模型更容易存在更多的冗余。

  3. 这表明对所有阶段都应用相同的块设计可能是次优的,无法达到最佳的容量效率权衡。

  4. 为解决这个问题,作者提出了一种基于秩的块设计方案,使用更紧凑的架构设计来降低冗余的阶段的复杂度。

  5. 具体来说,作者提出了一种紧凑的翻转块(CIB)结构,它利用廉价的深度卷积进行空间混合,使用高效的逐点卷积进行通道混合。

  6. 接着,作者提出了一种基于秩的块分配策略,在保持竞争力容量的同时实现更高的效率。

  7. 这个策略会根据各阶段的内在秩排序,逐步将领先阶段的基本块替换为CIB,只要性能不降低就会一直替换下去。

  8. 通过这种自适应的紧凑块设计,可以在不影响性能的情况下实现更高的效率。​​​​​​​​​​​​​​

2.4 Large-kernel convolution

作者认为:

  1. 使用大卷积核深度卷积是一种有效的方法,可以增大模型的感受野,提高性能。

  2. 但是如果在所有阶段都使用大卷积核,可能会对用于检测小目标的浅层特征造成污染,同时也会引入较大的I/O开销和延迟。

  3. 因此,作者提出在紧凑的翻转块(CIB)中,仅在深层阶段使用大卷积核深度卷积。

  4. 具体来说,就是将CIB中第二个3x3深度卷积的核大小增加到7x7。

  5. 同时,作者还使用结构重参数化技术,添加了一个额外的3x3深度卷积分支,以缓解优化问题,但不增加推理开销。

  6. 随着模型尺寸的增大,其感受野自然会扩大,使用大卷积核的收益也会减小。

  7. 因此,作者只在小模型规模中采用大卷积核,随着模型变大,逐步放弃使用大卷积核。

2.5 Partial self-attention (PSA)

  1. Self-attention因其出色的全局建模能力,在各种视觉任务中广泛应用。但是它也存在高计算复杂度和高内存开销的问题。

  2. 针对注意力头的冗余性,作者提出了一种高效的PSA模块设计。

  3. 具体来说,PSA先将特征沿通道方向均等划分为两部分,只将其中一部分输入到由MHSA和FFN组成的NPSA块中。

  4. 两部分特征经过NPSA块后再进行拼接和1x1卷积融合。

  5. 同时,作者还采取了一些措施来进一步提高PSA的效率,如调整MHSA中query、key和value的维度比例,以及用BatchNorm替代LayerNorm。

  6. 此外,PSA模块仅置于最低分辨率的Stage 4之后,避免self-attention的二次复杂度带来的过多开销。

  7. 这种方式可以在保持低计算成本的情况下,将self-attention的全局表示学习能力引入到YOLO模型中,从而提高模型性能。

结果:

个人感觉,可能存在overfit的情况!!!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

curl请求url正常,通过web端请求就400异常的问题记录

通过抓包发现如上图,有2个authorization header,其中一个是开发人员代码生成的,另一个是web端http请求自己携带的。目标是去除web自己携带的。 解决方法: 生成一个FeignConfig的类,requestInterceptor进行空实现。 Fe…

暑期社会实践即将强势来袭,投稿三下乡文章最强攻略

以热爱充实自我 以笃行丰盈青春 这个盛夏“乡”约 纷纷迈出了社会实践的有力步伐 在展开社会实践的同时 也不要忘记投稿宣传的重要性哦 快快收藏住这份投稿攻略 助力团队展现更多精彩的实践故事! No.1 感悟思想伟力,守好“红色根脉” No.2 循迹“八八战略…

【基于 PyTorch 的 Python 深度学习】9 目标检测与语义分割(2)

前言 文章性质:学习笔记 📖 学习资料:吴茂贵《 Python 深度学习基于 PyTorch ( 第 2 版 ) 》【ISBN】978-7-111-71880-2 主要内容:根据学习资料撰写的学习笔记,该篇主要介绍了优化候选框的几种方法。 一、优化候选框的…

人工智能超万卡集群的核心设计原则和架构

超万卡集群的核心设计原则和架构 超万卡集群建设方兴未艾,当前主要依托英伟达GPU及其设备。英伟达GPU在大模型训练中表现卓越,但国产AI芯片虽进步显著,性能与生态构建仍存差距。面对诸多挑战,构建技术领先、基于国产生态的超万卡集群,仍需不断突破与创新。 大模型升级至万…

腾讯前端4轮面经分享,期望薪资28K

笔者原来在北京360企业安全工作,当时因为大学四年的学业是在北京完成的,所以就顺势通过校招在北京工作了。但家里是南方的,对南方的饮食和生活习惯更加喜欢一些,所以对深圳广州的公司特别是腾讯觊觎已久,所以就在今年2…

期货学习笔记-斐波那契学习1

斐波那契数列介绍 斐波那契数列是1、1、2、3、5、8、13、21、34、55、89…据说这是数学家莱昂纳多 斐波那契研究兔子繁殖时发现的一个神奇数列,似乎大自然在按照这个数列进行演化,一个斐波那契数字是由该数列相邻的前两个数字相加得到的 在斐波那契交易…

Spark Sql写代码方式(yarn)以及 spark sql整合hive详解

引入部分:通常我们在IDEA中写spark代码中如果设置了loacl参数,基本都是在IDEA本地运行,不会提交到 standalone或yarn上运行,在前几篇文章中写的大多数都是该种形式的spark代码,但也写到了如何将spark代码提交到standal…

大模型微调:Lora

原理图 原理:不改变原始大模型参数,只加入一个类似残差分支,先降纬再升纬,因为模型是过参数化的,它们有更小的内在维度,模型主要依赖于这个低的内在维度(low intrinsic dimension)去…

基于LLM的优化器评测

基于LLM的优化器评测 求解的目标函数测试结果测试代码测试日志 背景: ​ 很多时候我们需要为系统寻找最优的超参.比如模型训练,推理的量化等.本文尝试将LLM当成优化器,帮忙我们寻找最优的超参. 验证方法: 1.设计一个已知最优解的多项式,该多项式有3个变量(因为3个变量可以通过…

飞睿智能高精度、低功耗测距,无线室内定位UWB芯片如何改变智能家居

在数字化和智能化快速发展的今天,定位技术已经成为我们日常生活中不可或缺的一部分。然而,传统的GPS定位技术在室内环境中往往束手无策,给我们的生活带来了诸多不便。幸运的是,随着科技的不断进步,一种名为UWB&#xf…

符合车规级漏电流检测的磁通门传感器KTD1100

电动车充电桩 在政策出台后,充电桩类产品按要求需装配B端漏电流检测装置。它可以有效防止充电桩等设备中的漏电流对用户造成危害,保障用户的用电安全。其次,它可以促进充电桩等产品的质量提升,提高市场的公平竞争,让消…

汽车合面合壳密封UV胶固化后一般可以耐多少度的高温和低温? 汽车车灯的灯罩如果破损破裂破洞了要怎么修复?

汽车合面合壳密封UV胶固化后一般可以耐多少度的高温和低温? UV胶固化后的耐高温和低温能力取决于具体的UV胶水品牌和型号,以及固化过程中的条件。一般来说,高品质的UV胶水在固化后可以提供较好的耐温性能,但确切的耐温范围需要参考各个厂家提…

24年gdcpc省赛C题

1279:DFS 序 先不考虑多节点,先看着颗二叉树,假设他们的父亲节点是第k个被访问的点,如果先访问左子树,那么得到的结果是a1*ka2*(k1)b1*(2k)b2*(2k1),可以发现,先访问左子树,那么右子树每次的乘以的p值实际上是左子树乘以的p值加上左子树的节点个数,比如a1*k和b1*(2k),如果不看2…

Bookie存储架构源码剖析|得物技术

一、Pulsar存储架构简析 Pulsar作为新一代MQ中间件,在底层架构设计上充分贯彻了存算分离的思想,broker与Bookeeper两个组件独立部署,前者负责流量的调度、聚合、计算,后者负责数据的存储,这也契合了云原生下k8s大行其…

新旅程:类与对象的魔法课堂

🎉🎉🎉欢迎莅临我的博客空间,我是池央,一个对C和数据结构怀有无限热忱的探索者。🙌 🌸🌸🌸这里是我分享C/C编程、数据结构应用的乐园✨ 🎈🎈&…

聚会活跃气氛神器小程序源码系统 各种小游戏 让聚会不再冷场 带源代码包以及安装搭建教程

系统概述 在社交聚会中,如何让气氛活跃起来一直是一个让人关注的问题。小编给大家分享一款聚会活跃气氛神器小程序源码系统。它不仅提供了丰富多样的小游戏,还带有源代码包和详细的安装搭建教程,让你轻松打造属于自己的聚会互动平台。 代码…

根据经纬度点计算经纬度点之间的距离

根据经纬度点计算经纬度点之间的距离 根据两点经纬度坐标计算直线距离 根据经纬度点计算经纬度点之间的距离 根据经纬度计算两地之间的距离 根据两点经纬度坐标计算距离 其实看第一个就够了 根据 半正矢公式(Haversine formula)即可计算 本计算式选取地…

【Django】开发个人博客系统【1】

使用Django开发个人博客系统,博客系统包括用户(博主)注册和登录、博主资料信息、图片墙功能、留言板功能、文章列表、文章正文内容和Admin后台系统。 1. 项目架构设计 下一步将上述设置写入Django的配置文件settings.py,当Django…

【C语言编程】Codeblocks安装步骤

操作系统 Windows 11 操作系统 安装步骤 1、 访问Codeblocks官网:Codeblocks官网,点击Download下载: 下载好的安装包: 2、 右键——以管理员身份运行: 3、 点击Next下一步: 4、 点击I Agree同意用…

解锁数据关联之道:SQL 表连接详解

文章目录 概述表关系横向连接内连接 inner join左连接 left join右连接 right join全连接 full join交叉连接 cross join 纵向合并UNION ALLUNION 概述 在数据处理、数据分析中常会用到表连接。表连接的作用是将多个表中的数据关联起来,以便在查询过程中获取更全面…