YOLOV10阅读总结

news2024/11/19 1:43:15

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的情况!!!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【JVM】一次JVM内存泄露分析处理

一次内存泄露分析 背景情况 编写了一个大数据基础组件的可用性监控程序,采用Bootstrap监测端口的方式,使得方法常驻(main线程常驻),通过一个调度线程ScheduledThreadPoolExecutor,定时的调动监测任务。 …

短视频拍摄方式有哪些:四川鑫悦里文化传媒有限公司

​短视频拍摄方式有哪些 在数字化时代,短视频以其短小精悍、传播迅速的特点,成为了人们表达自我、分享生活的重要工具。然而,想要制作出引人入胜的短视频,除了创意和构思,拍摄方式的选择也至关重要。四川鑫悦里文化传…

详谈 Java中的list.forEach()和list.stream().forEach() 异同点

涉及的文章链接:ArrayList 循环Remove遇到的坑 一、想总结本篇博客的原因 在日常开发中,需要对集合数据进行或多或少的赋值修改,那么循环赋值或者做一些处理就是最常见的一种操作了,但是用习惯了stream流,所以在循环的…

聚合网卡和Wondershaper限速的一些问题(速度减半问题)

首先我们来了解一下聚合网卡: 聚合网卡,又称为链路聚合组(LAG, Link Aggregation Group)、端口汇聚(Port Trunking)、以太通道(Ethernet Bonding)等,是一种网络技术&…

【OpenCV】图形绘制与填充

介绍了绘制、填充图像的API。也介绍了RNG类用来生成随机数。相关API: line() rectangle() circle() ellipse() putText() 代码: #include "iostream" #include "opencv2/opencv.hpp"using namespace std; using namespace cv…

Git和plink

安装git的话首先进入到git官网进行下载Git - Downloading Package (git-scm.com) ,点击便会自动进行下载。 安装plink时也是根据自己电脑的版本号选择进行安装,我的是windows的64位,由此选择以上版本进行安装,这一个下载完成之后不…

react中子传父信息

思路是: 在父组件定义一个函数接受参数,接收的参数用于接收子组件的信息,把函数传给子组件,子组件调用父亲传来的函数并把要告诉父亲的话传到函数中,就实现了子传父消息 import { useState } from reactimport { use…

JavaWeb笔记整理+图解——服务器渲染技术之EL表达式与JSTL

上一篇我们讲解了什么是服务器渲染技术和jsp,今天我来整理一下EL表达式和JSTL的笔记与图解,让我们的jsp页面更加的简洁与可维护。 没看过上一期的小伙伴可以看上一期的笔记: JavaWeb笔记全整理——JSP服务器渲染技术-CSDN博客 一、EL表达式…

揭开 SOCKS5 有哪些强大的功能?

在在线隐私和安全领域,SOCKS5 是一种多功能且功能强大的协议,为用户提供了一种无缝的方式来加密他们的互联网流量、绕过防火墙并以增强的匿名性和灵活性访问网络。无论您是担心在线监控、地理封锁还是数据隐私,了解如何利用 SOCKS5 的功能都可…

Apache-Doris单机部署

参考: 快速体验 Apache Doris - Apache Doris 1、Apache Doris是一款 基于MPP架构的高性能、实时的分析型数据库,以高效、简单、统一的特点被人们所熟知,仅需 亚秒级响应时间即可返回海量数据下的查询结果,不仅可以支持高并发的点…

ue引擎游戏开发笔记(46)——简单UI设计

1.需求分析: 玩家操作界面应该有基本的准星和血量显示等内容,告知玩家角色的基本状态。 2.操作实现: 1.较为简单的内容,在控件面板建立相应内容,之后链接到游戏中即可! 2.先做准星,在画布上搞个…

Day 56 647. 回文子串 516.最长回文子序列

回文子串 给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。 具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。 示例 1: 输入:“abc”输出:3解释&#xf…

蓝桥杯Web开发【大学组:国赛】2022年真题

1.分一分 如果给你一个数组,你能很快将它分割成指定长度的若干份吗? 1.1 题目问题 请在 js/index.js 文件中补全函数 splitArray 中的代码,最终返回按指定长度分割的数组。 具体要求如下: 将待分割的(一维&#x…

“星战之父”乔治・卢卡斯吐槽好莱坞“几乎没有原创思维”,AI 将“不可避免”用于电影制作

《星球大战》系列的创作者乔治・卢卡斯(George Lucas)在 1977 年奠定了电影制作传奇人物的地位,他对当今电影的状况及其发展方向有一些自己的看法。 他在 2024 年戛纳电影节上谈到了当前的电影行业。现年 80 岁的卢卡斯在接受法国媒体 Brut …

STM32建立工程问题汇总

老版本MDK,例如MDK4 工程内容如下: User文件夹中存放main.c文件,用户中断服务函数(stm32f1xx.it.c),用户配置文件(stm32f1xx_hal_conf.h)等用户程序文件,或者mdk启动程序…

GIT提交:.husky/pre-commit: line 2: .husky/_/husky.sh: No such file or directory

GIT提交:.husky/pre-commit: line 2: .husky/_/husky.sh: No such file or directory 一些项目添加了代码提交校验和格式化,在windows下会忽略.husky下文件提交导致git数据丢失。 处理方案: 方案01:补齐缺失的文件 1.1 项目根…

最新斗音评论区截流拓客,自动引流【引流软件+使用教程】

面对社交媒体的蓬勃生长,加粉和拓展客户群成为品牌及个体的当务之急。新推出的一款技术工具恰到好处地迎合了这一需求,提供了一个多功能、适用性强的增粉与互动解决方案。该工具与抖音平台的所有版本兼容,消除了对特定版本的依赖。 利用这一…

微服务架构-聚合设计模式

微服务架构-聚合设计模式 聚合器(Aggregator)设计模式:用于将来自多个微服务的数据,聚合成一个统一的响应,提供给客户端。 聚合模式的核心思想:是使用一个聚合器服务(Aggregator Service&#…

greendao实现增删改查

说明:最近碰到一个需求,在安卓上使用greendao框架,实现增删改查数据 效果图: step1: // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript {repositories {go…

26计算机操作系统408考研--操作系统处理机调度篇章(五)

文章目录 一、调度简介死锁一、调度简介 计算机系统中,处理器和内存资源会出现供不应求的情况,特别是多个I/O设备与主机交互,作业不断进入系统,或者是多个批处理作业在磁盘的后备队列中等待进入内存的情况。操作系统在管理有限的资源的同时,需要考虑如何选取进入内存的作…