【计算机视觉 | 目标检测】YOLO-NAS的介绍以及如何使用?(含源代码)

news2025/2/25 20:36:10

文章目录

  • 一、介绍
    • 1.1 亮点
    • 1.2 方案简介
    • 1.3 训练简介
  • 二、使用案例

一、介绍

Github 仓库:

https://github.com/Deci-AI/super-gradients/blob/master/YOLONAS.md

1.1 亮点

  • 参考QARepVGG,该方案引入了QSP与QCI模块以同时利用重参数与8-bit量化的优化;
  • 该方案采用AutoNAC搜索最优尺寸、每个stage的结构,含模块类型、数量以及通道数;
  • 采用混合量化机制进行模型量化,既考虑了每一层对精度与延迟的影响,也考虑了8-bit与16-bit之间切换对整体延迟的影响;
  • 预训练方案:automatically labeled data, self-distillation, and large datasets

总而言之,YOLO-NAS达成目标检测任务新高度,取得了最佳的精度-延迟均衡。值得一提的事,YOLO-NAS与TensorRT推理引擎完全兼容,且支持INT8量化,达成前所未有的运行时性能。

在这里插入图片描述

1.2 方案简介

受启发于YOLOv6、YOLOv7以及YOLOv8,DECI的研究人员采用AutoNAC搜索比YOLOv8更优的架构,即"We used machine learning to find a new deep learning architecture!"

为什么要用AutoNAC呢? 这是因为手工寻找"正确"结构过于低效且乏味,因此DECI的研究人员采用AutoNAC搜索新的目标检测模型,同时最小化在NVIDIA T4上的推理延迟。

为构建YOLO-NAS,作者构建了一个深不可测的搜索空间(1014)以探索精度-延迟上限。最终,作者从中三样三个"前沿观察点"构建了YOLO-NAS-S,YOLO-NAS-M,YOLO-NAS-L。

1.3 训练简介

YOLO-NAS采用了多阶段训练方式,包含:

  1. 预训练:Object365+COCO伪标签数据
  2. 知识蒸馏
  3. DFL,即Distribution Focal Loss

Deci 很高兴地宣布发布新的对象检测模型 YOLO-NAS - 对象检测领域的游戏规则改变者,提供卓越的实时对象检测功能和生产就绪性能。 Deci 的使命是为 AI 团队提供工具,以消除开发障碍并更快地获得高效的推理性能。

在这里插入图片描述
在训练数据方面,作者基于RoboFlow100(由100个不同领域的数据集构成)进行训练以验证其处理复杂检测任务的能力。

我们展示了 YOLO-NAS 在下游任务上的出色性能。 在 Roboflow-100 上进行微调时,我们的 YOLO-NAS 模型比最接近的竞争对手实现了更高的 mAP:

在这里插入图片描述
YOLO-NAS 的架构采用量化感知块和选择性量化来优化性能。 当转换为 INT8 量化版本时,与在量化过程中损失 1-2 个 mAP 点的其他模型相比,YOLO-NAS 的精度下降较小(S、M 和 L 变体的 mAP 为 0.51、0.65 和 0.45 点)。 这些技术最终形成了具有卓越物体检测功能和一流性能的创新架构。

二、使用案例

首先安装对应的包:

%%capture
!pip install super-gradients==3.2.0
!pip install imutils
!pip install roboflow
!pip install pytube --upgrade
!pip install torchinfo

当运行%%capture之后,接下来的代码单元是用于安装一些Python库和依赖项的命令。这些命令通过pip(Python包管理器)来安装所需的库。以下是对每个命令的解释:

  • !pip install super-gradients==3.2.0:这是用于安装名为super-gradients的Python库的命令,同时指定了特定版本号3.2.0。
  • !pip install imutils:这是用于安装名为imutils的Python库的命令,通常用于图像处理和计算机视觉任务。
  • !pip install roboflow:这是用于安装名为roboflow的Python库的命令,通常用于机器学习和计算机视觉中的数据预处理和数据管理。
  • !pip install pytube --upgrade:这是用于升级名为pytube的Python库的命令,pytube通常用于从YouTube上下载视频。
  • !pip install torchinfo:这是用于安装名为torchinfo的Python库的命令,torchinfo通常用于查看PyTorch模型的详细信息。
