当前位置: 首页 > news >正文

YoloX大升级:阿里巴巴提出新框架,超越Yolov6和PPYoloE(附源代码)

关注并星标

从此不迷路

计算机视觉研究院

4c6e4f1def17268adebca204d763f509.gif

2a027dee8bdb24a7a4c04c2c951e3361.gif

公众号ID|ComputerVisionGzq

学习群|扫码在主页获取加入方式

13e55511ff95257465a3475fb1740b66.png

代码地址: https://github. com/alibaba/EasyCV

计算机视觉研究院专栏

作者:Edison_G

最新阿里巴巴研究员,基于自研平台,对YoloX检测框架进行了改进,并且效率更快,超越了Yolov6和PP-YoloE等网络。

01

概述

EasyCV是阿里巴巴开源的基于Pytorch,以自监督学习和Transformer技术为核心的 all-in-one 视觉算法建模工具。EasyCV在阿里巴巴集团内支撑了搜索、淘系、优酷、飞猪等多个BU业务,同时也在阿里云上服务了若干企业客户,通过平台化组件的形式,满足客户自定定制化模型、解决业务问题的需求。

bab77dca72e72f5722712b2fce152182.png

此外,基于PAI团队多年积累的深度学习训练、推理加速技术,在EasyCV中也集成了IO优化,模型训练加速、量化裁剪等功能,在性能上具备自己的优势。基于阿里云的PAI产品生态,用户可以方便地进行模型管理、在线服务部署、大规模离线推理任务。

38f4264a57a8d1903063d68f6448ad9b.jpeg

将YOLO检测器切换为无锚方式,并采用其他先进的检测技术,即解耦头和领先的标签分配策略SimOTA,以在大范围的模型中实现最先进的结果:对于只有0.91M参数和1.08GFLOPs的YOLO Nano,我们在COCO上获得25.3%的AP,超过NanoDet 1.8%的AP;对于工业上使用最广泛的探测器之一YOLOv3,我们在COCO上将其AP提高到47.3%,比当前的最佳做法高出3.0%AP;对于与YOLOv4 CSP、YOLOv5-L参数量大致相同的YOLOX-L,我们在COCO上以68.9 FPS的速度在Tesla V100上实现了50.0%的AP,超过了YOLOv5-L 1.8%的AP。

考虑到EasyCV的一些特性:

  • 丰富完善的自监督算法体系:囊括业界有代表性的图像自监督算法SimCLR, MoCO, Swav, Moby, DINO等,以及基于mask图像预训练方法MAE,同时提供了详细的benchmark工具及复现结果。

  • 丰富的预训练模型库:提供丰富的预训练模型,在以transformer模型为主的基础上,也包含了主流的CNN 模型, 支持ImageNet预训练和自监督预训练。兼容PytorchImageModels支持更为丰富的视觉Transformer backbone。

  • 易用性和可扩展性 :支持配置方式、API调用方式进行训练、评估、模型导出;框架采用主流的模块化设计,灵活可扩展。

  • 高性能 :支持多机多卡训练和评估,fp16训练加速。针对自监督场景数据量大的特点,利用DALI和TFRecord文件进行IO方面的加速。对接阿里云机器学习PAI平台训练加速、模型推理优化。

研究者基于EasyCV引入了YoloX-PAI,各种实验得出了影响YoloX的元素,并且提供了PAI-Blade,一种简单的实现方式,用于加速基于BladeDISC和TensorRT的推理过程。

49a4412fcd6b5c54c5af56e5fc274bfb.png

02

新框架

主干网络

新框架的主干网络还是引用Yolov6的,也是使用RepVGG-based,一个3x3卷积block代替multi-branch structure,有利于节约推理时间,并且提升了检测结果。

Neck

研究者使用了两种方式来提升Neck的性能,主要为:1)用于特征增强的自适应空间特征融合(ASFF)以及优化版本(ASFF-Sim);2)GSConv,一种轻量级的卷积块,主要为了降低计算成本。

f31db3f779ab0fda8484cb81e70c2afc.png

3c6c1de7158bb55536e56dc8958affb9.png

Head

10a2f9f9efafd5916f2bb79ae0ad29ef.png

研究者主要通过注意力机制来增强检测头,借鉴了Transform框架中的机制,主要为了协调物体检测和分类两个分支的任务,上图已经展示了检测头,使用stem模块来加内存通道数,然后有一组类间卷积层来获取类间特征图,然后根据不同任务自适应获取超参数。

PAI-Blade

7e0a8612882bd4dda936c6a7d8a35174.jpeg

