YOLO(You Only Look Once,你只看一次)是一阶段目标检测算法的开山之作。常年来,YOLO系列模型统治着实时目标检测界,其代名词就是“快”。从2016年Joseph Redmon发布第一版YOLO[1]至今,YOLO系列算法始终保持着极高的迭代更新率,已经成为目标检测乃至整个计算机视觉界的流量密码。
近年来,各大技术团队如Ultralytics LLC、旷视、美团等均基于YOLO进行了一系列的改进,涌现出YOLOv5[2]、YOLOX[3]、MT-YOLOv6[4]、YOLOv7[5]等优秀的模型,为目标检测的发展做出了关键性的贡献。同时,为了将算法更好的应用于实际的产业中,百度飞桨团队集百家之所长,引入了创新性优化策略,提出了PP-YOLO系列三代模型,最新版为PP-YOLOE[6]。
现如今,飞桨生态开发者们将YOLO系列经典与最新算法均在飞桨目标检测开发套件PaddleDetection中进行了实现,并在各类优秀的YOLO算法的实现上进行了改进,实现了性能提升,同时对自定义数据训练、二次开发、预测部署等方面提供了端到端完整支持。
向下滑动查看所有内容
https://github.com/PaddlePaddle/PaddleDetection
⭐Star收藏⭐
时刻关注最新计算机视觉领域动态
PaddleDetection不仅囊括了各类前沿经典算法,同时统一了各类YOLO系列模型的代码风格与使用方式,无需切换代码库即可实现任意YOLO算法的开发。
全面覆盖的YOLO家族经典与最新模型:
包括经典的YOLOv3[7],百度飞桨自研的实时高精度目标检测检测模型PP-YOLOE[6],前沿检测算法YOLOv4[8]、YOLOv5[2]、YOLOX[3],以及最新的MT-YOLOv6[4]及YOLOv7[5]。
更强的模型性能:
基于各家前沿YOLO算法进行创新并升级,使用ConvNeXt[9]缩短训练周期58倍**,**精度普遍提升1%5% mAP;使用PaddleSlim模型压缩策略实现精度无损的同时还使得速度提升30%以上。
完备的端到端开发支持:
支持从模型训练、评估、预测到模型量化压缩,部署多种硬件的端到端开发全流程。同时支持不同模型算法灵活切换,一键实现算法二次开发。
全面覆盖的YOLO家族
首先来看看PaddleDetection中最新支持的YOLO模型:
YOLOv5**[2]**
由Ultralytics LLC团队于20年5月提出,借鉴YOLOv4的设计思路,引入更灵活和更轻量级的网络设计、自适应anchor计算和GIoU损失函数进行优化,目前成为实际应用落地中广泛使用的算法;
YOLOX[3]
旷视团队21年7月首次提出了Anchor Free的YOLO检测思路,使用SimOTA改进正负样本匹配效果,提出解耦检测头减小分类和回归两个任务的冲突;值得一提的是,PaddleDetection中实现的YOLOX,L模型较原版提升0.4%,X模型提升0.6%;
PP-YOLOE[6]****
22年3月由百度飞桨团队提出,设计统一的骨干网络和特征融合结构节省访存成本,结合TAL和ATSS设计高效的标签分配策略,提出更简洁高效的head结构对齐分类和回归两个子任务。
MT-YOLOv6**[4]**
由美团团队22年6月提出,使用RepVGG思想设计高效骨干网络,借鉴YOLOX中的SimOTA进行正负样本匹配,并使用SIoU Loss更好地回归检测框位置;
YOLOv7**[5]**
由Alexey团队22年7月提出,面对YOLO系列模型的不断改进与创新,仍能实现革新性的算法升级,作为目前最新的YOLO系列算法,针对重参数化和动态标签分配策略优化,并采用隐式参数学习和引入辅助检测头方式提升模型训练效果;
注:YOLOv5、MT-YOLOv6、VOLOv7均在下方链接中:
https://github.com/nemonameless/PaddleDetection_YOLOSeries
各个YOLO系列的模型正如取名You Only Look Once一样,能够实现实时检测,综合考虑速度和精度的平衡。通过横向对比,最常用的L版本模型中,近期的YOLOv7速度最佳,而PP-YOLOE则是精度最佳。
https://github.com/PaddlePaddle/PaddleDetection
更强的模型性能
在原版模型的实现基础上,为了探索更多样化的结构设计,PaddleDetection还提供了不同骨干网络的YOLO模型,包括自研的CSPResNet以及ConvNeXt,最终实现在计算量相近的情况下,精度仍可大幅提升:
此外,我们基于飞桨模型压缩工具库PaddleSlim对YOLO系列模型进一步瘦身。使用自动化压缩工具,在无需模型训练代码的情况下对模型量化训练,实现精度基本无损,速度普遍提升30%以上。
https://github.com/PaddlePaddle/PaddleSlim/tree/develop/example/auto_compression
完备的端到端开发支持
YOLO系列模型层出不穷,让众多开发者和用户直呼来不及学习和训练。因此期望能有一个统一的YOLO模型库,在代码风格统一的前提下,实现一键切换各个YOLO算法,以及训练、预测、部署全流程都能顺畅执行。PaddleDetection在集成YOLO全系列算法的同时,支持模型一键快速切换,并提供对应ONNX模型文件,充分满足各类部署需求。
由于YOLOv5、YOLOv7以及MT-YOLOv6均为GPL开源协议,由飞桨开发者实现的这3类模型代码并未直接合入到遵守Apache2.0开源协议的PaddleDetection中,而是合入到新创建的遵守GPL开源协议的PaddleDetection_YOLOSeries代码库中,且与PaddleDetection主分支的代****码保持同步更新。值得一提的是,YOLOv5、YOLOv7和MT-YOLOv6在评估和部署过程中使用了不同的后处理配置,而在PaddleDetection中进行了统一,保证实际部署效果和模型评估指标的一致性,并对这三类模型的源代码进行了重构,提高其可读性,同时保持与PaddleDetection中其他的YOLO算法用法一致:
PaddleDetection中YOLO算法用法示例
如需基于模型进行二次开发,只需修改前两行模型名字即可,可谓是方便至极。快来动手试试吧,一键运行即可获得精准的检测效果!
PaddleDetection在各场景应用效果展示
飞桨目标检测套件PaddleDetection紧跟业界算法团队基于YOLO系列迭代优化的前沿进展,并对其不断攻克技术难题的精神深感敬佩,希望未来飞桨能有机会携手各位算法研究团队持续不断为开源生态做出贡献!
https://github.com/PaddlePaddle/PaddleDetection
最后,欢迎大家扫码进群,与百度飞桨核心研发工程师一起交流讨论,同时Get飞桨最新产品动态!
相关论文和代码库引用说明:
[1]. Redmon J , Divvala S , Girshick R , et al. You Only Look Once: Unified, Real-Time Object Detection[J]. IEEE, 2016.
[2]. https://github.com/ultralytics/yolov5
[3]. Ge Z , Liu S , Wang F , et al. YOLOX: Exceeding YOLO Series in 2021[J]. 2021.
[4]. https://github.com/meituan/YOLOv6
[5]. Wang C Y , Bochkovskiy A , Liao H . YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors[J]. 2022.
[6]. Xu S , Wang X , Lv W , et al. PP-YOLOE: An evolved version of YOLO[J]. 2022.
[7]. Redmon J , Farhadi A . YOLOv3: An Incremental Improvement[J]. arXiv e-prints, 2018.
[8]. Bochkovskiy A , Wang C Y , Liao H . YOLOv4: Optimal Speed and Accuracy of Object Detection[J]. 2020.
[9] Liu Z , Mao H , Wu C Y , et al. A ConvNet for the 2020s[J]. arXiv e-prints, 2022.
关注【飞桨PaddlePaddle】公众号
获取更多技术内容~