查看原文
其他

较YOLOv7精度提升1.9%,54.7mAP的PP-YOLOE+强势登场!

将AI进行到底的 百度AI 2023-03-16

精度54.7mAP,相较 YOLOv7 提升1.9%L 版本端到端推理速度42.2FPS训练速度提升3.75倍COCO 数据集仅需 20epoch 即可达到50.0mAP下游任务泛化性最高提升8%10+即开即用多端部署 Demo
这究竟是什么模型,竟可达到以上效果?答案是:PP-YOLOE+
PP-YOLOE+是基于飞桨云边一体高精度模型 PP-YOLOE 迭代优化升级的版本,具备以下特点:
■ 超强性能
表格1:PP-YOLOE+与 PP-YOLOE 性能对比
*备注:上表中的数据均在 V100 上测试所得,V100+CUDA11.2+cudnn8.2.0+ TRT8.0.1.6


  • 训练收敛加速:使用 Objects365 预训练模型,减少训练轮数,训练收敛速度提升3.75倍。


  • 下游任务泛化性显著提升:在农业、夜间安防、工业等不同场景数据集上验证,精度最高提升8.1%。


  • 高性能部署能力:本次升级 PP-YOLOE+支持多种部署方式,包括 Python/C++、Serving、ONNX Runtime、ONNX-TRT、INT8 量化等部署能力。

超强性能与超高泛化性使得 PP-YOLOE+助力开发者在最短时间、最少量数据上能得到最优效果
模型下载与完整教程请见PP-YOLOE+:https://github.com/PaddlePaddle/PaddleDetection/tree/release/2.5/configs/ppyoloe


 回顾:PP-YOLOE 经典网络结构剖析 
图1:PP-YOLOE 网络结构
PP-YOLOE 是一款高精度推理速度快的检测模型,包含骨干网络 CSPRepResNet、特征融合 CSPPAN、轻量级 ET-Head 和改进的动态匹配算法 TAL(Task Alignment Learning)等模块, 并且根据不同的应用场景设计了一系列模型,即 s/m/l/x。
PP-YOLOE 的全系列模型从精度速度性价比来看达到工业界最优。具体来说,PP-YOLOE-l 在 COCO test-dev 上 AP 可达51.4,在 V100 上速度可达78.1 FPS,使用 TensorRT FP16 进行推理,在 V100 上速度可达149FPS
PP-YOLOE-l 相较于 PP-YOLOv2 精度提升1.9AP、速度提升13.35%,相对于 YOLOX-l 精度提升1.3AP、速度提升24.96%
此外,PP-YOLOE 还避免使用诸如可变形卷积或者 Matrix NMS 之类的特殊算子,使 PP-YOLOE 全系列模型能轻松地部署在 NVIDIA V100 和 T4 这样的云端 GPU 架构、Jetson 系列的移动端 GPU 和高性能的 FPGA 开发板上。
具体的结构包括以下三大部分:
■ 可扩展的 backbone 和 neck
我们设计了 CSPRepResNet 作为 backbone,neck 部分也采用了新设计的 CSPPAN 结构,backbone 和 neck 均以我们提出的 CSPRepResStage 为基础模块。新的 backbone 和 neck 在增强模型表征能力的同时提升了模型的推理速度,并且可以通过 width multiplier 和 depth multiplier 灵活地配置模型的大小。
■ TAL(Task Alignment Learning)
为了进一步提升模型的精度,我们选用了 TOOD [1]中的动态匹配算法策略 TAL。TAL 同时考虑分类和回归,使得匹配结果同时获得了最优的分类和定位精度。
■ Efficient Task-aligned head
检测 head 方面,我们在 TOOD 的 T-head 基础上进行改进。
首先,使用 ESE block 替换掉了原文中比较耗时的 layer attention,使得模型在保证精度不变的同时提升了速度。
其次,由于 T-head 使用了可变形卷积算子,对硬件部署不友好,我们在分类分支使用 shortcut 替换 cls-align 模块,回归分支使用积分层替换掉含有可变形卷积的 reg-align 模块,以上两个改进使得 head 变得更为高效、简洁且易部署。
最终,我们进一步使用 VFL(VariFocal Loss)替换 BCE 作为分类分支 Loss,达到了速度精度双高的目的。
 PP-YOLOE+  算法升级深度解读 
本次 PP-YOLOE+升级主要内容:
  • 升级一:强大的 Objects365 预训练模型、升级版 backbone 等改动大幅提升 PP-YOLOE 系列模型的精度;


  • 升级二:优化预处理,提升模型端到端推理速度,更贴近用户使用的真实场景;


  • 升级三:完善多种环境下的推理部署能力。

