YOLO系列论文综述(从YOLOv1到YOLOv11)【第11篇:YOLO变体——YOLO+Transformers、DAMO、PP、NAS】

YOLO变体

  • 1 DAMO-YOLO
  • 2 PP-YOLO, PP-YOLOv2, and PP-YOLOE
    • 2.1 PP-YOLO数据增强和预处理
    • 2.2 PP-YOLOv2
    • 2.3 PP-YOLOE
  • 3 YOLO-NAS
  • 4 YOLO + Transformers
  • 5 YOLOv1-v8及变体网络结构总结


YOLO系列博文:

  1. 【第1篇:概述物体检测算法发展史、YOLO应用领域、评价指标和NMS】
  2. 【第2篇:YOLO系列论文、代码和主要优缺点汇总】
  3. 【第3篇:YOLOv1——YOLO的开山之作】
  4. 【第4篇:YOLOv2——更好、更快、更强】
  5. 【第5篇:YOLOv3——多尺度预测】
  6. 【第6篇:YOLOv4——最优速度和精度】
  7. 【第7篇:YOLOv5——使用Pytorch框架、AutoAnchor、多尺度预训练模型】
  8. 【第8篇:YOLOv6——更高的并行度、引入量化和蒸馏以提高性能加速推理】
  9. 【第9篇:YOLOv7——跨尺度特征融合】
  10. 【第10篇:YOLOv8——集成检测、分割和跟踪能力】
  11. 【第11篇:YOLO变体——YOLO+Transformers、DAMO、PP、NAS】
  12. 【第12篇:YOLOv9——可编程梯度信息(PGI)+广义高效层聚合网络(GELAN)】
  13. 【第13篇:YOLOv10——实时端到端物体检测】
  14. 【第14篇:YOLOv11——在速度和准确性方面具有无与伦比的性能】
  15. 【第15篇(完结):讨论和未来展望】

1 DAMO-YOLO

DAMO-YOLO于2022年11月由阿里巴巴集团发布在ArXiv上。受当时技术的启发,DAMO-YOLO 包含了以下主要特点:

  1. 神经架构搜索(NAS):他们使用了由阿里巴巴开发的一种称为MAE-NAS的方法来自动找到高效的架构。

  2. 大型颈部结构:受到GiraffeDet、CSPNet和 ELAN的启发,作者设计了一种可以在实时应用中工作的Neck结构,称为Efficient-RepGFPN。

  3. 小型头部结构:作者发现大型颈部和小型头部可以带来更好的性能,因此他们在分类和回归任务中各只保留了一个线性层,并将这种方法称为ZeroHead。

  4. 对齐OTA标签分配:动态标签分配方法,如OTA和TOOD,由于其显著优于静态方法而变得流行。然而,分类和回归之间的不一致仍然是一个问题,部分原因是分类和回归损失之间的不平衡。为了解决这个问题,他们的AlignOTA方法将focal loss引入分类成本,并使用预测框和真实框的IoU作为软标签,从而选择与每个目标对齐的样本,从全局角度解决这个问题。

  5. 知识蒸馏:他们提出的方法包括两个阶段:第一阶段是教师模型指导学生模型,第二阶段是学生模型独立微调。此外,他们在蒸馏方法中引入了两项增强:对齐模块(Align Module),使学生特征适应与教师相同的分辨率;通道级动态温度(Channel-wise Dynamic Temperature),归一化教师和学生的特征以减少实际值差异的影响。

作者生成了不同规模的模型,命名为DAMO-YOLO-Tiny/Small/Medium,其中最佳模型在NVIDIA V100上以233 FPS的速度达到了50.0%的AP。

2 PP-YOLO, PP-YOLOv2, and PP-YOLOE

PP-YOLO模型与我们描述的YOLO模型并行发展,是从YOLOv3开始,并且逐步改进了之前的PP-YOLO版本。

