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

精度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种不同葡萄品种的实地实例。

低光数据集使用ExDark,该数据集是一个专门在低光照环境下拍摄出针对低光目标检测的数据集,包括从极低光环境到暮光环境等10种不同光照条件下的图片。

工业数据集使用PKU-Market-PCB,该数据集用于印刷电路板(PCB)的瑕疵检测,提供了6种常见的PCB缺陷。

精度

表格2:PP-YOLOE+在不同场景数据集的效果

可视化效果

图3:可视化效果

  • 项目链接:https://github.com/PaddlePaddle/PaddleDetection

  • 参考文献:[1] Feng C , Zhong Y , Gao Y , et al. TOOD: Task-aligned One-stage Object Detection[C]// 2021.

猜你喜欢

转载自blog.csdn.net/qq_38668236/article/details/127237352