写点什么

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.

2022-08-31 12:473432

评论 1 条评论

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

云仿真平台有哪些特点

3DCAT实时渲染

云仿真

阿里云视频云互动虚拟技术,打造虚拟直播最佳沉浸式体验

阿里云视频云

直播

如何构建产品帮助中心

小炮

帮助中心

EMQ 云边协同解决方案在智慧工厂建设中的应用

EMQ映云科技

物联网 IoT 智慧工厂 边云协同 emq

低成本、快速造测试数据,这个造数工具我后悔推荐晚了!

Liam

测试 Postman 自动化测试 测试工具 测试自动化

linux监控软件有哪些?用什么软件好?

行云管家

Linux 运维 监控软件

开拓新领域 OpenHarmony多行业软件发行版逐步落地

科技汇

化繁为简!阿里新产亿级流量系统设计核心原理高级笔记(终极版)

Java全栈架构师

Java 程序员 架构 面试 架构师

从社会学角度解读机器学习

Taylor

机器学习 深度学习 学习方法 损失函数 梯度下降

国产GPU芯片概述

Finovy Cloud

人工智能 GPU服务器 GPU算力

如何在众筹中充分利用区块链技术?

CECBC

跨域处理

源字节1号

软件开发 后端开发 租房小程序

Windows服务器运维用什么软件好?不想加班了!

行云管家

运维 IT运维 行云管家 服务器运维 Windows服务器

观察者模式 vs 发布订阅模式,千万不要再混淆了

战场小包

前端 设计模式 4月月更

即时通讯软件建设,聚焦数据安全

a13823115807

龙蜥开发者说:从零开始的创造,是动力也是挑战 | 第5期

OpenAnolis小助手

操作系统 开发者故事 龙蜥开发者说 桌面DDE

Pipy MQTT 代理之(四)安全性

Flomesh

mqtt Proxy Pipy

渗透测试信息收集之子域名收集总结

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 漏洞挖掘

全面解读OpenHarmony 3.1 Release版本,夯实技术底座 打造繁荣生态

科技汇

手把手推导Ring All-reduce的数学性质

OneFlow

深度学习 reduce-scatter all-gather 环状算法

「Substrate Evangelist Program」顺利开幕,期待各位布道者共建 Substrate 生态!

One Block Community

Substrate 区块链资讯 波卡生态 Parity

netty系列之:netty对marshalling的支持

程序那些事

Java Netty 程序那些事 4月月更

巧用PostgreSQL高可用中间件,99999业务服务持续性不再是DBA的天花板

博文视点Broadview

Kylin、Druid、ClickHouse该如何选择?

五分钟学大数据

4月月更

iOS开发面试-如何打破30岁的中年危机

iOSer

ios iOS面试

新零售SaaS架构:组织管理的底层逻辑与架构设计

汤师爷

系统架构 SaaS 架构设计 组织架构

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