PP-YOLO 基于YOLOv3,与YOLOv4和YOLOv5类似,于2020年7月由百度公司的研究人员发布在ArXiv上。作者使用了PaddlePaddle深度学习平台,因此得名PP。从YOLOv4开始的趋势来看,PP-YOLO添加了十个现有的技巧来提高检测器的准确性,同时保持速度不变。根据作者的说法,这篇论文并不是为了介绍一种新的目标检测器,而是展示如何一步步构建一个更好的检测器。PP-YOLO使用的大多数技巧与YOLOv4不同,而相同的技巧则采用了不同的实现方式。

PP-YOLO相对于YOLOv3的主要变化包括:

  1. ResNet50-vd骨干网络:用增强的可变形卷积和蒸馏预训练模型替换了DarkNet-53骨干网络。这种架构在ImageNet上的分类准确率更高,称为ResNet50-vd-dcn。

  2. 更大的批量大小:为了提高训练稳定性,批量大小从64增加到192,并更新了训练计划和学习率。

  3. 参数移动平均:对训练参数进行移动平均,并在推理时使用这些平均值而不是最终训练值。

  4. DropBlock仅应用于FPN:只在特征金字塔网络(FPN)中应用DropBlock。

  5. IoU损失:在边界框回归的另一个分支中添加了IoU损失,与L1损失一起使用。

  6. IoU预测分支:添加了一个IoU预测分支来测量定位精度,并使用IoU感知损失。在推理过程中,除了分类概率和物体性得分外,PP-YOLO还乘以预测的IoU来考虑定位精度。

  7. 网格敏感方法:类似于YOLOv4,用于改善网格边界处的边界框中心预测。

  8. Matrix NMS:使用Matrix NMS,它可以并行运行,比传统的NMS更快。

  9. CoordConv:在FPN的1×1卷积层和检测头的第一个卷积层中使用CoordConv。CoordConv允许网络学习平移不变性,从而提高检测定位精度。

  10. 空间金字塔池化:仅在顶部特征图上使用空间金字塔池化,以增加骨干网络的感受野。

2.1 PP-YOLO数据增强和预处理

PP-YOLO使用了以下数据增强和预处理技术:

  1. Mixup训练:权重从Beta(α, β)分布中采样,其中α = 1.5,β = 1.5。
  2. 随机颜色失真
  3. 随机扩展
  4. 随机裁剪和随机翻转,概率为0.5。
  5. RGB通道的z-score归一化,均值为[0.485, 0.456, 0.406],标准差为[0.229, 0.224, 0.225]。
  6. 多种图像尺寸,均匀地从[320, 352, 384, 416, 448, 480, 512, 544, 576, 608]中抽取。

在MS COCO 2017测试开发集上的评估显示,PP-YOLO在NVIDIA V100上以73 FPS的速度达到了45.9%的AP和65.2%的AP50。

2.2 PP-YOLOv2

PP-YOLOv2于2021年4月发布在ArXiv上,并在PP-YOLO的基础上增加了四项改进,使得性能从45.9% AP提升到49.5% AP,在NVIDIA V100上的速度为69 FPS。

PP-YOLOv2相对于PP-YOLO的改进包括:

  1. 骨干网络变更:从ResNet50变更为ResNet101。
  2. 路径聚合网络(PAN):使用路径聚合网络代替FPN,类似于YOLOv4。
  3. Mish激活函数:与YOLOv4和YOLOv5不同,他们仅在检测颈部应用了Mish激活函数,而骨干网络仍保持ReLU不变。
  4. 更大的输入尺寸:较大的输入尺寸有助于提高对小物体的检测性能。他们将最大的输入尺寸从608扩展到768,并将每GPU的批量大小从24减少到12。输入尺寸均匀地从[320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768]中抽取。
  5. 修改后的IoU感知分支:他们修改了IoU感知损失的计算方法,使用软标签格式而不是软权重格式。

2.3 PP-YOLOE

PP-YOLOE于2022年3月发布在ArXiv上,在PP-YOLOv2的基础上进行了改进,在NVIDIA V100上以78.1 FPS的速度达到了51.4%的AP。

下图展示了详细的架构图。

PP-YOLOE