from super_gradients.training import models

yolo_nas_l = models.get("yolo_nas_l", pretrained_weights="coco")

这段代码使用了super_gradients库中的training.models模块来获取一个名为yolo_nas_l的预训练模型,并加载了预训练权重。

from super_gradients.training import models:这行代码从super_gradients库中的training.models模块中导入了models。

yolo_nas_l = models.get(“yolo_nas_l”, pretrained_weights=“coco”):这行代码调用models.get()函数,以获取名为yolo_nas_l的预训练模型。预训练模型的选择是通过传递字符串参数"yolo_nas_l"来完成的。此模型似乎是一个YOLO(You Only Look Once)目标检测模型的变体。

pretrained_weights=“coco”:这是一个额外的参数,指定了要使用的预训练权重。"coco"表示该模型在COCO(Common Objects in Context)数据集上进行了预训练,该数据集包含各种对象的图像和标签。

最终,yolo_nas_l将包含加载的预训练模型,我们可以使用它进行目标检测任务,或在其基础上进行微调以适应特定任务或数据集。这个模型对象将具有预训练权重,这意味着它在COCO数据集上训练过,可以用于对象检测任务。

在这里插入图片描述

from torchinfo import summary

summary(model=yolo_nas_l,
        input_size=(16, 3, 640, 640),
        col_names=["input_size", "output_size", "num_params", "trainable"],
        col_width=20,
        row_settings=["var_names"]
)

这段代码使用了torchinfo库中的summary函数来生成关于模型结构和参数的摘要信息,并使用特定的参数来配置输出的格式。

from torchinfo import summary:这行代码导入了torchinfo库中的summary函数,该函数用于生成有关PyTorch模型的摘要信息。

summary(model=yolo_nas_l, input_size=(16, 3, 640, 640), col_names=["input_size", "output_size", "num_params", "trainable"], col_width=20, row_settings=["var_names"]):这是summary函数的调用,它接受多个参数来生成模型摘要:

model=yolo_nas_l:这指定要分析的模型是yolo_nas_l,即之前通过super_gradients库加载的模型。

input_size=(16, 3, 640, 640):这指定了输入张量的大小,其中(16, 3, 640, 640)表示批处理大小为16,通道数为3(RGB图像),图像大小为640x640。

col_names=["input_size", "output_size", "num_params", "trainable"]:这是一个字符串列表,指定了生成的摘要表格的列名称。摘要表格将包括输入大小、输出大小、参数数量和可训练参数数量等列。

col_width=20:这指定了表格中每列的宽度,以确保信息的可读性。

row_settings=["var_names"]:这是一个字符串列表,指定了在每行中显示的其他信息。在此示例中,它设置为[“var_names”],表示每行将显示变量的名称。

最终,该代码将生成一个表格,其中包含关于yolo_nas_l模型结构和参数的摘要信息。这个摘要信息包括输入和输出大小、总参数数量以及可训练参数数量,帮助我们更好地了解模型的结构和规模。

在这里插入图片描述

image_path = "D:/CodeProject/Yolov8/2.jpg"
yolo_nas_l.predict(image_path, conf = 0.25).show()

这段代码使用了一个名为yolo_nas_l的模型来进行目标检测,并显示检测结果的图像。

image_path = "D:/CodeProject/Yolov8/2.jpg":这行代码指定了要进行目标检测的输入图像的文件路径。图像的路径是"D:/CodeProject/Yolov8/2.jpg"。

yolo_nas_l.predict(image_path, conf = 0.25):这是使用模型进行目标检测的部分。yolo_nas_l是之前加载的预训练目标检测模型。predict函数接受输入图像的路径以及一个conf参数,用于设置检测的置信度阈值。

image_path:这是输入图像的路径,告诉模型要在哪个图像上执行目标检测。

