简体中文 | [English](README_en.md) # PaddleDetection ### PaddleDetection 2.0全面升级!目前默认使用动态图版本,静态图版本位于[static](./static)中 ### 全新发布[关键点检测](configs/keypoint)和[多目标跟踪](configs/mot)能力!欢迎使用 ### 超高性价比PPYOLO v2和1.3M超轻量PPYOLO tiny全新出炉![欢迎使用](configs/ppyolo/README_cn.md) ### Anchor Free SOTA模型PAFNet发布![欢迎使用](configs/ttfnet/README.md) # 简介 PaddleDetection飞桨目标检测开发套件,旨在帮助开发者更快更好地完成检测模型的组建、训练、优化及部署等全开发流程。 PaddleDetection模块化地实现了多种主流目标检测算法,提供了丰富的数据增强策略、网络模块组件(如骨干网络)、损失函数等,并集成了模型压缩和跨平台高性能部署能力。 经过长时间产业实践打磨,PaddleDetection已拥有顺畅、卓越的使用体验,被工业质检、遥感图像检测、无人巡检、新零售、互联网、科研等十多个行业的开发者广泛应用。
### 产品动态 - 2021.05.20: 发布release/2.1版本,新增[关键点检测](configs/keypoint),模型包括HigherHRNet,HRNet。新增[多目标跟踪](configs/mot)能力,模型包括DeepSORT,JDE,FairMOT。发布PPYOLO系列模型压缩模型,新增[ONNX模型导出教程](deploy/EXPORT_ONNX_MODEL.md),详情参考[PaddleDetection](https://github.com/PaddlePaddle/PaddleDetection/tree/release/2.1) - 2021.04.14: 发布release/2.0版本,PaddleDetection全面支持动态图,覆盖静态图模型算法,全面升级模型效果,同时发布[PP-YOLO v2, PPYOLO tiny](configs/ppyolo/README_cn.md)模型,增强版anchor free模型[PAFNet](configs/ttfnet/README.md),新增旋转框检测[S2ANet](configs/dota/README.md)模型,详情参考[PaddleDetection](https://github.com/PaddlePaddle/PaddleDetection/tree/release/2.0) - 2021.02.07: 发布release/2.0-rc版本,PaddleDetection动态图试用版本,详情参考[PaddleDetection动态图](https://github.com/PaddlePaddle/PaddleDetection/tree/release/2.0-rc)。 ### 特性 - **模型丰富**: 包含**目标检测**、**实例分割**、**人脸检测**等**100+个预训练模型**,涵盖多种**全球竞赛冠军**方案 - **使用简洁**:模块化设计,解耦各个网络组件,开发者轻松搭建、试用各种检测模型及优化策略,快速得到高性能、定制化的算法。 - **端到端打通**: 从数据增强、组网、训练、压缩、部署端到端打通,并完备支持**云端**/**边缘端**多架构、多设备部署。 - **高性能**: 基于飞桨的高性能内核,模型训练速度及显存占用优势明显。支持FP16训练, 支持多机训练。 ### 套件结构概览
Architectures Backbones Components Data Augmentation
  • Two-Stage Detection
    • Faster RCNN
    • FPN
    • Cascade-RCNN
    • Libra RCNN
    • Hybrid Task RCNN
    • PSS-Det
  • One-Stage Detection
    • RetinaNet
    • YOLOv3
    • YOLOv4
    • PP-YOLO
    • SSD
  • Anchor Free
    • CornerNet-Squeeze
    • FCOS
    • TTFNet
  • Instance Segmentation
    • Mask RCNN
    • SOLOv2
  • Face-Detction
    • FaceBoxes
    • BlazeFace
    • BlazeFace-NAS
  • ResNet(&vd)
  • ResNeXt(&vd)
  • SENet
  • Res2Net
  • HRNet
  • Hourglass
  • CBNet
  • GCNet
  • DarkNet
  • CSPDarkNet
  • VGG
  • MobileNetv1/v3
  • GhostNet
  • Efficientnet
  • Common
    • Sync-BN
    • Group Norm
    • DCNv2
    • Non-local
  • FPN
    • BiFPN
    • BFP
    • HRFPN
    • ACFPN
  • Loss
    • Smooth-L1
    • GIoU/DIoU/CIoU
    • IoUAware
  • Post-processing
    • SoftNMS
    • MatrixNMS
  • Speed
    • FP16 training
    • Multi-machine training
  • Resize
  • Flipping
  • Expand
  • Crop
  • Color Distort
  • Random Erasing
  • Mixup
  • Cutmix
  • Grid Mask
  • Auto Augment