PP-YOLOE相对于PP-YOLOv2的主要变化包括:

  1. 无锚框(Anchor-free)

  2. 新的骨干网络和颈部结构:受到TreeNet的启发,作者修改了骨干网络和颈部结构,使用结合残差连接和密集连接的RepResBlocks。

  3. 任务对齐学习(TAL):YOLOX首次提出了任务不一致的问题,即分类置信度和定位准确性在所有情况下并不总是保持一致。为了解决这个问题,PP-YOLOE实现了TOOD中提出的TAL,其中包括动态标签分配与任务对齐损失相结合的方法。

  4. 高效的任务对齐头(ET-head):不同于YOLOX中将分类和定位头解耦的设计,PP-YOLOE使用基于TOOD的单一头部来提高速度和精度。

  5. Varifocal损失(VFL)和分布焦点损失(DFL):VFL通过目标分数加权正样本的损失,给高IoU的样本更高的权重,这在训练过程中优先考虑高质量样本。同样,两者都使用IoU感知分类得分(IACS)作为目标,允许联合学习分类和定位质量,从而在训练和推理之间保持一致性。DFL将Focal Loss从离散标签扩展到连续标签,使得能够成功优化结合质量估计和类别预测的改进表示。这允许准确描绘真实数据中的灵活分布,消除了不一致性的风险。

像之前的YOLO版本一样,作者通过改变骨干网络和颈部的宽度和深度生成了多个不同规模的模型。这些模型被称为PP-YOLOE-s(小)、PP-YOLOE-m(中)、PP-YOLOE-l(大)和PP-YOLOE-x(特大)。

3 YOLO-NAS

YOLO-NAS于2023年5月由Deci公司发布,该公司专注于开发生产级模型和工具,以构建、优化和部署深度学习模型。YOLO-NAS旨在检测小物体、提高定位精度,并增强计算性能比,使其适合实时边缘设备应用。此外,其开源架构可供研究使用。

YOLO-NAS的创新点包括:

  • 量化感知模块:称为QSP(Quantization-aware Spatial Pyramid)和QCI(Quantization-aware Channel Interaction),这些模块结合了8位量化的重参数化技术,以最小化后训练量化过程中的精度损失。
  • 自动架构设计:使用AutoNAC,这是Deci专有的神经架构搜索(NAS)技术。
  • 混合量化方法:选择性地对模型的某些部分进行量化,以平衡延迟和精度,而不是采用标准量化方法,其中所有层都会受到影响。
  • 预训练方案:利用自动标注的数据、自蒸馏技术和大规模数据集进行预训练。

AutoNAC系统在创建YOLO-NAS中发挥了关键作用,它非常灵活,可以适应任何任务、特定数据、推理环境以及性能目标设定。该技术帮助用户识别最合适的结构,为他们的特定用途提供精确度和推理速度的最佳平衡。这项技术考虑了数据、硬件以及其他与推理过程相关的因素,如编译器和量化。此外,在NAS过程中,为了兼容后训练量化(PTQ),模型架构中还加入了RepVGG块。通过改变QSP和QCI块的深度和位置,他们生成了三种架构:YOLO-NASS、YOLO-NASM和YOLO-NASL(S、M、L分别代表小型、中型和大型)。下图展示了YOLO-NASL的模型架构。

YOLO-NAS

4 YOLO + Transformers

随着Transformer实现了自然语言处理、音频处理和计算机视觉的大一统之后,有学者开始研究将Transformer与YOLO结合。最早尝试使用Transformer进行目标检测的是You Only Look at One Sequence (YOLOS),它将预训练的视觉Transformer(ViT)从图像分类任务转换为目标检测任务,在MS COCO数据集上达到了42.0%的AP。它对ViT所做的更改有两点:(1)将用于分类的一个[CLS]标记替换为一百个[DET]标记以进行检测;(2)将ViT中的图像分类损失替换为类似于基于Transformer的端到端目标检测中使用的二分匹配损失。

许多工作将Transformer与特定应用定制的YOLO相关架构结合起来。例如,Zhang等人受到视觉Transformer在遮挡、扰动和领域迁移方面鲁棒性的启发,提出了ViT-YOLO,这是一种混合架构,它在骨干网络中结合了CSP-Darknet和多头自注意力机制(MHSA-Darknet),颈部采用了双向特征金字塔网络(BiFPN),以及像YOLOv3那样的多尺度检测头。他们的具体应用场景是无人机图像中的目标检测。下图展示了ViT-YOLO的详细架构。

