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。
关于锂离子电池静置测量方法
微软确认将在4月底关闭微软启动器安卓版Cortana服务
麒麟810高清图赏
中微公司喜迎全球第500台MOCVD设备付运里程碑
智云smooth4手持稳定器评测 在同价位竞品中表现出色
Yolo系列模型的部署、精度对齐与int8量化加速
华灿光电20.84亿定增募资获批,京东方即将入主
一文了解Raspberry Pi 4各项性能跑分
是德科技在世界移动通信大会上展示 UXM 无线测试仪的最新增强
FPGA基于线性迭代法的除法器设计
KUKA C4如何使用诊断监视器?
电子哨兵+闸机人脸测温方案,筑牢出入防疫关口
叁陆零云储深耕布局IPFS分布式存储千亿级市场
2025年,中国OLED出货量将超过韩国
PyTorch教程-5.4. 数值稳定性和初始化
物联网网关采集工业设备数据实现远程监控管理
陶瓷压力传感器的结构图
世界集成电路产业格局现状如何 我国何时打破困境
lecroy力科示波器维修案例【图文详解】
《深度学习平台支撑产业智能化》百度CTO王海峰CNCC2019深度解读