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

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

3天内不再提示

Yolo系列模型的部署、精度对齐与int8量化加速

jf_pmFSk4VX 来源:GiantPandaCV 2023-11-23 16:40 次阅读

Yolo系列模型的部署、精度对齐与int8量化加速

大家好,我是海滨。写这篇文章的目的是为宣传我在23年初到现在完成的一项工作---Yolo系列模型在TensorRT上的部署与量化加速,目前以通过视频的形式在B站发布(不收费,只图一个一剑三连)。

麻雀虽小但五脏俱全,本项目系统介绍了YOLO系列模型在TensorRT上的量化方案,工程型较强,我们给出的工具可以实现不同量化方案在Yolo系列模型的量化部署,无论是工程实践还是学术实验,相信都会对你带来一定的帮助。

B站地址(求关注和三连):https://www.bilibili.com/video/BV1Ds4y1k7yr/

Github开源地址(求star):https://github.com/thb1314/mmyolo_tensorrt/

当时想做这个的目的是是为了总结一下目标检测模型的量化加速到底会遇到什么坑,只是没想到不量化坑都会很多。

比如即使是以FP32形式推理,由于TensorRT算子参数的一些限制和TRT和torch内部实现的不同,导致torch推理结果会和TensorRT推理结果天然的不统一,至于为什么不统一这里卖个关子大家感兴趣可以看下视频。

下面说一下我们这个项目做了哪些事情

YOLO系列模型在tensorrt上的部署与精度对齐

该项目详细介绍了Yolo系列模型在TensorRT上的FP32的精度部署,基于mmyolo框架导出各种yolo模型的onnx,在coco val数据集上对齐torch版本与TensorRT版本的精度。

在此过程中我们发现,由于TopK算子限制和NMS算子实现上的不同,我们无法完全对齐torch和yolo模型的精度,不过这种风险是可解释且可控的。

详解TensorRT量化的三种实现方式

TensorRT量化的三种实现方式包括trt7自带量化、dynamic range api,trt8引入的QDQ算子。

Dynamic range api会在采用基于MQbench框架做PTQ时讲解。

TensorRT引入的QDQ算子方式在针对Yolo模型的PTQ和QAT方式时都有详细的阐述,当然这个过程也没有那么顺利。

在基于PytorchQuantization导出的含有QDQ节点的onnx时,我们发现尽管量化版本的torch模型精度很高,但是在TensorRT部署时精度却很低,TRT部署收精度损失很严重,通过可视化其他量化形式的engine和问题engine进行对比,我们发现是一些层的int8量化会出问题,由此找出问题量化节点解决。

详解MQbench量化工具包在TensorRT上的应用

我们研究了基于MQbench框架的普通PTQ算法和包括Adaround高阶PTQ算法,且启发于Adaround高阶PTQ算法。

我们将torch版本中的HistogramObserver引入到MQBench中,activation采用HistogramObserverweight采用MinMaxObserver,在PTQ过程中,weight的校准前向传播一次,activation的校准需要多次因此我们将weight的PTQ过程和activation的PTQ过程分开进行,加速PTQ量化。实践证明,我们采用上述配置的分离PTQ量化在yolov8上可以取得基本不掉点的int8量化精度。

针对YoloV6这种难量化模型,分别采用部分量化和QAT来弥补量化精度损失

在部分量化阶段,我们采用量化敏感层分析技术来判断哪些层最需要恢复原始精度,给出各种metric的量化敏感层实现。

在QAT阶段,不同于原始Yolov6论文中蒸馏+RepOPT的方式,我们直接采用上述部分量化后的模型做出初始模型进行finetune,结果发现finetune后的模型依然取得不错效果。

针对旋转目标检测,我们同样给出一种端到端方案,最后的输出就是NMS后的结果。通过将TensorRT中的EfficientNMS Plugin和mmcv中旋转框iou计算的cuda实现相结合,给出EfficientNMS for rotated box版本,经过简单验证我们的TRT版本与Torch版本模型输出基本对齐。

以上就是我们这个项目做的事情,欢迎各位看官关注b站和一剑三连。同时,如果各位有更好的想法也欢迎给我们的git仓库提PR。

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

    关注

    23

    文章

    4633

    浏览量

    93474
  • 模型
    +关注

    关注

    1

    文章

    3372

    浏览量

    49314
  • 精度
    +关注

    关注

    0

    文章

    262

    浏览量

    20115

原文标题:Yolo系列模型的部署、精度对齐与int8量化加速

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

