阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

YOLOX-PAI: 加速 YOLOX, 比 YOLOV6 更快更强

  • 2022-08-31
    北京
  • 本文字数:2973 字

    阅读完需:约 10 分钟

YOLOX-PAI:加速YOLOX,比YOLOV6更快更强

导言


近日,阿里云机器学习平台团队PAI通过自研的 PAI-EasyCV 框架复现 YOLOX 算法,并结合了 PAI 自研的 PAI-Blade 推理加速框架优化模型性能,使得加速过后的 YOLOX-PAI 在速度和精度上都比现阶段的轻量级目标检测的 SOTA 算法 YOLOV6 提速约 20%,同时,PAI-EasyCV提供高效简洁的模型部署和端到端推理接口,供社区快速体验使用 YOLOX-PAI 的功能。


目前,EasyCV 和 Blade 项目已在GitHub上开源:


https://github.com/alibaba/EasyCV


https://github.com/alibaba/BladeDISC



实现方案


1.提供了一套 Apache License 训练/优化/推理的代码库以及镜像,可以实现当前社区 40+mAP 量级最快(相比 YOLOV6 mAP 提升 0.4/加速 13~20%)的目标检测模型。


2.调研了 YOLOX 相关的改进技术和消融实验,总结了其中一些相对有帮助的改进,并以配置的方式提供出来。


3.对目标检测的端到端推理进行灵活封装及速度优化,在 V100 上的端到端推理为 3.9ms,相对原版 YOLOX 的 9.8ms,加速 250%,供用户快速完成目标检测推理任务。


本文,我们将重点介绍如何基于 PAI-EasyCV 使用 PAI-Blade 优化模型推理过程,及如何使用 PAI-EasyCV 进行模型训练、验证、部署和端到端推理。欢迎大家关注和使用 PAI-EasyCV 和 PAI-Blade,进行简单高效的视觉算法开发及部署任务。


YOLOX-PAI 精益求精的算法改进


YOLOX-PAI 是阿里云机器学习平台 PAI 的开源计算机视觉代码库 EasyCV 中集成的 YOLOX 算法。通过对 YOLOX 算法的分析,结合检测技术的调研,从以下 4 个方向对原版的 YOLOX 进行优化,


  1. Backbone : repvgg[1] backbone

  2. Neck : gsconv [2] / asff [3]

  3. Head : toods[4] / rtoods

  4. Loss : siou [5] / giou


在算法改进的基础上,利用 PAI-Blade 对改进后的的模型进行推理优化,开发了如下的 PAI-YOLOX 模型。具体改进的消融实验可以参考我们的[arxiv],筛选有效改进与现有主流算法的对比结果如下:


( -ASFF 代表使用了 NeckASFF, -TOODN 代表使用 N 个中间层的 TOODHead 取代原有的 YOLOXHead)



从结果中可以看到,相比目前同水平(1ms 以内)SOTA 的 YOLOV6 模型,融合上述改进的 YOLOX-PAI 在同等精度/速度的条件下有一定的速度/精度优势。(PS:上表精度测量和速度测量上与 YOLOV6 对齐,不包含 NMS 和后处理,测试精度也分图片大小等于 672/640 两种。)


YOLOX-PAI 简单的端到端预测



针对使用 PAI-EasyCV 训练的 YoloX-PAI 模型,用户可以使用 PAI-EasyCV 自带的导出功能得到优化后的模型,并使用 EasyCV 提供的 TorchYoloXPredictor 进行端到端的推理。 该导出功能对检测模型进行了如下优化:


  • 使用 PAI-Blade 优化模型推理速度,简化对模型的推理加速(TensorRT/编译优化)开发流程。


  • 支持 EasyCV 配置 TorchScript/PAI-Blade 对图像前处理、模型推理、图像后处理分别优化,供用户灵活使用。


  • 支持 python 环境下的 Predictor 结构端到端的模型推理优化,简化图片预测过程。


也可以参考[EasyCV detector.py] 自行组织相应的图像前处理/后处理过程,或直接使用我们导出好的模型和接口,这里提供一个已经导出好的检测模型,用户下载三个模型文件到本地

 [preprocess, model, meta]