conf=0.25:这个参数指定了置信度阈值,它控制了哪些检测框被保留。在这种情况下,只有置信度大于或等于0.25的检测结果才会被保留。

.show():这是在目标检测后显示检测结果的方法。它将绘制检测框和类别标签等信息在输入图像上,并显示出来。

综合起来,这段代码的作用是使用yolo_nas_l模型对指定路径的图像进行目标检测,并显示出检测结果的图像,其中仅显示置信度大于等于0.25的检测结果。这是一个常见的用法,用于检测图像中的物体并可视化检测结果。

在这里插入图片描述

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

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

相关文章

C语言练习题解析(2)

💓博客主页:江池俊的博客⏩收录专栏:C语言刷题专栏👉专栏推荐:✅C语言初阶之路 ✅C语言进阶之路💻代码仓库:江池俊的代码仓库🎉欢迎大家点赞👍评论📝收藏⭐ 文…

d3dx9_43.dll文件缺失的修复方法有哪些?4个方法快速修复d3dx9_43.dll

最近有很多小伙伴反映说他的电脑经常出现一个问题,那就是d3dx9_43.dll文件缺失了,然后一些程序都打不开,他们都是一脸懵逼,不知道怎么去处理这个问题,今天小编就要来给大家详细的说说这方面,d3dx9_43.dll文…

小谈设计模式(3)—策略模式

小谈设计模式(3)—策略模式 专栏介绍专栏地址专栏介绍 策略模式主要角色环境(Context)抽象策略(Strategy)具体策略(Concrete Strategy)角色总结 核心思想封装算法定义抽象策略使用环…

Minio入门系列【3】MinIO Client使用详解