ViT-YOLO

MSFT-YOLO在骨干网络和检测头上添加了基于Transformer的模块,旨在检测钢表面缺陷。NRT-YOLO (Nested Residual Transformer)试图解决遥感图像中微小物体的问题。通过增加额外的预测头、特征融合层和残差Transformer模块,NRT-YOLO在DOTA数据集上相对于YOLOv5l提高了5.4%。

在遥感应用中,YOLO-SD试图提高合成孔径雷达(SAR)图像中小船只的检测精度。他们从YOLOX开始,结合了多尺度卷积(MSC)以改进不同尺度下的检测,并使用特征Transformer模块来捕捉全局特征。作者表明,这些改动使得YOLO-SD在HRSID数据集上的表现优于YOLOX。

另一个有趣地将YOLO与检测Transformer(DETR)结合起来的尝试是DEYO,它包括两个阶段:一个基于YOLOv5的模型后接一个类似DETR的模型,第一阶段生成高质量的查询和锚框,作为第二阶段的输入。结果显示,这种方法比DETR具有更快的收敛时间和更好的性能,在COCO检测基准上达到了52.1%的AP。

5 YOLOv1-v8及变体网络结构总结

网络架构总结

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

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

相关文章

SE16N 外键校验报错问题

问题: SE16N维护时,偶尔有一些莫名奇妙的校验报错,条目XX在表XX中不存在,但是实际数据时存在的。 分析: DEBUG过程中,定位到数据校验部分,发现当外键定义的关联字段中存在某些不在对应维护表中…

【数据结构】二叉搜索树(二叉排序树)

🌟🌟作者主页:ephemerals__ 🌟🌟所属专栏:数据结构 目录 前言 一、什么是二叉搜索树 二、二叉搜索树的实现 节点 属性和接口的声明 插入 查找 删除 拷贝构造 析构 中序遍历 三、二叉搜索树的…

【接口自动化测试】一文从3000字从0到1详解接口测试用例设计

接口自动化测试是软件测试中的一种重要手段,它能有效提高测试效率和测试覆盖率。在进行接口自动化测试之前,首先需要进行接口测试用例的设计。本文将从0到1详细且规范的介绍接口测试用例设计的过程,帮助读者快速掌握这一技能。 一、了解接口…

使用 PDF API 合并 PDF 文件

内容来源: 如何在 Mac 上合并 PDF 文件 1. 注册与认证 您可以注册一个免费的 ComPDFKit API 帐户,该帐户允许您在 30 天内免费无限制地处理 1,000 多个文档。 ComPDFKit API 使用 JSON Web Tokens 方法进行安全身份验证。从控制面板获取您的公钥和密钥&…

微服务即时通讯系统的实现(服务端)----(2)

目录 1. 语音识别子服务的实现1.1 功能设计1.2 模块划分1.3 模块功能示意图1.4 接口的实现 2. 文件存储子服务的实现2.1 功能设计2.2 模块划分2.3 模块功能示意图2.4 接口的实现 3. 用户管理子服务的实现3.1 功能设计3.2 模块划分3.3 功能模块示意图3.4 数据管理3.4.1 关系数据…

Scala—列表(可变ListBuffer、不可变List)用法详解