用户可以直接使用 PAI-EasyCV 提供的 Predictor 接口,通过如下简单的 API 调用,



高效的进行图像的检测任务:


YOLOX-PAI 极致性能的推理优化


下图,我们展示了 YOLOX-PAI 在集成 PAI-Blade/torchscript 优化后和原版 YOLOX 的不同尺寸(s/m/l/x)模型的推理耗时对比, 在开启预处理优化和模型的 PAI-Blade 优化后:



可以看到 PAI-EasyCV 导出的模型,极大程度的优化了原模型的端到端推理速度,达到了接近 250%。


  • PAI-Blade 推理优化


PAI-Blade 是由阿里云机器学习平台PAI 开发的深度学习模型优化工具,可以针对不同的设备不同模型进行推理加速优化。PAI-Blade 遵循易用性,鲁棒性和高性能为原则,将模型的部署优化进行高度封装,设计了统一简单的 API,在完成 Blade 环境安装后,用户可以在不了解 ONNX、TensorRT、编译优化等技术细节的条件下,通过简单的代码调用方便的实现对模型的高性能部署。更多 PAI-Blade 相关技术介绍可以参考 [PAI-Blade 介绍]。


PAI-EasyCV 中对 PAI-Blade 进行了支持,用户可以通过 PAI-EasyCV 的训练 config 中配置相关的导出(export)参数,调用 PAI-Blade 用于优化导出模型,结合 EasyCV Predictor 完成图片的端到端的图像检测任务。


写在最后


YOLOX-PAI 是 PAI-EasyCV 团队基于旷视 YOLOX 复现并优化的在 V100BS32 的 1000fps 量级下的 SOTA 检测模型。整体工作上集成和对比了很多社区已有的工作:替换基于 RepVGG 的高性能 Backbone, 在 Neck 中添加基于特征图融合的 ASFF/GSConv 增强,在检测头中加入了任务相关的注意力机制 TOOD 结构。结合 PAI-Blade 编译优化技术,同等精度下比 YOLOV6 加速 13~20%。EasyCV 提供配套了一系列算法/训练/推理优化代码和环境,目前,YOLOX-PAI 已广泛的应用在阿里集团内外的互联网,智能零售,自动驾驶等客户场景中。