■ 精度
首先,我们使用 Objects365 大规模数据集对模型进行了预训练。Objects365数据集含有的数据量可达百万级,在大数据量下的训练可以使模型获得更强大的特征提取能力、更好的泛化能力,在下游任务上的训练可以达到更好的效果。
其次,我们在 RepResBlock 中的1x1卷积上增加了一个可学习的权重 alpha,进一步提升了 backbone 的表征能力,获得了不错的效果提升。最后,我们调整了 NMS 的参数,在 COCO 上可以获得更好的评估精度。
■ 训练速度
基于 Objects365 的预训练模型,将学习率调整为原始学习率的十分之一,训练的 epoch 从300降到了80,在大大缩短了训练时间的同时,获得了精度上的提升。
■ 端到端推理速度
我们精简了预处理的计算方式,由于减均值除方差的方式在 CPU 上极其耗时,所以我们在优化时直接去除掉了这部分的预处理操作,使得 PP-YOLOE+系列模型在端到端的速度上能获得40%以上的加速提升。
图2:PP-YOLOE+模型效果
■ 下游泛化性增强
我们验证了 PP-YOLOE+模型强大的泛化能力,在农业、低光、工业等不同场景下游任务检测效果稳定提升。
农业数据集采用 Embrapa WGISD,该数据集用于葡萄栽培中基于图像的监测和现场机器人技术,提供了来自5种不同葡萄品种的实地实例。
🔗 链接https://github.com/thsant/wgisd
低光数据集使用 ExDark,该数据集是一个专门在低光照环境下拍摄出针对低光目标检测的数据集,包括从极低光环境到暮光环境等10种不同光照条件下的图片。
🔗 链接https://github.com/thsant/wgisd
工业数据集使用 PKU-Market-PCB,该数据集用于印刷电路板(PCB)的瑕疵检测,提供了6种常见的 PCB 缺陷。
🔗 链接https://robotics.pkusz.edu.cn/resources/dataset/
>> 精度
表格2:PP-YOLOE+在不同场景数据集的效果
>> 可视化效果
图3:可视化效果
■ 全面升级的部署支持
在推理部署方面,本次升级给大家带来了较为完备的部署能力,包括 Python、C++、Serving、ONNX Runtime、ONNX-TRT、INT8 量化等部署能力。具体的使用文档可以到 PaddleDetection 的 GitHub 上获取。
🔗 文档链接https://github.com/PaddlePaddle/PaddleDetection/tree/release/2.5/deploy
总的来说,PP-YOLOE+希望真正的站在用户的角度去解决训练慢、泛化性差、部署难的问题。通过使用大规模数据集 Objects365 对模型进行预训练,使得模型在下游任务上表现更鲁棒、泛化能力更强。通过优化推理过程,完善推理链条,使得 PP-YOLOE+不但在端到端预测速度上得到极大的提升,还拓展了 Python、C++、Serving、ONNX Runtime 以及 TensorRT 等多种推理环境下的部署能力,提升模型可扩展性,从而提升用户的使用体验。
 飞桨端到端开发套件  PaddleDetection 
PaddleDetection 为基于飞桨的端到端目标检测套件,内置30+模型算法300+预训练模型,覆盖目标检测、实例分割、跟踪、关键点检测等方向,其中包括服务器端和移动端高精度、轻量化产业级 SOTA 模型、冠军方案和学术前沿算法,并提供即插即用的垂类场景预训练模型,覆盖人、车等20+场景,提供配置化的网络模块组件、十余种数据增强策略和损失函数等高阶优化支持和多种部署方案,在打通数据处理、模型开发、训练、压缩、部署全流程的基础上,提供丰富的案例及教程,加速算法产业落地应用。
图4:PaddleDetection 全景图
🔗 项目链接https://github.com/PaddlePaddle/PaddleDetection
参考文献[1] Feng C , Zhong Y , Gao Y , et al. TOOD: Task-aligned One-stage Object Detection[C]// 2021.
 直播预告 
10月18日晚20:15,飞桨 PP-YOLO 系列作者——百度高级研发工程师将带来目标检测 YOLO 全系列算法详解,深度解析每一代 YOLO 算法的特点,并重点介绍 PP-YOLO 系列的研发心得与技术特性,千万不可错过!
扫码报名入群即可获得 YOLO 全系列飞桨高性能实现算法合集以及5+端到端目标检测实战项目源码,快来报名吧!


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存