科技 > 人工智能 > VR/AR虚拟现实

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

87人参与 2024-08-01 VR/AR虚拟现实

一、介绍

github 仓库:

https://github.com/deci-ai/super-gradients/blob/master/yolonas.md

1.1 亮点

总而言之,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包管理器)来安装所需的库。以下是对每个命令的解释:

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的检测结果。这是一个常见的用法,用于检测图像中的物体并可视化检测结果。

在这里插入图片描述

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

计算机视觉--距离变换算法的实战应用

08-01

【计算机视觉 | 注意力机制】13种即插即用涨点模块分享!含注意力机制、卷积变体、Transformer变体等

08-01

人工智能的未来展望:自然语言处理(NLP)与计算机视觉(CV)

08-01

计算机视觉之ResNet50图像分类

08-01

Unity XR 设置VR设备手柄按键按下事件

08-01

6 测试方法 - 光学特性 - VR光学测量手册

08-01

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论