PAI-EasyCV(https://github.com/alibaba/EasyCV)是阿里云机器学习平台 PAI 研发的计算机视觉算法框架,已在集团内外多个业务场景取得相关业务落地成果,未来将聚焦在自监督学习/VisionTransformer 等前沿视觉领域,并结合 PAI-Blade 等自研技术不断优化。欢迎大家参与进来一同进步。


相关文献


[1] Ge Z, Liu S, Wang F, et al. Yolox: Exceeding yolo series in 2021[J]. arXiv preprint arXiv:2107.08430, 2021.


[2] YOLOv6, https://github.com/meituan/YOLOv6.


[3] Xu S, Wang X, Lv W, et al. PP-

YOLOE: An evolved version of YOLO[J]. arXiv preprint arXiv:2203.16250, 2022.


[4] Wang C Y, Liao H Y M, Wu Y H, et al. CSPNet: A new backbone that can enhance learning capability of CNN[C]//Proceedings of the IEEE/CVF conference on computer vision and pattern recognition workshops. 2020: 390-391.


[5] Ding X, Zhang X, Ma N, et al. Repvgg: Making vgg-style convnets great again[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2021: 13733-13742.


[6] Liu S, Huang D, Wang Y. Learning spatial fusion for single-shot object detection[J]. arXiv preprint arXiv:1911.09516, 2019.


[7] YOLOv5, https://github.com/ultralytics/yolov5.


[8] Li H, Li J, Wei H, et al. Slim-neck by GSConv: A better design paradigm of detector architectures for autonomous vehicles[J]. arXiv preprint arXiv:2206.02424, 2022.


[9] Feng C, Zhong Y, Gao Y, et al. Tood: Task-aligned one-stage object detection[C]//2021 IEEE/CVF International Conference on Computer Vision (ICCV). IEEE Computer Society, 2021: 3490-3499.


[10] Gevorgyan Z. SIoU Loss: More Powerful Learning for Bounding Box Regression[J]. arXiv preprint arXiv:2205.12740, 2022.


[11] Rezatofighi H, Tsoi N, Gwak J Y, et al. Generalized intersection over union: A metric and a loss for bounding box regression[C]//Proceedings of the IEEE/CVF conference on computer vision and pattern recognition. 2019: 658-666.

公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2022-08-31 12:474632

评论 1 条评论

发布
用户头像
2022-08-31 13:59 · 北京
回复
没有更多了
发现更多内容

微服务 Spring Boot 整合Redis 实战开发解决高并发数据缓存

Bug终结者

redis缓存 三周年连更

史上最全499道Java面试题:JVM+分布式+算法+锁+MQ+微服务+数据库

Java你猿哥

Java 架构 算法 JVM 多线程

综合清理优化工具:MacCleaner PRO激活版

真大的脸盆

Mac Mac 软件 清理工具 系统清理 优化软件

MySQL进阶之道,MySql性能实战源码+笔记+项目实战

程序知音

Java MySQL 数据库 后端

迪斯克分投趣模式挖矿分红dapp系统开发功能详情

开发v-hkkf5566

使用depay信用卡开通chatGPT付费API

石云升

AI ChatGPT 三周年连更

MySQL 主键自增也有坑?

江南一点雨

MySQL

最新Java岗面试清单:分布式+Dubbo+线程+Redis+数据库+JVM+并发

Java你猿哥

Java spring JVM 多线程 myssql

原生开发能不能动态化?移动端动态能力建设的流派有哪些?

没有用户名丶

Qz学算法-数据结构篇(引入)

浅辄

数据结构 三周年连更

《一时重构一时爽,一直重构一直爽》

后台技术汇

代码重构 软件重构 三周年连更

云原生2.0网关API标准发展趋势

华为云开发者联盟

云原生 后端 华为云 华为云开发者联盟 企业号 4 月 PK 榜

2023年,人工智能和数据训练呈现哪些新趋势?

澳鹏Appen

人工智能 机器学习 数据标注

景区共享电动车厂家如何找?投放前景如何

共享电单车厂家

共享电动车厂家 景区共享电单车 共享电单车投放 共享电单车生产

【重磅】针对小微企业信息安全,行云管家堡垒机隆重推出免费版

行云管家

云计算 企业上云 安全运维 运维安全

聊聊实例化需求

老张

需求分析 实例化需求

【Linux】之如何卸载干净zabbix服务?(超详细)

A-刘晨阳

Linux zabbix 三周年连更

Alibaba微服务线上架构攻略,从实战到源码精讲

程序知音

Java 微服务 SpringCloud java架构 后端技术

如何在页面中监听“不存在”的 DOM 节点

茶无味的一天

JavaScript DOM web api 水印 MutationObserver

Rainbond 结合 Jpom 实现云原生 & 本地一体化项目管理

北京好雨科技有限公司

Kubernetes 云原生 rainbond 企业号 4 月 PK 榜

再获殊荣!华为云GaussDB喜提“科技进步一等奖”

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 4 月 PK 榜

聊聊 CSS 隐藏元素的 10 种实用方法

茶无味的一天

CSS 隐藏元素

详解HTTP Keep-Alive选项说明及注意事项

阿泽🧸

keep-alive 三周年连更

好用的eval | python小知识

AIWeker

Python python小知识 三周年连更

600+ 道 Java面试题及答案整理(建议收藏)

Java你猿哥

Java spring 分布式 mybatis 多线程

阿里云何川:计算巢产品规划与生态策略解读

云布道师

计算巢

关于Java微服务的打包问题

Java你猿哥

Java 微服务 SSM框架

工作两年才真正搞懂Spring的核心概念:spring基础框架及技术生态

Java你猿哥

Java spring Spring Boot spring框架 Spring核心

好用的配置工具yaml | python小知识

AIWeker

Python python小知识 三周年连更

OpenHarmony开发者大会举办,OpenHarmony项目群授牌30家捐赠单位及个人

最新动态

矢量图片转换工具:Vector Magic 免激活版

真大的脸盆

Mac Mac 软件 图片格式转换 图片格式

YOLOX-PAI:加速YOLOX,比YOLOV6更快更强_开源_忻怡_InfoQ精选文章