0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

超越YOLOv8!YOLO-NAS:下一代目标检测基础模型

CVer 来源:AIWalker 2023-05-15 15:31 次阅读

ea9a15d4-f2cc-11ed-90ce-dac502259ad0.png

1亮点在哪里?

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

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

Model mAP Latency (ms)
YOLO-NAS S 47.5 3.21
YOLO-NAS M 51.55 5.85
YOLO-NAS L 52.22 7.87
YOLO-NAS S INT-8 47.03 2.36
YOLO-NAS M INT-8 51.0 3.78
YOLO-NAS L INT-8 52.1 4.78

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。

3训练简介

YOLO-NAS采用了多阶段训练方式,包含(1)预训练:Object365+COCO伪标签数据;(2)知识蒸馏;(3) DFL,即Distribution Focal Loss

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

eab1f686-f2cc-11ed-90ce-dac502259ad0.png

下图对比了YOLO-NAS与YOLOv8、YOLOv5、YOLOv7在Roboflow100数据集上的性能。

eae4ea82-f2cc-11ed-90ce-dac502259ad0.png

eaf86878-f2cc-11ed-90ce-dac502259ad0.png

4量化感知

YOLO-NAS采用了量化感知模块与Selective量化以达成最优性能,即基于延迟-精度均衡考虑在特定层进行了"Skipping量化"。当转换为INT8量化模型后,YOLO-NAS具有更少的精度损失(L-M-S的损失分别为0.45,0.65,0.51mAP)。

YOLO-NAS架构和预训练权重定义了低延迟推理的新领域,也是微调下游任务的绝佳起点。

5上手体验

看完上面的介绍有没有“一头雾水”的感觉,哈哈,上手体验一把。

Step 1. 安装super-gradients

condacreate-nsgpython=3.7
condaactivatesg
pipinstallsuper-gradients

Step 2. 命令行测试

fromsuper_gradients.trainingimportmodels
fromsuper_gradients.common.object_namesimportModels

net=models.get(Models.YOLO_NAS_S,pretrained_weights='coco')
net.predict("bus.jpg").show()

不出意外的话,你就可以看到下面的输出结果了。

eb0efa7a-f2cc-11ed-90ce-dac502259ad0.png

当然,如果出了意外,可以试试用ONNX推理,导出只需一行代码。

models.convert_to_onnx(model=net,input_shape=(3,640,640),out_path='yolo-nas-s.onnx')

相关推理code可参考"YOLOv8-TensorRT"中的推理微调一下即可。需要注意以下两点,通过官方工具导出的"bboxes"已经是"xyxy"格式了,所以不需要再执行make_grid, distance2bbox等操作了,直接进行"NMS"即可。但是,OpenCV的NMS要求输入的BBOXES格式为xywh,所以还需要再改一下,^^哈哈哈^^

eb368a04-f2cc-11ed-90ce-dac502259ad0.png

最后,附上YOLO-NAS的网络结构示意图,这里仅给出了YOLO-NAS-S的示意图,另外两个跟这个整体类似,区别在于Block改为了YOLOv7的ELAN且通道数更多。

eb67bdfe-f2cc-11ed-90ce-dac502259ad0.png

审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 精度
    +关注

    关注

    0

    文章

    247

    浏览量

    19824
  • 目标检测
    +关注

    关注

    0

    文章

    186

    浏览量

    15460

原文标题:超越YOLOv8!YOLO-NAS:下一代目标检测基础模型

