从2022年10月份开始,大家已经陆续在PaddleDetection仓库的develop分支下尝鲜体验了一些预发布的新算法。如今经过4个月的打磨升级,PaddleDetection v2.6正式发布,最新版本有哪些更新以及性能提升呢?快来打开这份更新解读吧!
更新重点
您可登录GitHub了解详情
https://github.com/PaddlePaddle/PaddleDetection
关于PaddleDetection的技术问题以及文末彩蛋欢迎大家入群讨论,也欢迎大家在GitHub点star支持我们的工作!
在了解PP-YOLOE家族v2.6升级内容前,让我们先回顾一下PP-YOLOE+模型的特点。
PP-YOLOE+是基于飞桨云边一体高精度模型PP-YOLOE迭代优化升级的版本,具备以下特点:
使用Objects365预训练模型,减少训练轮数,训练收敛速度提升3.75倍。
在农业、夜间安防、工业等不同场景数据集上验证,精度最高提升8.1%。
本次升级PP-YOLOE+支持多种部署方式,包括Python/C++、Serving、ONNX Runtime、ONNX-TRT、INT8量化等部署能力。
超强性能与超高泛化性使得PP-YOLOE+助力开发者在最短时间、最少量数据上能得到最优效果。
如下图是PP-YOLOE+各个版本模型的性能情况
下图是PP-YOLOE+与其他YOLO主流模型的benchmark情况。在速度和精度上面,PP-YOLOE+均有优势。
https://github.com/PaddlePaddle/PaddleDetection/tree/release/2.6/configs/ppyoloe
在v2.6更新内容中,基于PP-YOLOE+的基础:
接下来就具体看一下吧。
PP-YOLOE-R:旋转框检测模型
PP-YOLOE-R(Rotate)是一个高效的单阶段Anchor-free旋转框检测模型,基于PP-YOLOE+引入了一系列改进策略来提升检测精度。
根据不同的硬件对精度和速度的要求,PP-YOLOE-R包含s/m/l/x四个尺寸的模型。在DOTA 1.0数据集上,PP-YOLOE-R-l和PP-YOLOE-R-x在单尺度训练和测试的情况下分别达到了78.14mAP和78.28 mAP,这在单尺度评估下超越了几乎所有的旋转框检测模型。通过多尺度训练和测试,PP-YOLOE-R-l和PP-YOLOE-R-x的检测精度进一步提升至80.02mAP和80.73 mAP,超越了所有的Anchor-free方法并且和最先进的Anchor-based的两阶段模型精度几乎相当。
在保持高精度的同时,PP-YOLOE-R避免使用特殊的算子,例如Deformable Convolution或Rotated RoI Align,使其能轻松地部署在多种多样的硬件上。
https://github.com/PaddlePaddle/PaddleDetection/tree/release/2.6/configs/rotate/ppyoloe_r
PP-YOLOE-SOD:小目标检测模型
PP-YOLOE-SOD(Small Object Detection)针对小目标检测提出了两种检测方案,分别是基于切图拼图流程优化的小目标检测方案以及基于原图模型算法优化的小目标检测方案。
同时提供了数据集自动分析脚本,只需输入数据集标注文件,便可得到数据集统计结果,辅助判断数据集是否是小目标数据集以及是否需要采用切图策略,同时给出网络超参数参考值。
在VisDrone-DET数据集上,单模型精度达到38.5mAP。
https://github.com/PaddlePaddle/PaddleDetection/tree/release/2.6/configs/smalldet
PP-YOLOE-DOD:密集检测模型
PP-YOLOE-DOD(Dense Object Detection)是基于PP-YOLOE+的密集目标检测算法,针对密集检测任务,我们做了如下优化:
为了适应商超数据的高分辨率,我们增大了模型训练和推理的输入尺寸;
为了适应密集场景,我们去除了静态匹配策略,在全部的训练周期中都使用动态匹配策略。
在SKU数据集检测精度mAP 60.3,达到了开源最优。
了解更多
https://github.com/PaddlePaddle/PaddleDetection/tree/release/2.6/configs/ppyoloe/application
PP-YOLOE+_t:超轻量通用目标检测模型
PP-YOLOE+_t是对PP-YOLOE+ x、l、m、s版本通用检测模型的进一步丰富,主要针Jetson等端侧GPU硬件对检测的帧率与速度均有极高要求的情况下提出的超轻量模型,通过优化匹配策略、增加辅助头、更小的输入尺寸等方式优化性能与速度,实现“速度起飞”!
比较了解PaddleDetection的开发者可能知道,我们其实还有另一个速度起飞的模型大杀器PP-PicoDet,二者的主要区别是PP-PicoDet主要是针对Arm等端侧CPU场景打造的,而PP-YOLOE+主要针对GPU场景打造。PP-YOLOE+_t聚焦于Jetson等边缘端场景使用,大家在选型时可以做参考。
如下图是PP-YOLOE+_t版本的性能表现:
https://github.com/PaddlePaddle/PaddleDetection/tree/release/2.6/configs/ppyoloe
PP-YOLOE+少样本学习方案
PaddleDetection团队针对PP-YOLOE+提供了少样本学习的方案,引入了Compare-Contrast算法。
在预训练模型的基础上,仅通过极少的标注数据即可训练得到较好的模型效果。
下表是PP-YOLOE+_s版本模型在工业数据集PKU-Market-PCB上,通过引入少样本学习方案,Box AP得到了2.4的提升。
https://github.com/PaddlePaddle/PaddleDetection/tree/release/2.6/configs/few-shot
PP-YOLOE+半监督学习方案
PaddleDetection团队结合Dense Teacher前沿算法,针对PP-YOLOE+提供了半监督学习方案。
半监督学习结合有标签数据和无标签数据,在大幅节省数据标注的情况下,依然达到较高的模型精度。在实际产业应用过程中,半监督学习是项目冷启动时常见的策略之一。
下表是,在仅采用5%、10%有标签数据进行监督学习,95%、90%无标签数据进行半监督学习的情况下,精度得到了1.2~2.5的提升。
https://github.com/PaddlePaddle/PaddleDetection/tree/release/2.6/configs/semi_det/baseline
PP-YOLOE+模型蒸馏方案
PaddleDetection团队针对PP-YOLOE+ 提供了模型蒸馏方案,结合了logits蒸馏和feature蒸馏。
在模型参数量、推理速度不变的情况下,可以迁移高精度大模型的学习能力,从而达到更高的精度。
如下表,通过大模型的蒸馏,小模型均有了1个点的精度提升。
https://github.com/PaddlePaddle/PaddleDetection/tree/release/2.6/configs/ppyoloe/distill
PP-Human、PP-Vehicle功能新增、推理提速
PP-Human经由真实业务场景数据深度打磨优化,拥有适应不同光线、复杂背景下的人体属性特征分析、异常行为识别、出入口人流计数与轨迹绘制、跨镜跟踪四大核心功能。不仅如此,PP-Human还兼容单张图片、单路或多路视频等多种数据输入类型,更符合产业复杂的环境应用需求,同时考虑到产业自定义开发的需求,PP-Human还提供了模型训练与功能新增全流程教程。
在本次PaddleDetection v2.6更新中:
了解更多
https://github.com/PaddlePaddle/PaddleDetection/tree/release/2.6/deploy/pipeline
PP-Vehicle是一款针对车辆分析相关场景的开源工具,产品主要围绕以下几个方面进行设计开发:
针对车辆分析场景共性的底层模型进行优选迭代。针对几个高频场景车牌识别、车流统计、违章分析、属性分析等进行了详细的后处理策略设计,可以满足业务的快速上线需求。同时提供丰富的二次开发教程,方便用户根据自己的业务场景进行私有化开发。
在公开数据集以及自采数据集上进行充分训练,并且提供预训练模型,覆盖车辆分析中监控视角、驾驶员视角、俯拍视角等常见相机视角。
实现1行代码快速部署,支持图片、视频、单路/多路rtsp视频流输入,修改配置文件即可快速实现策略修改以及pipeline的组合。
在本次PaddleDetection v2.6版本更新中:
了解更多
https://github.com/PaddlePaddle/PaddleDetection/tree/release/2.6/deploy/pipeline
半监督检测、少样本学习、模型蒸馏算法全面开源
除了上面的PP-YOLOE+针对半监督、少样本学习、模型蒸馏方案外,我们还开源了更多的相关模型,大家可以基于不同的模型进行相关方案测试。
半监督检测
半监督目标检测是同时使用有标注数据和无标注数据进行训练的目标检测,既可以极大地节省标注成本,也可以充分利用无标注数据进一步提高检测精度。PaddleDetection团队复现了DenseTeacher半监督检测算法,用户可以下载使用。
https://github.com/PaddlePaddle/PaddleDetection/tree/release/2.6/configs/semi_det
少样本学习
PaddleDetection团队联合百度研究院大数据实验室,在本次版本更新中开源两种少样本(Few-Shot)迁移学习的新算法Label Co-tuning和Contrastive Tuning,从不同角度应对标注不足的挑战,提升模型学习效果。
跨领域Label Co-tuning算法
该方法的主要思路是充分利用预训练模型的语义空间,挖掘其与下游任务的关联,计算出类别之间的关系作为下游任务的辅助语义标签,作为原始one-hot类别标签的补充。
领域内Contrastive Tuning算法
对比学习是一种通用的表征学习思路,可以学习样例级的判别特征,也可视为一种有效的数据增强策略。该算法针对目标检测的任务特性,实现patch级别的对比学习,以强化目标领域的表征学习效果。
https://github.com/PaddlePaddle/PaddleDetection/blob/release/2.6/configs/few-shot
模型蒸馏
本次版本更新中,我们开源了FGD蒸馏算法、LD蒸馏算法和CWD蒸馏算法。
FGD蒸馏算法
FGD全称为Focal and Global Knowledge Distillation for Detectors,是目标检测任务的一种蒸馏方法。FGD蒸馏分为两个部分Focal和Global。Focal蒸馏分离图像的前景和背景,让学生模型分别关注教师模型的前景和背景部分特征的关键像素。Global蒸馏部分重建不同像素之间的关系并将其从教师转移到学生,以补偿Focal蒸馏中丢失的全局信息。实验结果表明,FGD蒸馏算法在基于anchor和anchor free的方法上能有效提升模型精度。在PaddleDetection中,我们实现了FGD算法,并基于RetinaNet算法进行了验证。
CWD蒸馏算法
CWD全称为Channel-wise Knowledge Distillation for Dense Prediction*,通过最小化教师网络与学生网络的通道概率图之间的 Kullback-Leibler (KL) 散度,使得在蒸馏过程更加关注每个通道的最显著的区域,进而提升文本检测与图像分割任务的精度。在PaddleDetection中,我们实现了CWD算法,并基于GFL(Generalized Focal Loss)和RetinaNet模型进行了验证。
LD蒸馏算法
LD全称为Localization Distillation for Dense Object Detection,将回归框表示为概率分布,把分类任务的KD用在定位任务上,并且使用因地制宜、分而治之的策略,在不同的区域分别学习分类知识与定位知识。在PaddleDetection中,我们实现了LD算法,并基于GFL模型进行了验证。
https://github.com/PaddlePaddle/PaddleDetection/blob/release/2.6/configs/slim/distill
前沿算法量大管饱
PaddleDetection持续跟踪深度学习视觉前沿算法,并评估挑选价值比较高的算法进行优化开源。在本次版本发新中新增如下方向算法:
了解更多
https://github.com/PaddlePaddle/PaddleDetection/tree/release/2.6
基础能力提升
在本次更新中,PaddleDetection支持Python3.10版本、EMA支持过滤不更新参数、AdamW适配飞桨框架2.4.1版本。
新增检测热力图可视化能力,适配FasterRCNN/MaskRCNN系列、PP-YOLOE系列、BlazeFace、SSD、 RetinaNet。
Roadmap of PaddleDetection
我们已经在PaddleDetection Issue区开辟了Roadmap专区,欢迎您在此留下宝贵的建议、新特性需求或者任何想对PaddleDetection团队说的话,我们会积极融入到后续的版本更新中,同时也欢迎大家参与到PaddleDetection的开源建设中。
https://github.com/PaddlePaddle/PaddleDetection/issues/7892
One More Thing
2023飞桨黑客马拉松PaddlePaddle Hackathon第四期现已正式启动,本次活动由深度学习技术及应用国家工程研究中心主办,飞桨承办,英特尔作为顶级赞助方,OpenVINO、Arm、Hugging Face、Jina、TVM、瑞芯微、算能、地平线等共同出品,旨在鼓励开发者了解与参与深度学习开源项目的共建。
本次活动上线200+个开发任务,从框架开发、模型套件开发、模型复现、硬件项目开发到产业落地方案应有尽有,根据开发难度分为基础任务和进阶任务。同时提供高达100w的现金奖池以及飞桨黑客松证书,欢迎大家来PaddleDetection专区领取任务:
https://github.com/PaddlePaddle/Paddle/issues/51281#detection
欢迎大家进入官网体验PaddleDetection最新版本!