YOLO-NAS | YOLO新高度,引入NAS,出于YOLOv8而优于YOLOv8

图像处理机器学习微服务

点击下方卡片,关注「集智书童」公众号

点击加入👉「集智书童」交流群

picture.image

1

亮点在哪里?

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

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

ModelmAPLatency (ms)
YOLO-NAS S47.53.21
YOLO-NAS M51.555.85
YOLO-NAS L52.227.87
YOLO-NAS S INT-847.032.36
YOLO-NAS M INT-851.03.78
YOLO-NAS L INT-852.14.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个不同领域的数据集构成)进行训练以验证其处理复杂检测任务的能力。

picture.image

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

picture.image

picture.image

4

量化感知

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

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

5

上手体验

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

Step 1. 安装super-gradients


        
          
conda create -n sg python=3.7  
conda activate sg  
pip install super-gradients  

      

Step 2. 命令行测试


        
          
from super_gradients.training import models  
from super_gradients.common.object_names import Models  
  
net = models.get(Models.YOLO_NAS_S, pretrained_weights='coco')  
net.predict("bus.jpg").show()  

      

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

picture.image

当然,如果出了意外,可以试试用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,所以还需要再改一下,^^哈哈哈^^

picture.image

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

picture.image

最后的最后,如果只想体验,不想去安装super_gradients,可以在公众号后台回复"YOLO-NAS "获取资源(含ONNX模型、ORT+OCV推理脚本)。

picture.image

[picture.image

使用GPT4做Leetcode第 102 场双周赛](https://mp.weixin.qq.com/s?__biz=MzU5OTA2Mjk5Mw==&mid=2247507700&idx=3&sn=70d265925f15c559adf6400c9565efb1&chksm=feb83e4ac9cfb75ce156037a0b104765dcfcc322d0f6949d5d1c1111431cd5dc3df70bc393fb&scene=21#wechat_redirect)

[picture.image

大模型系列 | Grounded-SAM:只动嘴不动手的全自动化视觉工具](https://mp.weixin.qq.com/s?__biz=MzU5OTA2Mjk5Mw==&mid=2247507259&idx=3&sn=2e56abbd3293a294d6775f181523f1f7&chksm=feb83d85c9cfb493c58fbf672f0dd0f7ae158ab0b3f71377a7fb50c54dd8a07ba2f8496c7dcc&scene=21#wechat_redirect)

[picture.image

模型落地部署系列| 模型压缩-量化算法概述](https://mp.weixin.qq.com/s?__biz=MzU5OTA2Mjk5Mw==&mid=2247507203&idx=3&sn=b70216abf04e70f360342109c473d688&chksm=feb83dbdc9cfb4abc3d18dd91e55b7a7623516f81e6615d0f215ec1ffcc58b42e293fe988135&scene=21#wechat_redirect)

扫码加入👉「集智书童」交流群

(备注: 方向+学校/公司+昵称 )

picture.image

picture.image

picture.image

picture.image

picture.image

picture.image

想要了解更多:

前沿AI视觉感知全栈知识👉「分类、检测、分割、关键点、车道线检测、3D视觉(分割、检测)、多模态、目标跟踪、NerF」

行业技术方案 👉「AI安防、AI医疗、AI自动驾驶」

AI模型部署落地实战 👉「CUDA、TensorRT、NCNN、OpenVINO、MNN、ONNXRuntime以及地平线框架」

欢迎扫描上方二维码,加入「 集智书童-知识星球 」,日常分享论文、学习笔记、问题解决方案、部署方案以及全栈式答疑,期待交流!

免责声明

凡本公众号注明“来源:XXX(非集智书童)”的作品,均转载自其它媒体,版权归原作者所有,如有侵权请联系我们删除,谢谢。

点击下方“ 阅读原文 ”,

了解更多AI学习路上的 「武功秘籍」

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
火山引擎大规模机器学习平台架构设计与应用实践
围绕数据加速、模型分布式训练框架建设、大规模异构集群调度、模型开发过程标准化等AI工程化实践,全面分享如何以开发者的极致体验为核心,进行机器学习平台的设计与实现。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论