文章出处:【微信号:CVer,微信公众号:CVer】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    YOLOv5全面解析教程之目标检测模型精确度评估

    1、目标检测模型精确度评估  指标评估(重要的些定义)  指标的些基本概念:  TP(True Postives):分类器把正例正确的分
    发表于 11-21 16:40

    yolov7 onnx模型在NPU上太慢了怎么解决?

    我将 yolov7tiny.pt(yolov7-tiny 模型)转换为具有 uint8 权重的 yolov7tiny.onnx,然后在 i.
    发表于 04-04 06:13

    【爱芯派 Pro 开发板试用体验】yolov8模型转换

    尝试将最新的yolov8模型转换为爱芯派的模型。 环境准备 准备Docker环境 首先自己在任意机器上准备好docker环境,详细步骤见官网。 Docker 镜像文件 准备 yolo8
    发表于 11-20 12:19

    使用YOLOv8目标检测和实例分割的演示

    YOLOv8是来自Ultralytics的最新的基于YOLO的对象检测模型系列,提供最先进的性能。
    的头像 发表于 02-06 10:11 5998次阅读

    YOLOv8 来啦!一文带你解读 YOLO"内卷"期的模型选型以及在 NGC 飞桨容器中快速体验!

    本次为大家带来 YOLOv8、PP-YOLOE+等 YOLO 全系列体验。欢迎广大开发者使用 NVIDIA 与飞桨联合深度适配的 NGC 飞桨容器,在 NVIDIA GPU 上体
    的头像 发表于 02-18 01:50 1685次阅读

    在AI爱克斯开发板上用OpenVINO™加速YOLOv8分类模型

    本系列文章将在 AI 爱克斯开发板上使用 OpenVINO 开发套件依次部署并测评 YOLOv8 的分类模型目标检测模型、实例分割
    的头像 发表于 05-05 11:47 600次阅读
    在AI爱克斯开发板上用OpenVINO™加速<b class='flag-5'>YOLOv8</b>分类<b class='flag-5'>模型</b>

    在AI爱克斯开发板上用OpenVINO™加速YOLOv8目标检测模型

    《在 AI 爱克斯开发板上用 OpenVINO 加速 YOLOv8 分类模型》介绍了在 AI 爱克斯开发板上使用 OpenVINO 开发套件部署并测评 YOLOv8 的分类模型,本文将
    的头像 发表于 05-12 09:08 853次阅读
    在AI爱克斯开发板上用OpenVINO™加速<b class='flag-5'>YOLOv8</b><b class='flag-5'>目标</b><b class='flag-5'>检测</b><b class='flag-5'>模型</b>

    YOLOv8版本升级支持小目标检测与高分辨率图像输入

    YOLOv8版本最近版本又更新了,除了支持姿态评估以外,通过模型结构的修改还支持了小目标检测与高分辨率图像检测。原始的
    的头像 发表于 05-16 11:14 9115次阅读
    <b class='flag-5'>YOLOv8</b>版本升级支持小<b class='flag-5'>目标</b><b class='flag-5'>检测</b>与高分辨率图像输入

    AI爱克斯开发板上使用OpenVINO加速YOLOv8目标检测模型

    《在AI爱克斯开发板上用OpenVINO加速YOLOv8分类模型》介绍了在AI爱克斯开发板上使用OpenVINO 开发套件部署并测评YOLOv8的分类模型,本文将介绍在AI爱克斯开发板
    的头像 发表于 05-26 11:03 723次阅读
    AI爱克斯开发板上使用OpenVINO加速<b class='flag-5'>YOLOv8</b><b class='flag-5'>目标</b><b class='flag-5'>检测</b><b class='flag-5'>模型</b>

    教你如何用两行代码搞定YOLOv8各种模型推理

    大家好,YOLOv8 框架本身提供的API函数是可以两行代码实现 YOLOv8 模型推理,这次我把这段代码封装成了一个类,只有40行代码左右,可以同时支持YOLOv8对象
    的头像 发表于 06-18 11:50 2091次阅读
    教你如何用两行代码搞定<b class='flag-5'>YOLOv8</b>各种<b class='flag-5'>模型</b>推理

    目标检测算法再升级!YOLOv8保姆级教程一键体验

    YOLO作为一种基于图像全局信息进行预测的目标检测系统,始终保持着极高的迭代更新率,从YOLOv5到YOLOv8,本次升级主要包括结构算法、
    的头像 发表于 02-28 11:16 1491次阅读
    <b class='flag-5'>目标</b><b class='flag-5'>检测</b>算法再升级!<b class='flag-5'>YOLOv8</b>保姆级教程一键体验

    三种主流模型部署框架YOLOv8推理演示

    部署。这里以YOLOv8为例,演示了YOLOv8对象检测模型在OpenVINO、ONNXRUNTIME、TensorRT三个主流框架上C++推理演示效果。
    的头像 发表于 08-06 11:39 1850次阅读

    YOLOv8+OpenCV实现DM码定位检测与解析

    YOLOv8YOLO系列模型的最新王者,各种指标全面超越现有对象检测与实例分割模型,借鉴了
    的头像 发表于 08-10 11:35 750次阅读
    <b class='flag-5'>YOLOv</b>8+OpenCV实现DM码定位<b class='flag-5'>检测</b>与解析

    用自己的数据集训练YOLOv8实例分割模型

    YOLOv8 于 2023 年 1 月 10 日推出。截至目前,这是计算机视觉领域分类、检测和分割任务的最先进模型。该模型在准确性和执行时间方面都优于所有已知
    的头像 发表于 11-10 16:44 1444次阅读
    用自己的数据集训练<b class='flag-5'>YOLOv8</b>实例分割<b class='flag-5'>模型</b>

    基于YOLOv8的自定义医学图像分割

    YOLOv8是一种令人惊叹的分割模型;它易于训练、测试和部署。在本教程中,我们将学习如何在自定义数据集上使用YOLOv8。但在此之前,我想告诉你为什么在存在其他优秀的分割模型时应该使用
    的头像 发表于 12-20 10:51 411次阅读
    基于<b class='flag-5'>YOLOv8</b>的自定义医学图像分割