#### 模型性能概览 各模型结构和骨干网络的代表模型在COCO数据集上精度mAP和单卡Tesla V100上预测速度(FPS)对比图。
**说明:** - `CBResNet`为`Cascade-Faster-RCNN-CBResNet200vd-FPN`模型,COCO数据集mAP高达53.3% - `Cascade-Faster-RCNN`为`Cascade-Faster-RCNN-ResNet50vd-DCN`,PaddleDetection将其优化到COCO数据mAP为47.8%时推理速度为20FPS - `PP-YOLO`在COCO数据集精度45.9%,Tesla V100预测速度72.9FPS,精度速度均优于[YOLOv4](https://arxiv.org/abs/2004.10934) - `PP-YOLO v2`是对`PP-YOLO`模型的进一步优化,在COCO数据集精度49.5%,Tesla V100预测速度68.9FPS - 图中模型均可在[模型库](#模型库)中获取 ## 文档教程 ### 入门教程 - [安装说明](docs/tutorials/INSTALL_cn.md) - [数据准备](docs/tutorials/PrepareDataSet.md) - [30分钟上手PaddleDetcion](docs/tutorials/GETTING_STARTED_cn.md) - [FAQ/常见问题汇总](docs/tutorials/FAQ) ### 进阶教程 - 参数配置 - [RCNN参数说明](docs/tutorials/config_annotation/faster_rcnn_r50_fpn_1x_coco_annotation.md) - [PP-YOLO参数说明](docs/tutorials/config_annotation/ppyolo_r50vd_dcn_1x_coco_annotation.md) - 模型压缩(基于[PaddleSlim](https://github.com/PaddlePaddle/PaddleSlim)) - [剪裁/量化/蒸馏教程](configs/slim) - [推理部署](deploy/README.md) - [模型导出教程](deploy/EXPORT_MODEL.md) - [Paddle Inference部署](deploy/README.md) - [Python端推理部署](deploy/python) - [C++端推理部署](deploy/cpp) - [Paddle-Lite部署](deploy/lite) - [Paddle Serving部署](deploy/serving) - [ONNX模型导出](deploy/EXPORT_ONNX_MODEL.md) - [推理benchmark](deploy/BENCHMARK_INFER.md) - 进阶开发 - [数据处理模块](docs/advanced_tutorials/READER.md) - [新增检测模型](docs/advanced_tutorials/MODEL_TECHNICAL.md) ## 模型库 - 通用目标检测: - [模型库](docs/MODEL_ZOO_cn.md) - [PP-YOLO模型](configs/ppyolo/README_cn.md) - [增强版Anchor Free模型TTFNet](configs/ttfnet/README.md) - [移动端模型](static/configs/mobile/README.md) - [676类目标检测](static/docs/featured_model/LARGE_SCALE_DET_MODEL.md) - [两阶段实用模型PSS-Det](configs/rcnn_enhance/README.md) - [半监督知识蒸馏预训练检测模型](docs/feature_models/SSLD_PRETRAINED_MODEL.md) - 通用实例分割 - [SOLOv2](configs/solov2/README.md) - 旋转框检测 - [S2ANet](configs/dota/README.md) - [关键点检测](configs/keypoint) - HigherHRNet - HRNet - [多目标跟踪](configs/mot/README_cn.md) - [DeepSORT](configs/mot/deepsort/README_cn.md) - [JDE](configs/mot/jde/README_cn.md) - [FairMOT](configs/mot/fairmot/README_cn.md) - 垂类领域 - [行人检测](configs/pedestrian/README.md) - [车辆检测](configs/vehicle/README.md) - [人脸检测](configs/face_detection/README.md) - 比赛冠军方案 - [Objects365 2019 Challenge夺冠模型](static/docs/featured_model/champion_model/CACascadeRCNN.md) - [Open Images 2019-Object Detction比赛最佳单模型](static/docs/featured_model/champion_model/OIDV5_BASELINE_MODEL.md) ## 应用案例 - [人像圣诞特效自动生成工具](static/application/christmas) ## 第三方教程推荐 - [PaddleDetection在Windows下的部署(一)](https://zhuanlan.zhihu.com/p/268657833) - [PaddleDetection在Windows下的部署(二)](https://zhuanlan.zhihu.com/p/280206376) - [Jetson Nano上部署PaddleDetection经验分享](https://zhuanlan.zhihu.com/p/319371293) - [安全帽检测YOLOv3模型在树莓派上的部署](https://github.com/PaddleCV-FAQ/PaddleDetection-FAQ/blob/main/Lite%E9%83%A8%E7%BD%B2/yolov3_for_raspi.md) - [使用SSD-MobileNetv1完成一个项目--准备数据集到完成树莓派部署](https://github.com/PaddleCV-FAQ/PaddleDetection-FAQ/blob/main/Lite%E9%83%A8%E7%BD%B2/ssd_mobilenet_v1_for_raspi.md) ## 版本更新 v2.1版本已经在`05/2021`发布,全新发布关键点检测和多目标跟踪能力,支持无标注框检测,发布PPYOLO系列模型压缩模型,新增ONNX模型导出教程,详细内容请参考[版本更新文档](docs/CHANGELOG.md)。 v2.0版本已经在`04/2021`发布,全面支持动态图版本,新增支持BlazeFace, PSSDet等系列模型和大量骨干网络,发布PP-YOLO v2, PP-YOLO tiny和旋转框检测S2ANet模型。支持模型蒸馏、VisualDL,新增动态图预测部署benchmark,详细内容请参考[版本更新文档](docs/CHANGELOG.md)。 ## 许可证书 本项目的发布受[Apache 2.0 license](LICENSE)许可认证。 ## 贡献代码 我们非常欢迎你可以为PaddleDetection提供代码,也十分感谢你的反馈。 - 感谢[Mandroide](https://github.com/Mandroide)清理代码并且统一部分函数接口。 - 感谢[FL77N](https://github.com/FL77N/)贡献`Sparse-RCNN`模型代码。 ## 引用 ``` @misc{ppdet2019, title={PaddleDetection, Object detection and instance segmentation toolkit based on PaddlePaddle.}, author={PaddlePaddle Authors}, howpublished = {\url{https://github.com/PaddlePaddle/PaddleDetection}}, year={2019} } ```