1 简介 简称mc,是minio服务器的客户端,对ls,cat,cp,mirror,diff,find等UNIX命令提供了一种替代方案,它支持文件系统和兼容Amazon S3的云存储服务(AWS Signature v2和v4&…

nginx知识点详解:反向代理+负载均衡+动静分离+高可用集群

一、nginx基本概念 1. nginx是什么,做什么事情? Nginx是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强。Nginx转为性能优化而开发,能经受高负载考验。支持热部署,启动容易,运…

(三十二)大数据实战——Maxwell安装部署及其应用案例实战

前言 Maxwell是一个开源的MySQL数据库binlog解析工具,用于将MySQL数据库的binlog转换成易于消费的JSON格式,并通过Kafka、RabbitMQ、Kinesis 等消息队列或直接写入文件等方式将其输出。本节内容主要介绍如何安装部署Maxwell以及如何使用Maxwell完成数据…

通用商城项目(下)

记录一些踩坑的地方,以及理顺一些思路。 通过管理系统页面,完成商品属性分组和商品属性(基本属性)关联维护 属性表 与 属性组表 的功能完善:显示属性组与属性表的一对多关系 前端 1. 引入组件,是否显示使…

qgroundcontrol源码Andriod平台编译

1.下载QGC(qgroundcontrol)源码: 2.安装Qt5.15.2 3.配置Android平台工具集: 4.打开QGC项目文件: 5.安卓工程输出路径: 6.创建签名文件: 7.右击工程,然后选择Build 8.修改生成工程gradle.properties(Global Properties)增加下面内容: org.gradle.jvmargs-Xmx1536M --add-export…

UGNX配置许可服务器

UG客户端配置许可服务器,第一次安装完成或修改成其他许可服务器  打开菜单栏,找到Siemens NX目录->许可证工具->许可工具  切换到环境设置,设置许可服务器,点击编辑,弹出编辑框输入端口服务器IP。  输入…

[字符串和内存函数]strcat和strncat的区别

CPlus中对strcat的介绍 /* strcat example */ #include <stdio.h> #include <string.h>int main () {char str[80];strcpy (str,"these ");strcat (str,"strings ");strcat (str,"are ");strcat (str,"concatenated.");p…

进程间通信(IPC)的方法:共享内存

共享内存(shared memory)是可用IPC技术中最快的一种。一旦内存被映射到共享内存区域的进程的地址空间中&#xff0c;在进程之间传递数据时就不会发生内核(kernel)参与。然而&#xff0c;在共享内存区域存储和提取数据时&#xff0c;进程之间需要某些形式的同步(例如互斥锁、条件…

Spring Boot的魔法:构建高效Java应用的秘诀

文章目录 1. 自动配置&#xff08;Auto-Configuration&#xff09;2. 起步依赖&#xff08;Starter Dependencies&#xff09;3. 内嵌Web服务器&#xff08;Embedded Web Server&#xff09;4. 外部化配置&#xff08;Externalized Configuration&#xff09;5. Spring Boot Ac…

每日一题 213. 打家劫舍 II

难度&#xff1a;中等 思路&#xff1a; 首先不看成环&#xff0c;只是当作列表&#xff0c;那么对于第 i 间房&#xff0c;到 i 为止的最高偷窃金额为 f(i) max(f(i - 1), f(i - 2) nums[i])分析递推关系第一点&#xff0c;不管 i - 2 处的房子是否偷窃&#xff0c;i 处的…

【基础篇】ClickHouse 表结构设计

文章目录 1. ClickHouse 表结构设计1. 表的创建与标准SQL的差异1. 创建普通表2. 创建物化视图3. 创建分布式表 2. 表引擎1. MergeTree:2. Log:3. Memory:4. Distributed:5. Kafka:6. MaterializedView:7. File和URL: 3. MergeTree 家族3.1. MergeTree:3.2. ReplacingMergeTree:…

Nacos单机启动的两种方式

说明&#xff1a;直接双击nacos的启动脚本&#xff0c;默认是集群&#xff08;cluster&#xff09;的方式&#xff1b; 需要单机启动&#xff0c;有以下两种方式&#xff1b; 方式一&#xff1a;命令行 在当前目录打开命令窗口&#xff0c;输入以下命令启动nacos startup.…

jdk1.8堆内存学习

jdk1.8堆内存启动时控制参数图解 堆大小年轻代&#xff08;Young Generation&#xff09;年老代&#xff08;Old Generation&#xff09; GC相关 -Xnoclassgc&#xff1a;关闭JVM垃圾回收功能 -XX:UseSerialGC&#xff1a;使用Serial垃圾收集器&#xff0c;单线程串型收集器&…

Linux安装包 | Git使用 | NFC搭建

dpgt使用 当谈到基于 Debian 的操作系统中的软件包管理工具时&#xff0c;dpkg 是一个重要的工具。它是 Debian 系统中用于安装、升级、配置和卸载软件包的命令行工具。以下是对 dpkg 的详细介绍&#xff1a; 软件包管理&#xff1a;dpkg 可以管理系统中的软件包。它可以安装单…

Acwing 829. 模拟队列

Acwing 829. 模拟队列 题目描述思路讲解代码展示 题目描述 思路讲解 队列是先进先出&#xff0c;类比排队买饭 代码展示 #include <iostream>using namespace std;const int N 100010;int m; int q[N], hh, tt -1;int main() {cin >> m;while (m -- ){string …

ArmSoM-W3之RK3588 Debian11详解

1. 简介 RK3588从入门到精通Debian 是⼀种完全⾃由开放并⼴泛⽤于各种设备的 Linux 操作系统。Rockchip在官⽅Debian发⾏版的基础上构建和适配了相关硬件功能 2. 环境介绍 硬件环境&#xff1a; ArmSoM-W3 RK3588开发板 软件版本&#xff1a; OS&#xff1a;ArmSoM-W3 Debia…

服务器中了DevicData勒索病毒怎么办?勒索病毒解密,数据恢复

近日&#xff0c;云天数据恢复中心收到许多中了勒索病毒的用户求助。其中有多位用户中的都是同一种勒索病毒&#xff0c;它就是DevicData勒索病毒。那接下来我们就从它的特征、处理方案以及后续维护三个方面来了解一下这种勒索病毒。 一、DevicData勒索病毒的特征 加密文件&am…