通过统一的流程在不同框架上自动完成多样化的优化策略

  • Performance: 优异的执行性能仍然是我们考虑的最主要问题;没有性能的优化工具,不拥有价值。

  • Generality: 广泛的通用性能够适配更多场景,同时提供更多的开发和部署自由。

    • 支持 TensorFlow/PyTorch/ONNX

    • 支持多样的加速硬件,包括 GPU/CPU/DCU 等等

    • 支持不同的加速方案,BladeDISC/TensorRT/TVM/MNN 等等

  • Usability and Robustness: 易用性和鲁棒性能够降低用户的学习成本在生产系统中集成的成本。

    • 统一的简洁的 API

    • 最大程度的自动化

    • 轻量的集成负担(仅需要几行代码)

PAI-Blade 和以往其他的工具主要的不同点在于它不仅仅考虑性能,而是更加强调性能、通用性、易用性与鲁棒性的协同设计。

03

实验

bbcea1033dcc6f10fe933e5f6c50158a.png

© THE END 

转载请联系本公众号获得授权

计算机视觉研究院学习群等你加入!

我们开创“计算机视觉协会”知识星球两年有余,也得到很多同学的认可,最近我们又开启了知识星球的运营。我们定时会推送实践型内容与大家分享,在星球里的同学可以随时提问,随时提需求,我们都会及时给予回复及给出对应的答复。

3c0e0111159ca94b08cb1b28fa6a6da6.jpeg

ABOUT

计算机视觉研究院

计算机视觉研究院主要涉及深度学习领域,主要致力于人脸检测、人脸识别,多目标检测、目标跟踪、图像分割等研究方向。研究院接下来会不断分享最新的论文算法新框架,我们这次改革不同点就是,我们要着重”研究“。之后我们会针对相应领域分享实践过程,让大家真正体会摆脱理论的真实场景,培养爱动手编程爱动脑思考的习惯!

VX:2311123606

549d3395f27c70a5851821db01c47ac9.png

往期推荐 

🔗

  • Yolov7:最新最快的实时检测框架,最详细分析解释(附源代码)

  • 打假Yolov7的精度,不是所有的论文都是真实可信

  • 最新的目标检测的深度架构 | 参数少一半、速度快3倍+(文末福利)

  • SSD7 | 对嵌入式友好的目标检测网络,产品落地

  • 精度提升方法:自适应Tokens的高效视觉Transformer框架(已开源)

  • ONNX 浅析:如何加速深度学习算法工程化?

  • 劲爆!YOLOv6又快又准的目标检测框架开源啦(附源代码下载)

  • FastestDet:比yolov5更快!更强!全新设计的超实时Anchor-free目标检测算法(附源代码下载)

  • 目前精度最高效率最快存储最小的目标检测模型(附源码下载)

  • CVPR小目标检测:上下文和注意力机制提升小目标检测(附论文下载)

  • Yolo系列的高效更精确的目标检测框架(附源代码)

相关文章:

  • linux redis 字符串增删改查
  • 什么是无常损失?
  • 找年龄最大的人
  • Java网络教程的基础简介说明
  • Flask 学习-35.restful-full 自定义错误内容 error_msg 使用
  • Linux连接文件与vim编译器的使用
  • oracle 删除语句(时间范围)
  • CMS垃圾收集器与三色标记算法详解
  • 2022速卖通重点运营策略,商品合规划经营必知
  • 【WSN通信】基于最佳簇半径的无线传感器网络分簇路由算法附matlab代码
  • 最新 MySQL 面试笔记解析直接爆砍 39K 月薪,拿走不谢
  • Jenkins实战中的一些技巧
  • webpack定制化 加载与插件[css加载器、html插件、image打包配置、babel代码兼容、vue加载器及配置]
  • 线程与进程的关联
  • Linux环境下fastdfs部署
  • [NodeJS] 关于Buffer
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • emacs初体验
  • JAVA SE 6 GC调优笔记
  • SpingCloudBus整合RabbitMQ
  • 翻译:Hystrix - How To Use
  • 关于 Cirru Editor 存储格式
  • 记一次删除Git记录中的大文件的过程
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 实战|智能家居行业移动应用性能分析
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • 智能合约开发环境搭建及Hello World合约
  • 大数据全解:定义、价值及挑战
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • ​io --- 处理流的核心工具​
  • #QT(TCP网络编程-服务端)
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • $(function(){})与(function($){....})(jQuery)的区别
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (超详细)语音信号处理之特征提取
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • .form文件_一篇文章学会文件上传
  • .htaccess配置常用技巧
  • .NET 的程序集加载上下文
  • .net流程开发平台的一些难点(1)
  • .NET与 java通用的3DES加密解密方法
  • @Autowired注解的实现原理
  • @for /l %i in (1,1,10) do md %i 批处理自动建立目录
  • @GetMapping和@RequestMapping的区别
  • [20150321]索引空块的问题.txt
  • [20160807][系统设计的三次迭代]
  • [20170705]lsnrctl status LISTENER_SCAN1
  • [Big Data - Kafka] kafka学习笔记:知识点整理
  • [boost]使用boost::function和boost::bind产生的down机一例