收藏 人收藏

    评论

    相关推荐

    添越智创基于 RK3588 开发板部署测试 DeepSeek 模型全攻略

    飙升至百分之百,满负荷运转,而开发板强大的 NPU 却闲置一旁,无法发挥加速运算优势,这在一定程度上限制了模型的运行效率与性能表现。 02-用RKLLM量化部署-挖掘NPU潜力
    发表于 02-14 17:42

    AI模型部署边缘设备的奇妙之旅:目标检测模型

    4/int8/fp16/混合精度)、内存大小等参数,对于手上的板子有一个全面的了解。在进行部署时,我们常常将训练的模型转化成onnx中间文件,再根据硬件设备要求的转化成硬件要求的
    发表于 12-19 14:33

    解锁NVIDIA TensorRT-LLM的卓越性能

    Batching、Paged KV Caching、量化技术 (FP8INT4 AWQ、INT8 SmoothQuant 等) 以及更多功能,确保您的 NVIDIA GPU 能发挥
    的头像 发表于 12-17 17:47 324次阅读

    使用英特尔AI PC为YOLO模型训练加速

    在以往的实践中,当我们针对 ultralytics 的 YOLO 模型开展训练工作时,可供选择的计算设备通常局限于 CPU、mps 以及 cuda 这几种。然而,自 PyTorch2.5 版本发布
    的头像 发表于 12-09 16:14 585次阅读
    使用英特尔AI PC为<b class='flag-5'>YOLO</b><b class='flag-5'>模型</b>训练<b class='flag-5'>加速</b>

    AI模型部署边缘设备的奇妙之旅:如何实现手写数字识别

    准备工作 在进行模型部署之前,我们首先需要确认自己手上的模块的支持哪些算子、支持什么类型的量化int4/int8/fp16/混合
    发表于 12-06 17:20

    助力AIoT应用:在米尔FPGA开发板上实现Tiny YOLO V4

    为定点精度(例如 INT8),而非浮点数。这在维持准确度的同时显著降低计算量,尤其适合 FPGA 的固定点运算支持。 Tiny YOLO 模型在 Vivado HLS 中的层层转化
    发表于 12-06 17:18

    TensorRT-LLM低精度推理优化

    本文将分享 TensorRT-LLM 中低精度量化内容,并从精度和速度角度对比 FP8INT8。首先介绍性能,包括速度和精度。其次,介
    的头像 发表于 11-19 14:29 527次阅读
    TensorRT-LLM低<b class='flag-5'>精度</b>推理优化

    OrangePi KunPeng Pro部署AI模型介绍

    OrangePi Kunpeng Pro是一款香橙派联合华为精心打造的高性能板卡,搭载了鲲鹏处理器,可提供8TOPS INT8计算能力,板卡设计很精致,板载资源也非常多:
    的头像 发表于 11-16 11:03 500次阅读
    OrangePi KunPeng Pro<b class='flag-5'>部署</b>AI<b class='flag-5'>模型</b>介绍

    【飞凌嵌入式OK3576-C开发板体验】rkllm模型量化构建

    ;目前 rk3576 平台支持“w4a16”和“w8a8”两种量化类型,rk3588 仅支持“w8a8量化类型; target_platform:
    发表于 08-27 22:50

    源2.0-M32大模型发布量化版 运行显存仅需23GB 性能可媲美LLaMA3

    2.0-M32量化版是"源"大模型团队为进一步提高模算效率,降低大模型部署运行的计算资源要求而推出的版本,通过采用领先的量化技术,将原
    的头像 发表于 08-25 22:06 408次阅读
    源2.0-M32大<b class='flag-5'>模型</b>发布<b class='flag-5'>量化</b>版 运行显存仅需23GB 性能可媲美LLaMA3

    深度神经网络模型量化的基本方法

    深度神经网络模型量化是深度学习领域中的一种重要优化技术,旨在通过减少模型参数的精度(即从高精度浮点数如32位浮点数FP32降低到低
    的头像 发表于 07-15 11:26 843次阅读

    深度学习模型量化方法

    深度学习模型量化是一种重要的模型量化技术,旨在通过减少网络参数的比特宽度来减小模型大小和加速
    的头像 发表于 07-15 11:01 605次阅读
    深度学习<b class='flag-5'>模型</b><b class='flag-5'>量化</b>方法

    【算能RADXA微服务器试用体验】+ GPT语音与视觉交互:2,图像识别

    BModel混合精度量化 ├── yolov8s_qtable_fp32 # TPU-MLIR编译时,用于BM1684的INT8 BModel混合精度量化
    发表于 07-14 23:36

    esp-dl int8量化模型数据集评估精度下降的疑问求解?

    一 试着将模型进行了esp-dl上int16和int8量化,并在测试数据集上进行精度评估,其中int
    发表于 06-28 15:10

    使用esp-dl中的example量化我的YOLO模型时,提示ValueError: current model is not supported by esp-dl错误,为什么?

    使用esp-dl中的example量化我的YOLO模型时,提示:ValueError: current model is not supported by esp-dl 错误, 请看我的代码和
    发表于 06-28 06:47