Scala集合概述-链接 大家可以点击上方链接,先对Scala的集合有一个整体的概念🤣🤣🤣 在 Scala 中,列表(List)分为不可变列表(List)和可变列表(ListBuffer&…

Android 系统之Init进程分析

1、Init进程流程 2、Init细节逻辑 2.1 Init触发shutdown init进程触发系统重启是一个很合理的逻辑,为什么合理? init进程是android世界的一切基石,如果android世界的某些服务或者进程出现异常,那么会导致整个系统无法正常使用…

NVR录像机汇聚管理EasyNVR多个NVR同时管理基于B/S架构的技术特点与能力应用

EasyNVR视频融合平台基于云边端协同设计,能够轻松接入并管理海量的视频数据。该平台兼容性强、拓展灵活,提供了视频监控直播、录像存储、云存储服务、回放检索以及平台级联等一系列功能。B/S架构使得EasyNVR实现了视频监控的多元化兼容与高效管理。 其采…

使用ffmpeg命令实现视频文件间隔提取帧图片

将视频按每隔五秒从视频中提取一张图片 使用 ffmpeg 工具,通过设置 -vf(视频过滤器)和 -vsync 选项 命令格式 ffmpeg -i input_video.mp4 -vf "fps1/5" output_%03d.png 解释: -i input_video.mp4:指定输…

Java安全—原生反序列化重写方法链条分析触发类

前言 在Java安全中反序列化是一个非常重要点,有原生态的反序列化,还有一些特定漏洞情况下的。今天主要讲一下原生态的反序列化,这部分内容对于没Java基础的来说可能有点难,包括我。 序列化与反序列化 序列化:将内存…

现代网络架构PCI DSS合规范围确定和网络分割措施实施探讨

本文为atsec和作者技术共享类文章,旨在共同探讨信息安全业界的相关话题。未经许可,任何单位及个人不得以任何方式或理由对本文的任何内容进行修改。转载请注明:atsec信息安全和作者名称 1 引言 支付卡行业数据安全标准 (P…

docker快速部署gitlab

文章目录 场景部署步骤默认账号密码效果 场景 新增了一台机器, 在初始化本地开发环境,docker快速部署gitlab 部署步骤 编写dockerfile version: 3.7services:gitlab:image: gitlab/gitlab-ce:latestcontainer_name: gitlabrestart: alwayshostname: gitlabenviron…

Kubernetes 01

MESOS:APACHE 分布式资源管理框架 2019-5 Twitter退出,转向使用Kubernetes Docker Swarm 与Docker绑定,只对Docker的资源管理框架,阿里云默认Kubernetes Kubernetes:Google 10年的容器化基础框架,borg…

芯科科技率先支持Matter 1.4,推动智能家居迈向新高度

Matter 1.4引入核心增强功能、支持新设备类型,持续推进智能家居互联互通 近日,连接标准联盟(Connectivity Standard Alliance,CSA)发布了Matter 1.4标准版本。作为连接标准联盟的重要成员之一,以及Matter标…

Redis 分布式锁实现方案

一、概述 分布式锁,即分布式系统中的锁。在单体应用中我们通过锁解决的是控制共享资源访问的问题,而分布式锁,就是解决了分布式系统中控制共享资源访问的问题。与单体应用不同的是,分布式系统中竞争共享资源的最小粒度从线程升级…

数据结构-最小生成树

一.最小生成树的定义 从V个顶点的图里生成的一颗树,这颗树有V个顶点是连通的,有V-1条边,并且边的权值和是最小的,而且不能有回路 二.Prim算法 Prim算法又叫加点法,算法比较适合稠密图 每次把边权最小的顶点加入到树中&#xff0…

ASP.NET Web(.Net Framework) Http服务器搭建以及IIS站点发布

ASP.NET Web(.Net Framework) Http服务器搭建以及IIS站点发布 介绍创建ASP.NET Web (.Net Framework)http服务器创建项目创建脚本部署Http站点服务器测试 Get测试编写刚才的TestWebController.cs代码如下测试写法1测试写法2 Post测…

【AI系统】昇腾 AI 架构介绍

昇腾 AI 架构介绍 昇腾计算的基础软硬件是产业的核⼼,也是 AI 计算能⼒的来源。华为,作为昇腾计算产业⽣态的⼀员,是基础软硬件系统的核⼼贡献者。昇腾计算软硬件包括硬件系统、基础软件和应⽤使能等。 而本书介绍的 AI 系统整体架构&#…

org.apache.commons.lang3包下的StringUtils工具类的使用

前言 相信平时在写项目的时候,一定使用到StringUtils.isEmpty();StringUtils.isBlank();但是你真的了解他们吗? 也许你两个都不知道,也许你除了isEmpty/isNotEmpty/isNotBlank/isBlank外,并不知道还有isAnyEmpty/isNon…

vscode中json文件的注释飘红

vscode的json文件 添加注释,提示json中不允许有注释,点编辑器最下面的json,如下图 然后选择如上图的json with comments就好了