diff --git a/README_cn.md b/README_cn.md index b953e742e1af68d70774bbe330a65899426d7b98..42b71b8e6f3badc6396f523bce9706cf8094fbb1 100644 --- a/README_cn.md +++ b/README_cn.md @@ -16,17 +16,22 @@

+
+ + +
+ ## 产品动态 - 🔥 **2022.3.24:PaddleDetection发布[release/2.4版本](https://github.com/PaddlePaddle/PaddleDetection/tree/release/2.4)** - - - 发布高精度云边一体SOTA目标检测模型[PP-YOLOE](configs/ppyoloe),发布s/m/l/x版本,l版本COCO test2017数据集精度51.4%,V100预测速度78.1 FPS,支持混合精度训练,训练较PP-YOLOv2加速33%,全系列多尺度模型,满足不同硬件算力需求,可适配服务器、边缘端GPU及其他服务器端AI加速卡。 + + - 发布高精度云边一体SOTA目标检测模型[PP-YOLOE](configs/ppyoloe),提供s/m/l/x版本,l版本COCO test2017数据集精度51.4%,V100预测速度78.1 FPS,支持混合精度训练,训练较PP-YOLOv2加速33%,全系列多尺度模型,满足不同硬件算力需求,可适配服务器、边缘端GPU及其他服务器端AI加速卡。 - 发布边缘端和CPU端超轻量SOTA目标检测模型[PP-PicoDet增强版](configs/picodet),精度提升2%左右,CPU预测速度提升63%,新增参数量0.7M的PicoDet-XS模型,提供模型稀疏化和量化功能,便于模型加速,各类硬件无需单独开发后处理模块,降低部署门槛。 - 发布实时行人分析工具[PP-Human](deploy/pphuman),支持行人跟踪、人流量统计、人体属性识别与摔倒检测四大能力,基于真实场景数据特殊优化,精准识别各类摔倒姿势,适应不同环境背景、光线及摄像角度。 - 新增[YOLOX](configs/yolox)目标检测模型,支持nano/tiny/s/m/l/x版本,x版本COCO val2017数据集精度51.8%。 - 2021.11.03: PaddleDetection发布[release/2.3版本](https://github.com/PaddlePaddle/PaddleDetection/tree/release/2.3) - + - 发布轻量级检测特色模型⚡[PP-PicoDet](configs/picodet),0.99m的参数量可实现精度30+mAP、速度150FPS。 - 发布轻量级关键点特色模型⚡[PP-TinyPose](configs/keypoint/tiny_pose),单人场景FP16推理可达122FPS、51.8AP,具有精度高速度快、检测人数无限制、微小目标效果好的优势。 - 发布实时跟踪系统[PP-Tracking](deploy/pptracking),覆盖单、多镜头下行人、车辆、多类别跟踪,对小目标、密集型特殊优化,提供人、车流量技术解决方案。 @@ -34,30 +39,12 @@ - 发布[Sniper](configs/sniper)小目标检测优化模型,发布针对EdgeBoard优化[PP-YOLO-EB](configs/ppyolo)模型。 - 新增轻量化关键点模型[Lite HRNet](configs/keypoint)关键点模型并支持Paddle Lite部署。 -- 2021.08.10: PaddleDetection发布[release/2.2版本](https://github.com/PaddlePaddle/PaddleDetection/tree/release/2.2) - - - 发布Transformer检测系列模型,包括[DETR](configs/detr), [Deformable DETR](configs/deformable_detr), [Sparse RCNN](configs/sparse_rcnn)。 - - 新增Dark HRNet关键点模型和MPII数据集[关键点模型](configs/keypoint) - - 新增[人头](configs/mot/headtracking21)、[车辆](configs/mot/vehicle)跟踪垂类模型。 - -- 2021.05.20: PaddleDetection发布[release/2.1版本](https://github.com/PaddlePaddle/PaddleDetection/tree/release/2.1) - - - 新增[关键点检测](configs/keypoint),模型包括HigherHRNet,HRNet。 - - 新增[多目标跟踪](configs/mot)能力,模型包括DeepSORT,JDE,FairMOT。 - - 发布PPYOLO系列模型压缩模型,新增[ONNX模型导出教程](deploy/EXPORT_ONNX_MODEL.md)。 +- [更多版本发布](https://github.com/PaddlePaddle/PaddleDetection/releases) ## 简介 **PaddleDetection**为基于飞桨PaddlePaddle的端到端目标检测套件,内置**30+模型算法**及**250+预训练模型**,覆盖**目标检测、实例分割、跟踪、关键点检测**等方向,其中包括**服务器端和移动端高精度、轻量级**产业级SOTA模型、冠军方案和学术前沿算法,并提供配置化的网络模块组件、十余种数据增强策略和损失函数等高阶优化支持和多种部署方案,在打通数据处理、模型开发、训练、压缩、部署全流程的基础上,提供丰富的案例及教程,加速算法产业落地应用。 -#### 提供目标检测、实例分割、多目标跟踪、关键点检测等多种能力 - -
- -
- -#### 应用场景覆盖工业、智慧城市、安防、交通、零售、医疗等十余种行业 -
@@ -69,12 +56,16 @@ - **端到端打通**: 从数据增强、组网、训练、压缩、部署端到端打通,并完备支持**云端**/**边缘端**多架构、多设备部署。 - **高性能**: 基于飞桨的高性能内核,模型训练速度及显存占用优势明显。支持FP16训练, 支持多机训练。 +
+ +
+ ## 技术交流 - 如果你发现任何PaddleDetection存在的问题或者是建议, 欢迎通过[GitHub Issues](https://github.com/PaddlePaddle/PaddleDetection/issues)给我们提issues。 - 欢迎加入PaddleDetection QQ、微信用户群(添加并回复小助手“检测”) - +
@@ -101,117 +92,127 @@ +
Face Detection -
  • Multi-Object-Tracking
  • +
    +
    Multi-Object-Tracking -
  • KeyPoint-Detection
  • +
  • ByteTrack
  • +
    +
    KeyPoint-Detection +
  • Lite-HRNet
  • +
  • PP-TinyPose
  • +
    +
    Details +
  • BlazeNet
  • +
  • DLA
  • +
  • HardNet
  • +
  • LCNet
  • +
  • ESNet
  • +
  • Swin-Transformer
  • +
    - - - - - - +
    Details +
    @@ -238,6 +239,9 @@ ## 模型性能概览 +
    + 云端模型性能对比 + 各模型结构和骨干网络的代表模型在COCO数据集上精度mAP和单卡Tesla V100上预测速度(FPS)对比图。
    @@ -253,6 +257,11 @@ - `PP-YOLOE`是对`PP-YOLO v2`模型的进一步优化,在COCO数据集精度51.4%,Tesla V100预测速度78.1FPS - 图中模型均可在[模型库](#模型库)中获取 +
    + +
    + 移动端模型性能对比 + 各移动端模型在COCO数据集上精度mAP和高通骁龙865处理器上预测速度(FPS)对比图。
    @@ -264,28 +273,128 @@ - 测试数据均使用高通骁龙865(4\*A77 + 4\*A55)处理器batch size为1, 开启4线程测试,测试使用NCNN预测库,测试脚本见[MobileDetBenchmark](https://github.com/JiweiMaster/MobileDetBenchmark) - [PP-PicoDet](configs/picodet)及[PP-YOLO-Tiny](configs/ppyolo)为PaddleDetection自研模型,其余模型PaddleDetection暂未提供 +
    + +## 模型库 + +
    + 1. 通用检测 + +#### [PP-YOLOE](./configs/ppyoloe)系列 推荐场景:Nvidia V100, T4等云端GPU和Jetson系列等边缘端设备 + +| 模型名称 | COCO精度(mAP) | V100 TensorRT FP16速度(FPS) | 配置文件 | 模型下载 | +|:---------- |:-----------:|:-------------------------:|:-----------------------------------------------------:|:------------------------------------------------------------------------------------:| +| PP-YOLOE-s | 42.7 | 333.3 | [链接](configs/ppyoloe/ppyoloe_crn_l_300e_coco.yml) | [下载地址](https://paddledet.bj.bcebos.com/models/ppyoloe_crn_l_300e_coco.pdparams) | +| PP-YOLOE-m | 48.6 | 208.3 | [链接](configs/ppyolo/ppyolo_r50vd_dcn_2x_coco.yml) | [下载地址](https://paddledet.bj.bcebos.com/models/ppyolo_r50vd_dcn_2x_coco.pdparams) | +| PP-YOLOE-l | 50.9 | 149.2 | [链接](configs/ppyolo/ppyolov2_r50vd_dcn_365e_coco.yml) | [下载地址](https://paddledet.bj.bcebos.com/models/ppyolov2_r50vd_dcn_365e_coco.pdparams) | +| PP-YOLOE-x | 51.9 | 95.2 | [链接](configs/ppyolo/ppyolov2_r50vd_dcn_365e_coco.yml) | [下载地址](https://paddledet.bj.bcebos.com/models/ppyolov2_r50vd_dcn_365e_coco.pdparams) | + +#### [PP-PicoDet](./configs/picodet)系列 推荐场景:ARM CPU(RK3399, 树莓派等) 和NPU(比特大陆,晶晨等)移动端芯片和x86 CPU设备 + +| 模型名称 | COCO精度(mAP) | 骁龙865 四线程速度(ms) | 配置文件 | 模型下载 | +|:---------- |:-----------:|:---------------:|:---------------------------------------------------:|:---------------------------------------------------------------------------------:| +| PicoDet-XS | 23.5 | 7.81 | [链接](configs/picodet/picodet_xs_320_coco_lcnet.yml) | [下载地址](https://paddledet.bj.bcebos.com/models/picodet_xs_320_coco_lcnet.pdparams) | +| PicoDet-S | 29.1 | 9.56 | [链接](configs/picodet/picodet_s_320_coco_lcnet.yml) | [下载地址](https://paddledet.bj.bcebos.com/models/picodet_s_320_coco_lcnet.pdparams) | +| PicoDet-M | 34.4 | 17.68 | [链接](configs/picodet/picodet_m_320_coco_lcnet.yml) | [下载地址](https://paddledet.bj.bcebos.com/models/picodet_m_320_coco_lcnet.pdparams) | +| PicoDet-L | 36.1 | 25.21 | [链接](configs/picodet/picodet_l_320_coco_lcnet.yml) | [下载地址](https://paddledet.bj.bcebos.com/models/picodet_l_320_coco_lcnet.pdparams) | + +#### 前沿检测算法 + +| 模型名称 | COCO精度(mAP) | V100 TensorRT FP16速度(FPS) | 配置文件 | 模型下载 | +|:------------------------------------------------------------------ |:-----------:|:-------------------------:|:------------------------------------------------------------------------------------------------------------:|:--------------------------------------------------------------------------:| +| [YOLOX-l](configs/yolox) | 50.1 | 107.5 | [链接](configs/yolox/yolox_l_300e_coco.yml) | [下载地址](https://paddledet.bj.bcebos.com/models/yolox_l_300e_coco.pdparams) | +| [YOLOv5-l](https://github.com/nemonameless/PaddleDetection_YOLOv5) | 48.6 | 136.0 | [链接](https://github.com/nemonameless/PaddleDetection_YOLOv5/blob/main/configs/yolov5/yolov5_l_300e_coco.yml) | [下载地址](https://paddledet.bj.bcebos.com/models/yolov5_l_300e_coco.pdparams) | + +#### 其他通用检测模型 [文档链接](docs/MODEL_ZOO_cn.md) + +
    + +
    + 2. 实例分割 + +| 模型名称 | 模型简介 | 推荐场景 | COCO精度(mAP) | 配置文件 | 模型下载 | +|:----------------- |:------------ |:---- |:--------------------------------:|:---------------------------------------------------------------------:|:-------------------------------------------------------------------------------------------------:| +| Mask RCNN | 两阶段实例分割算法 | 云边端 | box AP: 41.4
    mask AP: 37.5 | [链接](configs/mask_rcnn/mask_rcnn_r50_vd_fpn_2x_coco.yml) | [下载地址](https://paddledet.bj.bcebos.com/models/mask_rcnn_r50_vd_fpn_2x_coco.pdparams) | +| Cascade Mask RCNN | 两阶段实例分割算法 | 云边端 | box AP: 45.7
    mask AP: 39.7 | [链接](configs/mask_rcnn/cascade_mask_rcnn_r50_vd_fpn_ssld_2x_coco.yml) | [下载地址](https://paddledet.bj.bcebos.com/models/cascade_mask_rcnn_r50_vd_fpn_ssld_2x_coco.pdparams) | +| SOLOv2 | 轻量级单阶段实例分割算法 | 云边端 | mask AP: 38.0 | [链接](configs/solov2/solov2_r50_fpn_3x_coco.yml) | [下载地址](https://paddledet.bj.bcebos.com/models/solov2_r50_fpn_3x_coco.pdparams) | + +
    + +
    + 3. 关键点检测 + +| 模型名称 | 模型简介 | 推荐场景 | COCO精度(AP) | 速度 | 配置文件 | 模型下载 | +|:------------------------------------------- |:---------------------------------------------------------------- |:---------------------------------- |:----------:|:-----------------------:|:-------------------------------------------------------:|:---------------------------------------------------------------------------------------:| +| HRNet-w32 + DarkPose |
    top-down 关键点检测算法
    输入尺寸384x288
    |
    云边端
    | 78.3 | T4 TensorRT FP16 2.96ms | [链接](configs/keypoint/hrnet/dark_hrnet_w32_384x288.yml) | [下载地址](https://paddledet.bj.bcebos.com/models/keypoint/dark_hrnet_w32_384x288.pdparams) | +| HRNet-w32 + DarkPose | top-down 关键点检测算法
    输入尺寸256x192 | 云边端 | 78.0 | T4 TensorRT FP16 1.75ms | [链接](configs/keypoint/hrnet/dark_hrnet_w32_256x192.yml) | [下载地址](https://paddledet.bj.bcebos.com/models/keypoint/dark_hrnet_w32_256x192.pdparams) | +| [PP-TinyPose](./configs/keypoint/tiny_pose) | 轻量级关键点算法
    输入尺寸256x192 | 移动端 | 68.8 | 骁龙865 四线程 6.30ms | [链接](configs/keypoint/tiny_pose/tinypose_256x192.yml) | [下载地址](https://bj.bcebos.com/v1/paddledet/models/keypoint/tinypose_256x192.pdparams) | +| [PP-TinyPose](./configs/keypoint/tiny_pose) | 轻量级关键点算法
    输入尺寸128x96 | 移动端 | 58.1 | 骁龙865 四线程 2.37ms | [链接](configs/keypoint/tiny_pose/tinypose_128x96.yml) | [下载地址](https://bj.bcebos.com/v1/paddledet/models/keypoint/tinypose_128x96.pdparams) | + +#### 其他关键点检测模型 [文档链接](configs/keypoint) + +
    + +
    + 4. 多目标跟踪PP-Tracking + +| 模型名称 | 模型简介 | 推荐场景 | 精度 | 配置文件 | 模型下载 | +|:--------- |:------------------------ |:---------------------------------- |:----------------------:|:---------------------------------------------------------------------:|:-------------------------------------------------------------------------------------------------:| +| DeepSORT | SDE多目标跟踪算法 检测、ReID模型相互独立 |
    云边端
    | MOT-17 half val: 66.9 | [链接](configs/mot/deepsort/deepsort_jde_yolov3_pcb_pyramid.yml) | [下载地址](https://paddledet.bj.bcebos.com/models/mot/deepsort/deepsort_pcb_pyramid_r101.pdparams) | +| ByteTrack | SDE多目标跟踪算法 仅包含检测模型 | 云边端 | MOT-17 half val: 77.3 | [链接](configs/mot/bytetrack/detector/yolox_x_24e_800x1440_mix_det.yml) | [下载地址](https://paddledet.bj.bcebos.com/models/mot/deepsort/yolox_x_24e_800x1440_mix_det.pdparams) | +| JDE | JDE多目标跟踪算法 多任务联合学习方法 | 云边端 | MOT-16 test: 64.6 | [链接](configs/mot/jde/jde_darknet53_30e_1088x608.yml) | [下载地址](https://paddledet.bj.bcebos.com/models/mot/jde_darknet53_30e_1088x608.pdparams) | +| FairMOT | JDE多目标跟踪算法 多任务联合学习方法 | 云边端 | MOT-16 test: 75.0 | [链接](configs/mot/fairmot/fairmot_dla34_30e_1088x608.yml) | [下载地址](https://paddledet.bj.bcebos.com/models/mot/fairmot_dla34_30e_1088x608.pdparams) | + +#### 其他多目标跟踪模型 [文档链接](configs/mot) + +
    + +
    + 5. 产业级实时行人分析工具 + + +| 功能\模型 | 目标检测 | 多目标跟踪 | 属性识别 | 关键点检测 | 行为识别 | ReID | +|:------------------------- |:-------------------------------------------------------------------------------------- |:-------------------------------------------------------------------------------------- |:-----------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------:|:-----------------------------------------------------------------:|:----------------------------------------------------------------------:| +| 行人检测 | [✅](https://bj.bcebos.com/v1/paddledet/models/pipeline/mot_ppyoloe_l_36e_pipeline.zip) | | | | | | +| 行人跟踪 | | [✅](https://bj.bcebos.com/v1/paddledet/models/pipeline/mot_ppyoloe_l_36e_pipeline.zip) | | | | | +| 属性识别(图片) | [✅](https://bj.bcebos.com/v1/paddledet/models/pipeline/mot_ppyoloe_l_36e_pipeline.zip) | | [✅](https://bj.bcebos.com/v1/paddledet/models/pipeline/strongbaseline_r50_30e_pa100k.zip) | | | | +| 属性识别(视频) | | [✅](https://bj.bcebos.com/v1/paddledet/models/pipeline/mot_ppyoloe_l_36e_pipeline.zip) | | | | | +| 摔倒检测 | | [✅](https://bj.bcebos.com/v1/paddledet/models/pipeline/mot_ppyoloe_l_36e_pipeline.zip) | | [✅](https://bj.bcebos.com/v1/paddledet/models/pipeline/strongbaseline_r50_30e_pa100k.zip) | [✅](https://bj.bcebos.com/v1/paddledet/models/pipeline/STGCN.zip) | | +| 跨镜跟踪 | | [✅](https://bj.bcebos.com/v1/paddledet/models/pipeline/mot_ppyoloe_l_36e_pipeline.zip) | | | | [✅](https://bj.bcebos.com/v1/paddledet/models/pipeline/reid_model.zip) | +| **模型精度** | **mAP 56.3** | **MOTA 72.0** | **mA 94.86** | **AP 87.1** | **AP 96.43** | **mAP 98.8** | +| **T4 TensorRT FP16 预测速度** | **28.0ms** | **33.1ms** | **单人2ms** | **单人2.9ms** | **单人2.7ms** | **单人1.5ms** | + + +**点击“ ✅ ”即可下载对应模型** + +详细信息参考[文档](deploy/pphuman) + +
    + + ## 文档教程 ### 入门教程 - [安装说明](docs/tutorials/INSTALL_cn.md) -- [数据准备](docs/tutorials/PrepareDataSet.md) -- [30分钟上手PaddleDetecion](docs/tutorials/GETTING_STARTED_cn.md) +- [快速体验](docs/tutorials/QUICK_STARTED_cn.md) +- [数据准备](docs/tutorials/data/README.md) +- [PaddleDetection全流程使用](docs/tutorials/GETTING_STARTED_cn.md) +- [自定义数据训练](docs/tutorials/CustomizeDataTraining.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) @@ -296,18 +405,28 @@ - [推理benchmark](deploy/BENCHMARK_INFER.md) - 进阶开发 - + - [数据处理模块](docs/advanced_tutorials/READER.md) - [新增检测模型](docs/advanced_tutorials/MODEL_TECHNICAL.md) + - 二次开发教程 + - [目标检测](docs/advanced_tutorials/customization/detection.md) + - [关键点检测](docs/advanced_tutorials/customization/keypoint_detection.md) + - [多目标跟踪](docs/advanced_tutorials/customization/mot.md) + - [行为识别](docs/advanced_tutorials/customization/action.md) + - [属性识别](docs/advanced_tutorials/customization/attribute.md) ### 课程专栏 -- **2022.4.19 [产业级目标检测技术与应用](https://aistudio.baidu.com/aistudio/education/group/info/23670)三日课:** 超强目标检测算法矩阵、实时行人分析系统PP-Human、目标检测产业应用全流程拆解与实践 +- **【理论基础】[目标检测7日打卡营](https://aistudio.baidu.com/aistudio/education/group/info/1617):** 目标检测任务综述、RCNN系列目标检测算法详解、YOLO系列目标检测算法详解、PP-YOLO优化策略与案例分享、AnchorFree系列算法介绍和实践 -- **2022.3.26 [智慧城市行业](https://aistudio.baidu.com/aistudio/education/group/info/25620)七日课:** 城市规划、城市治理、智慧政务、交通管理、社区治理 +- **【产业实践】[AI快车道产业级目标检测技术与应用](https://aistudio.baidu.com/aistudio/education/group/info/23670):** 目标检测超强目标检测算法矩阵、实时行人分析系统PP-Human、目标检测产业应用全流程拆解与实践 + +- **【行业特色】2022.3.26 [智慧城市行业七日课](https://aistudio.baidu.com/aistudio/education/group/info/25620):** 城市规划、城市治理、智慧政务、交通管理、社区治理 ### [产业实践范例教程](./industrial_tutorial/README_cn.md) +- [基于PP-PicoDet增强版的路面垃圾检测](https://aistudio.baidu.com/aistudio/projectdetail/3846170?channelType=0&channel=0) + - [基于PP-PicoDet的通信塔识别及Android端部署](https://aistudio.baidu.com/aistudio/projectdetail/3561097) - [基于Faster-RCNN的瓷砖表面瑕疵检测](https://aistudio.baidu.com/aistudio/projectdetail/2571419) @@ -318,51 +437,12 @@ - [基于YOLOv3实现跌倒检测 ](https://aistudio.baidu.com/aistudio/projectdetail/2500639) -- [基于PP-PicoDetv2 的路面垃圾检测](https://aistudio.baidu.com/aistudio/projectdetail/3846170?channelType=0&channel=0) - - [基于人体关键点检测的合规检测](https://aistudio.baidu.com/aistudio/projectdetail/4061642?contributionType=1) -## 模型库 - -- 通用目标检测: - - [模型库](docs/MODEL_ZOO_cn.md) - - [PP-YOLOE模型](configs/ppyoloe/README_cn.md) - - [PP-YOLO模型](configs/ppyolo/README_cn.md) - - [PP-PicoDet模型](configs/picodet/README.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) - - [PP-TinyPose](configs/keypoint/tiny_pose) - - HigherHRNet - - HRNet - - LiteHRNet -- [多目标跟踪](configs/mot/README.md) - - [PP-Tracking](deploy/pptracking/README_cn.md) - - [DeepSORT](configs/mot/deepsort/README_cn.md) - - [JDE](configs/mot/jde/README_cn.md) - - [FairMOT](configs/mot/fairmot/README_cn.md) - - [ByteTrack](configs/mot/bytetrack/README.md) -- 垂类领域 - - [行人检测](configs/pedestrian/README.md) - - [车辆检测](configs/vehicle/README.md) - - [人脸检测](configs/face_detection/README.md) -- 场景化工具 - - [实时行人分析工具PP-Human](deploy/pphuman/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) - [安卓健身APP](https://github.com/zhiboniu/pose_demo_android) +- [多目标跟踪系统GUI可视化界面](https://github.com/yangyudong2020/PP-Tracking_GUi) ## 第三方教程推荐 diff --git a/deploy/pphuman/README.md b/deploy/pphuman/README.md index baeb5a40ce828ba69464ee17930d421d844fe0f9..7c837f093d8cdd3e72ab2002f444a7f12f4cf2b0 100644 --- a/deploy/pphuman/README.md +++ b/deploy/pphuman/README.md @@ -1,178 +1,71 @@ [English](README_en.md) | 简体中文 -# 实时行人分析 PP-Human +# 实时行人分析工具 PP-Human -PP-Human是基于飞桨深度学习框架的业界首个开源的实时行人分析工具,具有功能丰富,应用广泛和部署高效三大优势。PP-Human -支持图片/单镜头视频/多镜头视频多种输入方式,功能覆盖多目标跟踪、属性识别和行为分析。能够广泛应用于智慧交通、智慧社区、工业巡检等领域。支持服务器端部署及TensorRT加速,T4服务器上可达到实时。 +**PP-Human是基于飞桨深度学习框架的业界首个开源产业级实时行人分析工具,具有功能丰富,应用广泛和部署高效三大优势。** -PP-Human赋能社区智能精细化管理, AIStudio快速上手教程[链接](https://aistudio.baidu.com/aistudio/projectdetail/3679564) +![](https://user-images.githubusercontent.com/48054808/173030254-ecf282bd-2cfe-43d5-b598-8fed29e22020.gif) -实时行人分析全流程实战, 覆盖训练、部署、动作类型扩展等内容,AIStudio项目请见[链接](https://aistudio.baidu.com/aistudio/projectdetail/3842982) +PP-Human支持图片/单镜头视频/多镜头视频多种输入方式,功能覆盖多目标跟踪、属性识别、行为分析及人流量计数与轨迹记录。能够广泛应用于智慧交通、智慧社区、工业巡检等领域。支持服务器端部署及TensorRT加速,T4服务器上可达到实时。 -## 一、环境准备 +## 📣 近期更新 -环境要求: PaddleDetection版本 >= release/2.4 或 develop版本 +- 2022.4.18:新增PP-Human全流程实战教程, 覆盖训练、部署、动作类型扩展等内容,AIStudio项目请见[链接](https://aistudio.baidu.com/aistudio/projectdetail/3842982) +- 2022.4.10:新增PP-Human范例,赋能社区智能精细化管理, AIStudio快速上手教程[链接](https://aistudio.baidu.com/aistudio/projectdetail/3679564) +- 2022.4.5:全新发布实时行人分析工具PP-Human,支持行人跟踪、人流量统计、人体属性识别与摔倒检测四大能力,基于真实场景数据特殊优化,精准识别各类摔倒姿势,适应不同环境背景、光线及摄像角度 -PaddlePaddle和PaddleDetection安装 +## 🔮 功能介绍与效果展示 -``` -# PaddlePaddle CUDA10.1 -python -m pip install paddlepaddle-gpu==2.2.2.post101 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html +| ⭐ 功能 | 💟 方案优势 | 💡示例图 | +| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | +| **跨镜跟踪(ReID)** | 超强性能:针对目标遮挡、完整度、模糊度等难点特殊优化,实现mAP 98.8、1.5ms/人 | | +| **属性分析** | 兼容多种数据格式:支持图片、视频输入

    高性能:融合开源数据集与企业真实数据进行训练,实现mAP 94.86、2ms/人

    支持26种属性:性别、年龄、眼镜、上衣、鞋子、帽子、背包等26种高频属性 | | +| **行为识别** | 功能丰富:支持摔倒、打架、抽烟、打电话、人员闯入五种高频异常行为识别

    鲁棒性强:对光照、视角、背景环境无限制

    性能高:与视频识别技术相比,模型计算量大幅降低,支持本地化与服务化快速部署

    训练速度快:仅需15分钟即可产出高精度行为识别模型 | | +| **人流量计数与轨迹记录** | 简洁易用:单个参数即可开启人流量计数与轨迹记录功能 | | -# PaddlePaddle CPU -python -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple +## 🗳 模型库 -# 克隆PaddleDetection仓库 -cd -git clone https://github.com/PaddlePaddle/PaddleDetection.git +| 任务 | 适用场景 | 精度 | 预测速度(ms) | 模型权重 | 预测部署模型 | +|:-----:|:------------:|:---------- |:--------:|:----------------------------------------------------------------------------------------------:|:--------------------------------------------------------------------------------------------:| +| 目标检测 | 图片输入 | mAP: 56.3 | 28.0ms | [下载链接](https://bj.bcebos.com/v1/paddledet/models/pipeline/mot_ppyoloe_l_36e_pipeline.pdparams) | [下载链接](https://bj.bcebos.com/v1/paddledet/models/pipeline/mot_ppyoloe_l_36e_pipeline.zip) | +| 目标跟踪 | 视频输入 | MOTA: 72.0 | 33.1ms | [下载链接](https://bj.bcebos.com/v1/paddledet/models/pipeline/mot_ppyoloe_l_36e_pipeline.pdparams) | [下载链接](https://bj.bcebos.com/v1/paddledet/models/pipeline/mot_ppyoloe_l_36e_pipeline.zip) | +| 属性识别 | 图片/视频输入 属性识别 | mA: 94.86 | 单人2ms | - | [下载链接](https://bj.bcebos.com/v1/paddledet/models/pipeline/strongbaseline_r50_30e_pa100k.zip) | +| 关键点检测 | 视频输入 行为识别 | AP: 87.1 | 单人2.9ms | [下载链接](https://bj.bcebos.com/v1/paddledet/models/pipeline/dark_hrnet_w32_256x192.pdparams) | [下载链接](https://bj.bcebos.com/v1/paddledet/models/pipeline/dark_hrnet_w32_256x192.zip) | +| 行为识别 | 视频输入 行为识别 | 准确率: 96.43 | 单人2.7ms | - | [下载链接](https://bj.bcebos.com/v1/paddledet/models/pipeline/STGCN.zip) | +| ReID | 视频输入 跨镜跟踪 | mAP: 98.8 | 单人1.5ms | - | [下载链接](https://bj.bcebos.com/v1/paddledet/models/pipeline/reid_model.zip) | -# 安装其他依赖 -cd PaddleDetection -pip install -r requirements.txt -``` +## 📚 文档教程 -1. 详细安装文档参考[文档](../../docs/tutorials/INSTALL_cn.md) -2. 如果需要TensorRT推理加速(测速方式),请安装带`TensorRT版本Paddle`。您可以从[Paddle安装包](https://paddleinference.paddlepaddle.org.cn/v2.2/user_guides/download_lib.html#python)下载安装,或者按照[指导文档](https://www.paddlepaddle.org.cn/inference/master/optimize/paddle_trt.html)使用docker或自编译方式准备Paddle环境。 +### [快速开始](docs/tutorials/QUICK_STARTED.md) -## 二、快速开始 +### 行人属性/特征识别 -### 1. 模型下载 +* [快速开始](docs/tutorials/attribute.md) +* [二次开发教程](../../docs/advanced_tutorials/customization/attribute.md) + * 数据准备 + * 模型优化 + * 新增属性 -PP-Human提供了目标检测、属性识别、行为识别、ReID预训练模型,以实现不同使用场景,用户可以直接下载使用 +### 行为识别 -| 任务 | 适用场景 | 精度 | 预测速度(ms) | 模型权重 | 预测部署模型 | -| :---------: |:---------: |:--------------- | :-------: | :------: | :------: | -| 目标检测(高精度) | 图片输入 | mAP: 56.6 | 28.0ms |[下载链接](https://bj.bcebos.com/v1/paddledet/models/pipeline/mot_ppyoloe_l_36e_pipeline.pdparams) |[下载链接](https://bj.bcebos.com/v1/paddledet/models/pipeline/mot_ppyoloe_l_36e_pipeline.zip) | -| 目标检测(轻量级) | 图片输入 | mAP: 53.2 | 22.1ms |[下载链接](https://bj.bcebos.com/v1/paddledet/models/pipeline/mot_ppyoloe_s_36e_pipeline.pdparams) |[下载链接](https://bj.bcebos.com/v1/paddledet/models/pipeline/mot_ppyoloe_s_36e_pipeline.zip) | -| 目标跟踪(高精度) | 视频输入 | MOTA: 79.5 | 33.1ms |[下载链接](https://bj.bcebos.com/v1/paddledet/models/pipeline/mot_ppyoloe_l_36e_pipeline.pdparams) |[下载链接](https://bj.bcebos.com/v1/paddledet/models/pipeline/mot_ppyoloe_l_36e_pipeline.zip) | -| 目标跟踪(轻量级) | 视频输入 | MOTA: 69.1 | 27.2ms |[下载链接](https://bj.bcebos.com/v1/paddledet/models/pipeline/mot_ppyoloe_s_36e_pipeline.pdparams) |[下载链接](https://bj.bcebos.com/v1/paddledet/models/pipeline/mot_ppyoloe_s_36e_pipeline.zip) | -| 属性识别 | 图片/视频输入 属性识别 | mA: 94.86 | 单人2ms | - |[下载链接](https://bj.bcebos.com/v1/paddledet/models/pipeline/strongbaseline_r50_30e_pa100k.zip) | -| 关键点检测 | 视频输入 行为识别 | AP: 87.1 | 单人2.9ms |[下载链接](https://bj.bcebos.com/v1/paddledet/models/pipeline/dark_hrnet_w32_256x192.pdparams) |[下载链接](https://bj.bcebos.com/v1/paddledet/models/pipeline/dark_hrnet_w32_256x192.zip) -| 行为识别 | 视频输入 行为识别 | 准确率: 96.43 | 单人2.7ms | - |[下载链接](https://bj.bcebos.com/v1/paddledet/models/pipeline/STGCN.zip) | -| ReID | 视频输入 跨镜跟踪 | mAP: 98.8 | 单人1.5ms | - |[下载链接](https://bj.bcebos.com/v1/paddledet/models/pipeline/reid_model.zip) | +* [快速开始](docs/tutorials/action.md) + * 摔倒检测 +* [二次开发教程](../../docs/advanced_tutorials/customization/action.md) + * 方案选择 + * 数据准备 + * 模型优化 + * 新增行为 -下载模型后,解压至`./output_inference`文件夹 +### 跨镜跟踪ReID -**注意:** +* [快速开始](docs/tutorials/mtmct.md) +* [二次开发教程]() + * 数据准备 + * 模型优化 -- 模型精度为融合数据集结果,数据集包含开源数据集和企业数据集 -- ReID模型精度为Market1501数据集测试结果 -- 预测速度为T4下,开启TensorRT FP16的效果, 模型预测速度包含数据预处理、模型预测、后处理全流程 +### 人流量计数与轨迹记录 -### 2. 配置文件说明 - -PP-Human相关配置位于```deploy/pphuman/config/infer_cfg.yml```中,存放模型路径,完成不同功能需要设置不同的任务类型 - -功能及任务类型对应表单如下: - -| 输入类型 | 功能 | 任务类型 | 配置项 | -|-------|-------|----------|-----| -| 图片 | 属性识别 | 目标检测 属性识别 | DET ATTR | -| 单镜头视频 | 属性识别 | 多目标跟踪 属性识别 | MOT ATTR | -| 单镜头视频 | 行为识别 | 多目标跟踪 关键点检测 摔倒识别 | MOT KPT SKELETON_ACTION | - -例如基于视频输入的属性识别,任务类型包含多目标跟踪和属性识别,具体配置如下: - -``` -crop_thresh: 0.5 -attr_thresh: 0.5 -visual: True - -MOT: - model_dir: output_inference/mot_ppyoloe_l_36e_pipeline/ - tracker_config: deploy/pphuman/config/tracker_config.yml - batch_size: 1 - basemode: "idbased" - -ATTR: - model_dir: output_inference/strongbaseline_r50_30e_pa100k/ - batch_size: 8 - basemode: "idbased" - enable: False -``` - -**注意:** - -- 如果用户需要实现不同任务,可以在配置文件对应enable选项设置为True, 其basemode类型会在代码中开启依赖的基础能力模型,比如跟踪模型。 -- 如果用户仅需要修改模型文件路径,可以在命令行中加入 `--model_dir det=ppyoloe/` 即可,无需修改配置文件,详细说明参考下方参数说明文档 - - -### 3. 预测部署 - -``` -# 行人检测,指定配置文件路径和测试图片 -python deploy/pphuman/pipeline.py --config deploy/pphuman/config/infer_cfg.yml --image_file=test_image.jpg --device=gpu [--run_mode trt_fp16] - -# 行人跟踪,指定配置文件路径和测试视频 -python deploy/pphuman/pipeline.py --config deploy/pphuman/config/infer_cfg.yml --video_file=test_video.mp4 --device=gpu [--run_mode trt_fp16] - -# 行人跟踪,指定配置文件路径,模型路径和测试视频 -# 命令行中指定的模型路径优先级高于配置文件 -python deploy/pphuman/pipeline.py --config deploy/pphuman/config/infer_cfg.yml --video_file=test_video.mp4 --device=gpu --model_dir det=ppyoloe/ [--run_mode trt_fp16] - -# 行人属性识别,指定配置文件路径和测试视频,在配置文件中ATTR部分开启enable选项。 -python deploy/pphuman/pipeline.py --config deploy/pphuman/config/infer_cfg.yml --video_file=test_video.mp4 --device=gpu [--run_mode trt_fp16] - -# 行为识别,指定配置文件路径和测试视频,在配置文件中对应行为识别功能开启enable选项。 -python deploy/pphuman/pipeline.py --config deploy/pphuman/config/infer_cfg.yml --video_file=test_video.mp4 --device=gpu [--run_mode trt_fp16] - -# 行人跨境跟踪,指定配置文件路径和测试视频列表文件夹,在配置文件中REID部分开启enable选项。 -python deploy/pphuman/pipeline.py --config deploy/pphuman/config/infer_cfg.yml --video_dir=mtmct_dir/ --device=gpu [--run_mode trt_fp16] -``` - -其他用法请参考[子任务文档](./docs) - -#### 3.1 参数说明 - -| 参数 | 是否必须|含义 | -|-------|-------|----------| -| --config | Yes | 配置文件路径 | -| --model_dir | Option | PP-Human中各任务模型路径,优先级高于配置文件, 例如`--model_dir det=better_det/ attr=better_attr/`| -| --image_file | Option | 需要预测的图片 | -| --image_dir | Option | 要预测的图片文件夹路径 | -| --video_file | Option | 需要预测的视频 | -| --camera_id | Option | 用来预测的摄像头ID,默认为-1(表示不使用摄像头预测,可设置为:0 - (摄像头数目-1) ),预测过程中在可视化界面按`q`退出输出预测结果到:output/output.mp4| -| --device | Option | 运行时的设备,可选择`CPU/GPU/XPU`,默认为`CPU`| -| --output_dir | Option|可视化结果保存的根目录,默认为output/| -| --run_mode | Option |使用GPU时,默认为paddle, 可选(paddle/trt_fp32/trt_fp16/trt_int8)| -| --enable_mkldnn | Option | CPU预测中是否开启MKLDNN加速,默认为False | -| --cpu_threads | Option| 设置cpu线程数,默认为1 | -| --trt_calib_mode | Option| TensorRT是否使用校准功能,默认为False。使用TensorRT的int8功能时,需设置为True,使用PaddleSlim量化后的模型时需要设置为False | -| --do_entrance_counting | Option | 是否统计出入口流量,默认为False | -| --draw_center_traj | Option | 是否绘制跟踪轨迹,默认为False | - -## 三、方案介绍 - -PP-Human整体方案如下图所示 - -
    - -
    - - -### 1. 行人检测 -- 采用PP-YOLOE L 作为目标检测模型 -- 详细文档参考[PP-YOLOE](../../configs/ppyoloe/)和[检测跟踪文档](docs/mot.md) - -### 2. 行人跟踪 -- 采用SDE方案完成行人跟踪 -- 检测模型使用PP-YOLOE L -- 跟踪模块采用Bytetrack方案 -- 详细文档参考[Bytetrack](../../configs/mot/bytetrack)和[检测跟踪文档](docs/mot.md) - -### 3. 跨镜行人跟踪 -- 使用PP-YOLOE + Bytetrack得到单镜头多目标跟踪轨迹 -- 使用ReID(centroid网络)对每一帧的检测结果提取特征 -- 多镜头轨迹特征进行匹配,得到跨镜头跟踪结果 -- 详细文档参考[跨镜跟踪](docs/mtmct.md) - -### 4. 属性识别 -- 使用PP-YOLOE + Bytetrack跟踪人体 -- 使用StrongBaseline(多分类模型)完成识别属性,主要属性包括年龄、性别、帽子、眼睛、上衣下衣款式、背包等 -- 详细文档参考[属性识别](docs/attribute.md) - -### 5. 行为识别: -- 使用PP-YOLOE + Bytetrack跟踪人体 -- 使用HRNet进行关键点检测得到人体17个骨骼点 -- 结合50帧内同一个人骨骼点的变化,通过ST-GCN判断50帧内发生的动作是否为摔倒 -- 详细文档参考[行为识别](docs/action.md) +* [快速开始](docs/tutorials/mot.md) +* [二次开发教程](../../docs/advanced_tutorials/customization/mot.md) + * 数据准备 + * 模型优化 diff --git a/deploy/pphuman/docs/tutorials/QUICK_STARTED.md b/deploy/pphuman/docs/tutorials/QUICK_STARTED.md new file mode 100644 index 0000000000000000000000000000000000000000..b6b5ff071e4a171a8f9cc3717ded19bf1f1a9c0e --- /dev/null +++ b/deploy/pphuman/docs/tutorials/QUICK_STARTED.md @@ -0,0 +1,163 @@ +# 快速开始 + +## 一、环境准备 + +环境要求: PaddleDetection版本 >= release/2.4 或 develop版本 + +PaddlePaddle和PaddleDetection安装 + +``` +# PaddlePaddle CUDA10.1 +python -m pip install paddlepaddle-gpu==2.2.2.post101 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html + +# PaddlePaddle CPU +python -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple + +# 克隆PaddleDetection仓库 +cd +git clone https://github.com/PaddlePaddle/PaddleDetection.git + +# 安装其他依赖 +cd PaddleDetection +pip install -r requirements.txt +``` + +1. 详细安装文档参考[文档](../../../../docs/tutorials/INSTALL_cn.md) +2. 如果需要TensorRT推理加速(测速方式),请安装带`TensorRT版本Paddle`。您可以从[Paddle安装包](https://paddleinference.paddlepaddle.org.cn/v2.2/user_guides/download_lib.html#python)下载安装,或者按照[指导文档](https://www.paddlepaddle.org.cn/inference/master/optimize/paddle_trt.html)使用docker或自编译方式准备Paddle环境。 + +## 二、模型下载 + +PP-Human提供了目标检测、属性识别、行为识别、ReID预训练模型,以实现不同使用场景,用户可以直接下载使用 + +| 任务 | 适用场景 | 精度 | 预测速度(ms) | 模型权重 | 预测部署模型 | +| :---------: |:---------: |:--------------- | :-------: | :------: | :------: | +| 目标检测 | 图片输入 | mAP: 56.3 | 28.0ms |[下载链接](https://bj.bcebos.com/v1/paddledet/models/pipeline/mot_ppyoloe_l_36e_pipeline.pdparams) |[下载链接](https://bj.bcebos.com/v1/paddledet/models/pipeline/mot_ppyoloe_l_36e_pipeline.zip) | +| 目标跟踪 | 视频输入 | MOTA: 72.0 | 33.1ms |[下载链接](https://bj.bcebos.com/v1/paddledet/models/pipeline/mot_ppyoloe_l_36e_pipeline.pdparams) |[下载链接](https://bj.bcebos.com/v1/paddledet/models/pipeline/mot_ppyoloe_l_36e_pipeline.zip) | +| 属性识别 | 图片/视频输入 属性识别 | mA: 94.86 | 单人2ms | - |[下载链接](https://bj.bcebos.com/v1/paddledet/models/pipeline/strongbaseline_r50_30e_pa100k.zip) | +| 关键点检测 | 视频输入 行为识别 | AP: 87.1 | 单人2.9ms |[下载链接](https://bj.bcebos.com/v1/paddledet/models/pipeline/dark_hrnet_w32_256x192.pdparams) |[下载链接](https://bj.bcebos.com/v1/paddledet/models/pipeline/dark_hrnet_w32_256x192.zip) +| 行为识别 | 视频输入 行为识别 | 准确率: 96.43 | 单人2.7ms | - |[下载链接](https://bj.bcebos.com/v1/paddledet/models/pipeline/STGCN.zip) | +| ReID | 视频输入 跨镜跟踪 | mAP: 98.8 | 单人1.5ms | - |[下载链接](https://bj.bcebos.com/v1/paddledet/models/pipeline/reid_model.zip) | + +下载模型后,解压至`./output_inference`文件夹 + +**注意:** + +- 模型精度为融合数据集结果,数据集包含开源数据集和企业数据集 +- ReID模型精度为Market1501数据集测试结果 +- 预测速度为T4下,开启TensorRT FP16的效果, 模型预测速度包含数据预处理、模型预测、后处理全流程 + +## 三、配置文件说明 + +PP-Human相关配置位于```deploy/pphuman/config/infer_cfg.yml```中,存放模型路径,完成不同功能需要设置不同的任务类型 + +功能及任务类型对应表单如下: + +| 输入类型 | 功能 | 任务类型 | 配置项 | +|-------|-------|----------|-----| +| 图片 | 属性识别 | 目标检测 属性识别 | DET ATTR | +| 单镜头视频 | 属性识别 | 多目标跟踪 属性识别 | MOT ATTR | +| 单镜头视频 | 行为识别 | 多目标跟踪 关键点检测 摔倒识别 | MOT KPT SKELETON_ACTION | + +例如基于视频输入的属性识别,任务类型包含多目标跟踪和属性识别,具体配置如下: + +``` +crop_thresh: 0.5 +attr_thresh: 0.5 +visual: True + +MOT: + model_dir: output_inference/mot_ppyoloe_l_36e_pipeline/ + tracker_config: deploy/pphuman/config/tracker_config.yml + batch_size: 1 + basemode: "idbased" + +ATTR: + model_dir: output_inference/strongbaseline_r50_30e_pa100k/ + batch_size: 8 + basemode: "idbased" + enable: False +``` + +**注意:** + +- 如果用户需要实现不同任务,可以在配置文件对应enable选项设置为True, 其basemode类型会在代码中开启依赖的基础能力模型,比如跟踪模型。 +- 如果用户仅需要修改模型文件路径,可以在命令行中加入 `--model_dir det=ppyoloe/` 即可,无需修改配置文件,详细说明参考下方参数说明文档 + + +### 四、预测部署 + +``` +# 行人检测,指定配置文件路径和测试图片 +python deploy/pphuman/pipeline.py --config deploy/pphuman/config/infer_cfg.yml --image_file=test_image.jpg --device=gpu [--run_mode trt_fp16] + +# 行人跟踪,指定配置文件路径和测试视频 +python deploy/pphuman/pipeline.py --config deploy/pphuman/config/infer_cfg.yml --video_file=test_video.mp4 --device=gpu [--run_mode trt_fp16] + +# 行人跟踪,指定配置文件路径,模型路径和测试视频 +# 命令行中指定的模型路径优先级高于配置文件 +python deploy/pphuman/pipeline.py --config deploy/pphuman/config/infer_cfg.yml --video_file=test_video.mp4 --device=gpu --model_dir det=ppyoloe/ [--run_mode trt_fp16] + +# 行人属性识别,指定配置文件路径和测试视频,在配置文件中ATTR部分开启enable选项。 +python deploy/pphuman/pipeline.py --config deploy/pphuman/config/infer_cfg.yml --video_file=test_video.mp4 --device=gpu [--run_mode trt_fp16] + +# 行为识别,指定配置文件路径和测试视频,在配置文件中对应行为识别功能开启enable选项。 +python deploy/pphuman/pipeline.py --config deploy/pphuman/config/infer_cfg.yml --video_file=test_video.mp4 --device=gpu [--run_mode trt_fp16] + +# 行人跨境跟踪,指定配置文件路径和测试视频列表文件夹,在配置文件中REID部分开启enable选项。 +python deploy/pphuman/pipeline.py --config deploy/pphuman/config/infer_cfg.yml --video_dir=mtmct_dir/ --device=gpu [--run_mode trt_fp16] +``` + +### 4.1 参数说明 + +| 参数 | 是否必须|含义 | +|-------|-------|----------| +| --config | Yes | 配置文件路径 | +| --model_dir | Option | PP-Human中各任务模型路径,优先级高于配置文件, 例如`--model_dir det=better_det/ attr=better_attr/`| +| --image_file | Option | 需要预测的图片 | +| --image_dir | Option | 要预测的图片文件夹路径 | +| --video_file | Option | 需要预测的视频 | +| --camera_id | Option | 用来预测的摄像头ID,默认为-1(表示不使用摄像头预测,可设置为:0 - (摄像头数目-1) ),预测过程中在可视化界面按`q`退出输出预测结果到:output/output.mp4| +| --device | Option | 运行时的设备,可选择`CPU/GPU/XPU`,默认为`CPU`| +| --output_dir | Option|可视化结果保存的根目录,默认为output/| +| --run_mode | Option |使用GPU时,默认为paddle, 可选(paddle/trt_fp32/trt_fp16/trt_int8)| +| --enable_mkldnn | Option | CPU预测中是否开启MKLDNN加速,默认为False | +| --cpu_threads | Option| 设置cpu线程数,默认为1 | +| --trt_calib_mode | Option| TensorRT是否使用校准功能,默认为False。使用TensorRT的int8功能时,需设置为True,使用PaddleSlim量化后的模型时需要设置为False | +| --do_entrance_counting | Option | 是否统计出入口流量,默认为False | +| --draw_center_traj | Option | 是否绘制跟踪轨迹,默认为False | + +## 五、方案介绍 + +PP-Human整体方案如下图所示 + +
    + +
    + + +### 1. 行人检测 +- 采用PP-YOLOE L 作为目标检测模型 +- 详细文档参考[PP-YOLOE](../../../../configs/ppyoloe/)和[检测跟踪文档](mot.md) + +### 2. 行人跟踪 +- 采用SDE方案完成行人跟踪 +- 检测模型使用PP-YOLOE L +- 跟踪模块采用Bytetrack方案 +- 详细文档参考[Bytetrack](../../../../configs/mot/bytetrack)和[检测跟踪文档](mot.md) + +### 3. 跨镜行人跟踪 +- 使用PP-YOLOE + Bytetrack得到单镜头多目标跟踪轨迹 +- 使用ReID(centroid网络)对每一帧的检测结果提取特征 +- 多镜头轨迹特征进行匹配,得到跨镜头跟踪结果 +- 详细文档参考[跨镜跟踪](mtmct.md) + +### 4. 属性识别 +- 使用PP-YOLOE + Bytetrack跟踪人体 +- 使用StrongBaseline(多分类模型)完成识别属性,主要属性包括年龄、性别、帽子、眼睛、上衣下衣款式、背包等 +- 详细文档参考[属性识别](attribute.md) + +### 5. 行为识别: +- 使用PP-YOLOE + Bytetrack跟踪人体 +- 使用HRNet进行关键点检测得到人体17个骨骼点 +- 结合50帧内同一个人骨骼点的变化,通过ST-GCN判断50帧内发生的动作是否为摔倒 +- 详细文档参考[行为识别](action.md) diff --git a/deploy/pphuman/docs/action.md b/deploy/pphuman/docs/tutorials/action.md similarity index 99% rename from deploy/pphuman/docs/action.md rename to deploy/pphuman/docs/tutorials/action.md index a7710733f6fea6188eb322752c1e2940865e47a6..1144ae88ceaaed60e0333c8708ca849ee8baa431 100644 --- a/deploy/pphuman/docs/action.md +++ b/deploy/pphuman/docs/tutorials/action.md @@ -5,7 +5,7 @@ 行为识别在智慧社区,安防监控等方向具有广泛应用,PP-Human中集成了基于骨骼点的行为识别模块。
    - +
    数据来源及版权归属:天覆科技,感谢提供并开源实际场景数据,仅限学术研究使用
    diff --git a/deploy/pphuman/docs/action_en.md b/deploy/pphuman/docs/tutorials/action_en.md similarity index 98% rename from deploy/pphuman/docs/action_en.md rename to deploy/pphuman/docs/tutorials/action_en.md index 34d0cb691f7f3c8c813b3bf57179de1c794007c9..ebabcac800934c4fb6b8737394305949c8a02a62 100644 --- a/deploy/pphuman/docs/action_en.md +++ b/deploy/pphuman/docs/tutorials/action_en.md @@ -4,7 +4,7 @@ English | [简体中文](action.md) Falling Recognition is widely used in the intelligent community/smart city, and security monitoring. PP-Human provides the module of skeleton-based action recognition. -
    Data source and copyright owner:Skyinfor +
    Data source and copyright owner:Skyinfor Technology. Thanks for the provision of actual scenario data, which are only used for academic research here.
    diff --git a/deploy/pphuman/docs/attribute.md b/deploy/pphuman/docs/tutorials/attribute.md similarity index 99% rename from deploy/pphuman/docs/attribute.md rename to deploy/pphuman/docs/tutorials/attribute.md index 84bf1b7254be6b0fd71fafc8c90720b65cb1965a..53c41e285624b21935d19db4eeb2cbddb639f1c9 100644 --- a/deploy/pphuman/docs/attribute.md +++ b/deploy/pphuman/docs/tutorials/attribute.md @@ -45,7 +45,7 @@ python deploy/pphuman/pipeline.py --config deploy/pphuman/config/infer_cfg.yml \ 测试效果如下:
    - +
    数据来源及版权归属:天覆科技,感谢提供并开源实际场景数据,仅限学术研究使用 diff --git a/deploy/pphuman/docs/attribute_en.md b/deploy/pphuman/docs/tutorials/attribute_en.md similarity index 100% rename from deploy/pphuman/docs/attribute_en.md rename to deploy/pphuman/docs/tutorials/attribute_en.md diff --git a/deploy/pphuman/docs/mot.md b/deploy/pphuman/docs/tutorials/mot.md similarity index 99% rename from deploy/pphuman/docs/mot.md rename to deploy/pphuman/docs/tutorials/mot.md index 893ac479cb1a7b697fffbab9508c2a6960feecfe..33aa72cc7dbca24e8c164e80fef0a769a903f9a3 100644 --- a/deploy/pphuman/docs/mot.md +++ b/deploy/pphuman/docs/tutorials/mot.md @@ -47,7 +47,7 @@ python deploy/pphuman/pipeline.py --config deploy/pphuman/config/infer_cfg.yml \ 测试效果如下:
    - +
    数据来源及版权归属:天覆科技,感谢提供并开源实际场景数据,仅限学术研究使用 diff --git a/deploy/pphuman/docs/mot_en.md b/deploy/pphuman/docs/tutorials/mot_en.md similarity index 99% rename from deploy/pphuman/docs/mot_en.md rename to deploy/pphuman/docs/tutorials/mot_en.md index 510d86c0605d487358d90e5fa0f0ad47b4651512..8fd66d2f1e86ab6a6149f5d99c656f1d2623bf27 100644 --- a/deploy/pphuman/docs/mot_en.md +++ b/deploy/pphuman/docs/tutorials/mot_en.md @@ -48,7 +48,7 @@ python deploy/pphuman/pipeline.py --config deploy/pphuman/config/infer_cfg.yml \ The test result is:
    - +
    Data source and copyright owner:Skyinfor Technology. Thanks for the provision of actual scenario data, which are only used for academic research here. diff --git a/deploy/pphuman/docs/mtmct.md b/deploy/pphuman/docs/tutorials/mtmct.md similarity index 97% rename from deploy/pphuman/docs/mtmct.md rename to deploy/pphuman/docs/tutorials/mtmct.md index e4c38b6cab18d40eb3e8defa081bd0a12ca5e5e6..b0f45fc13395bb146242b9d5b58a384dfa47ed7c 100644 --- a/deploy/pphuman/docs/mtmct.md +++ b/deploy/pphuman/docs/tutorials/mtmct.md @@ -60,12 +60,12 @@ python3 deploy/pphuman/pipeline.py - camera 1:
    - +
    - camera 2:
    - +
    diff --git a/deploy/pphuman/docs/mtmct_en.md b/deploy/pphuman/docs/tutorials/mtmct_en.md similarity index 98% rename from deploy/pphuman/docs/mtmct_en.md rename to deploy/pphuman/docs/tutorials/mtmct_en.md index 852c673714a5cba2426be9f75eb40b97d64aa9c2..dd4716bc9bdddf4803ea78c8d8b813f7cd36a0d6 100644 --- a/deploy/pphuman/docs/mtmct_en.md +++ b/deploy/pphuman/docs/tutorials/mtmct_en.md @@ -63,12 +63,12 @@ Under the above circumstances, the REID model used in MTMCT integrates open-sour - camera 1:
    - +
    - camera 2:
    - +
    diff --git a/docs/advanced_tutorials/READER.md b/docs/advanced_tutorials/READER.md index 6be878ff25fef0890548e40ae96f31388e5d424c..4de89a93246f4967192d09e0772baf1410742664 100644 --- a/docs/advanced_tutorials/READER.md +++ b/docs/advanced_tutorials/READER.md @@ -90,7 +90,7 @@ COCO数据集目前分为COCO2014和COCO2017,主要由json文件和image文件 │ │ ... ``` -在`source/coco.py`中定义并注册了`COCODataSet`数据集类,其继承自`DetDataSet`,并实现了parse_dataset方法,调用[COCO API](https://github.com/cocodataset/cocoapi)加载并解析COCO格式数据源`roidbs`和`cname2cid`,具体可参见`source/coco.py`源码。将其他数据集转换成COCO格式可以参考[用户数据转成COCO数据](../tutorials/PrepareDataSet.md#用户数据转成COCO数据) +在`source/coco.py`中定义并注册了`COCODataSet`数据集类,其继承自`DetDataSet`,并实现了parse_dataset方法,调用[COCO API](https://github.com/cocodataset/cocoapi)加载并解析COCO格式数据源`roidbs`和`cname2cid`,具体可参见`source/coco.py`源码。将其他数据集转换成COCO格式可以参考[用户数据转成COCO数据](../tutorials/PrepareDetDataSet.md#用户数据转成COCO数据) #### 2.2Pascal VOC数据集 该数据集目前分为VOC2007和VOC2012,主要由xml文件和image文件组成,其组织结构如下所示: @@ -118,7 +118,7 @@ COCO数据集目前分为COCO2014和COCO2017,主要由json文件和image文件 │ ├── ImageSets │ │ ... ``` -在`source/voc.py`中定义并注册了`VOCDataSet`数据集,它继承自`DetDataSet`基类,并重写了`parse_dataset`方法,解析VOC数据集中xml格式标注文件,更新`roidbs`和`cname2cid`。将其他数据集转换成VOC格式可以参考[用户数据转成VOC数据](../tutorials/PrepareDataSet.md#用户数据转成VOC数据) +在`source/voc.py`中定义并注册了`VOCDataSet`数据集,它继承自`DetDataSet`基类,并重写了`parse_dataset`方法,解析VOC数据集中xml格式标注文件,更新`roidbs`和`cname2cid`。将其他数据集转换成VOC格式可以参考[用户数据转成VOC数据](../tutorials/PrepareDetDataSet.md#用户数据转成VOC数据) #### 2.3自定义数据集 如果COCODataSet和VOCDataSet不能满足你的需求,可以通过自定义数据集的方式来加载你的数据集。只需要以下两步即可实现自定义数据集 diff --git a/docs/advanced_tutorials/customization/action.md b/docs/advanced_tutorials/customization/action.md new file mode 100644 index 0000000000000000000000000000000000000000..219d31c4209ad6d5982a94eb661fb79c00ef1afb --- /dev/null +++ b/docs/advanced_tutorials/customization/action.md @@ -0,0 +1,13 @@ +# 行为识别任务二次开发 + +## 方案选择 + +## 数据准备 + +## 模型优化 + +### 1. 摔倒--基于关键点的行为识别方案 + +## 新增行为 + +### 1. 基于关键点的行为识别方案 diff --git a/docs/advanced_tutorials/customization/attribute.md b/docs/advanced_tutorials/customization/attribute.md new file mode 100644 index 0000000000000000000000000000000000000000..1a163945f054c2e9f96e22a9a0323b1f271ac9c0 --- /dev/null +++ b/docs/advanced_tutorials/customization/attribute.md @@ -0,0 +1,7 @@ +# 属性识别任务二次开发 + +## 数据准备 + +## 模型优化 + +## 新增属性 diff --git a/docs/advanced_tutorials/customization/detection.md b/docs/advanced_tutorials/customization/detection.md new file mode 100644 index 0000000000000000000000000000000000000000..0761a80f477d28d532dfd123970606c83363f4d2 --- /dev/null +++ b/docs/advanced_tutorials/customization/detection.md @@ -0,0 +1,82 @@ +# 目标检测任务二次开发 + +在目标检测算法产业落地过程中,常常会出现需要额外训练以满足实际使用的要求,项目迭代过程中也会出先需要修改类别的情况。本文档详细介绍如何使用PaddleDetection进行目标检测算法二次开发,流程包括:数据准备、模型优化思路和修改类别开发流程。 + +## 数据准备 + +二次开发首先需要进行数据集的准备,针对场景特点采集合适的数据从而提升模型效果和泛化性能。然后使用Labeme,LabelImg等标注工具标注目标检测框,并将标注结果转化为COCO或VOC数据格式。详细文档可以参考[数据准备文档](../../tutorials/data/README.md) + +## 模型优化 + +### 1. 使用自定义数据集训练 + +基于准备的数据在数据配置文件中修改对应路径,例如`configs/dataset/coco_detection.yml`: + +``` +metric: COCO +num_classes: 80 + +TrainDataset: + !COCODataSet + image_dir: train2017 # 训练集的图片所在文件相对于dataset_dir的路径 + anno_path: annotations/instances_train2017.json # 训练集的标注文件相对于dataset_dir的路径 + dataset_dir: dataset/coco # 数据集所在路径,相对于PaddleDetection路径 + data_fields: ['image', 'gt_bbox', 'gt_class', 'is_crowd'] + +EvalDataset: + !COCODataSet + image_dir: val2017 # 验证集的图片所在文件相对于dataset_dir的路径 + anno_path: annotations/instances_val2017.json # 验证集的标注文件相对于dataset_dir的路径 + dataset_dir: dataset/coco # 数据集所在路径,相对于PaddleDetection路径 + +TestDataset: + !ImageFolder + anno_path: annotations/instances_val2017.json # also support txt (like VOC's label_list.txt) # 标注文件所在文件 相对于dataset_dir的路径 + dataset_dir: dataset/coco # if set, anno_path will be 'dataset_dir/anno_path' # 数据集所在路径,相对于PaddleDetection路径 +``` + +配置修改完成后,即可以启动训练评估,命令如下 + +``` +export CUDA_VISIBLE_DEVICES=0 +python tools/train.py -c configs/yolov3/yolov3_mobilenet_v1_roadsign.yml --eval +``` + +更详细的命令参考[30分钟快速上手PaddleDetection](../../tutorials/GETTING_STARTED_cn.md) + + +### 2. 加载COCO模型作为预训练 + +目前PaddleDetection提供的配置文件加载的预训练模型均为ImageNet数据集的权重,加载到检测算法的骨干网络中,实际使用时,建议加载COCO数据集训练好的权重,通常能够对模型精度有较大提升,使用方法如下: + +#### 1) 设置预训练权重路径 + +COCO数据集训练好的模型权重均在各算法配置文件夹下,例如`configs/ppyoloe`下提供了PP-YOLOE-l COCO数据集权重:[链接](https://paddledet.bj.bcebos.com/models/ppyoloe_crn_l_300e_coco.pdparams) 。配置文件中设置`pretrain_weights: https://paddledet.bj.bcebos.com/models/ppyoloe_crn_l_300e_coco.pdparams` + +#### 2) 修改超参数 + +加载COCO预训练权重后,需要修改学习率超参数,例如`configs/ppyoloe/_base_/optimizer_300e.yml`中: + +``` +epoch: 120 # 原始配置为300epoch,加载COCO权重后可以适当减少迭代轮数 + +LearningRate: + base_lr: 0.005 # 原始配置为0.025,加载COCO权重后需要降低学习率 + schedulers: + - !CosineDecay + max_epochs: 144 # 依据epoch数进行修改 + - !LinearWarmup + start_factor: 0. + epochs: 5 +``` + +## 修改类别 + +当实际使用场景类别发生变化时,需要修改数据配置文件,例如`configs/datasets/coco_detection.yml`中: + +``` +metric: COCO +num_classes: 10 # 原始类别80 +``` + +配置修改完成后,同样可以加载COCO预训练权重,PaddleDetection支持自动加载shape匹配的权重,对于shape不匹配的权重会自动忽略,因此无需其他修改。 diff --git a/docs/advanced_tutorials/customization/keypoint_detection.md b/docs/advanced_tutorials/customization/keypoint_detection.md new file mode 100644 index 0000000000000000000000000000000000000000..c68b4e9ed727d5ecba77ba76ea335efd53665858 --- /dev/null +++ b/docs/advanced_tutorials/customization/keypoint_detection.md @@ -0,0 +1,7 @@ +# 属性识别任务二次开发 + +## 数据准备 + +## 模型优化 + +### 新增属性 diff --git a/docs/advanced_tutorials/customization/mot.md b/docs/advanced_tutorials/customization/mot.md new file mode 100644 index 0000000000000000000000000000000000000000..9287c02b18fc4c864306e00c0d5df80c91a262ea --- /dev/null +++ b/docs/advanced_tutorials/customization/mot.md @@ -0,0 +1,7 @@ +# 多目标跟踪任务二次开发 + +## 数据准备 + +## 模型优化 + +## 跟踪类别修改 diff --git a/docs/tutorials/GETTING_STARTED.md b/docs/tutorials/GETTING_STARTED.md index 2668440846653683fe3fa4bb0fa67d664b0c427f..3cf5b8c7de0c541da59508116f83049e689e594c 100644 --- a/docs/tutorials/GETTING_STARTED.md +++ b/docs/tutorials/GETTING_STARTED.md @@ -11,7 +11,7 @@ instructions](INSTALL_cn.md). ## Data preparation -- Please refer to [PrepareDataSet](PrepareDataSet.md) for data preparation +- Please refer to [PrepareDetDataSet](PrepareDetDataSet_en.md) for data preparation - Please set the data path for data configuration file in ```configs/datasets``` diff --git a/docs/tutorials/GETTING_STARTED_cn.md b/docs/tutorials/GETTING_STARTED_cn.md index 930dfe905f331a282a6201f43783776087cab396..ba21b4da0639a8f25f7924f0b6db0705e65b9ba5 100644 --- a/docs/tutorials/GETTING_STARTED_cn.md +++ b/docs/tutorials/GETTING_STARTED_cn.md @@ -12,7 +12,7 @@ PaddleDetection作为成熟的目标检测开发套件,提供了从数据准 ## 2 准备数据 目前PaddleDetection支持:COCO VOC WiderFace, MOT四种数据格式。 -- 首先按照[准备数据文档](PrepareDataSet.md) 准备数据。 +- 首先按照[准备数据文档](PrepareDetDataSet.md) 准备数据。 - 然后设置`configs/datasets`中相应的coco或voc等数据配置文件中的数据路径。 - 在本项目中,我们使用路标识别数据集 ```bash diff --git a/docs/tutorials/data/DetAnnoTools.md b/docs/tutorials/data/DetAnnoTools.md new file mode 100644 index 0000000000000000000000000000000000000000..1958a112d2f149f1c37e71fe6e5f4bcd6f8107bf --- /dev/null +++ b/docs/tutorials/data/DetAnnoTools.md @@ -0,0 +1,13 @@ +# 目标检测标注工具 + +## [LabelMe](https://github.com/wkentaro/labelme) + +### 使用说明 + +### 标注格式 + +## [LabelImg](https://github.com/tzutalin/labelImg) + +### 使用说明 + +### 标注格式 diff --git a/docs/tutorials/data/KeyPointAnnoTools.md b/docs/tutorials/data/KeyPointAnnoTools.md new file mode 100644 index 0000000000000000000000000000000000000000..1b136cebe2ff803b8fa04bfb9d6306ae89064a82 --- /dev/null +++ b/docs/tutorials/data/KeyPointAnnoTools.md @@ -0,0 +1,7 @@ +# 关键点检测标注工具 + +## [LabelMe](https://github.com/wkentaro/labelme) + +### 使用说明 + +### 标注格式 diff --git a/docs/tutorials/data/MOTAnnoTools.md b/docs/tutorials/data/MOTAnnoTools.md new file mode 100644 index 0000000000000000000000000000000000000000..fd10b7a72d283ef62d22a1028e1f928dcb3e7882 --- /dev/null +++ b/docs/tutorials/data/MOTAnnoTools.md @@ -0,0 +1,7 @@ +# 多目标跟踪标注工具 + +## [DarkLabel](https://github.com/darkpgmr/DarkLabel) + +### 使用说明 + +### 标注格式 diff --git a/docs/tutorials/PrepareDataSet.md b/docs/tutorials/data/PrepareDetDataSet.md similarity index 86% rename from docs/tutorials/PrepareDataSet.md rename to docs/tutorials/data/PrepareDetDataSet.md index f525541ce886d6881525485f36f30aecf3006da9..c6f65fc0ee4161e36af2f467f2c9d43af77344eb 100644 --- a/docs/tutorials/PrepareDataSet.md +++ b/docs/tutorials/data/PrepareDetDataSet.md @@ -1,4 +1,4 @@ -# 如何准备训练数据 +# 目标检测数据准备 ## 目录 - [目标检测数据说明](#目标检测数据说明) - [准备训练数据](#准备训练数据) @@ -8,11 +8,13 @@ - [COCO数据数据](#COCO数据数据) - [COCO数据集下载](#COCO数据下载) - [COCO数据标注文件介绍](#COCO数据标注文件介绍) - - [用户数据](#用户数据) + - [用户数据准备](#用户数据准备) - [用户数据转成VOC数据](#用户数据转成VOC数据) - [用户数据转成COCO数据](#用户数据转成COCO数据) - [用户数据自定义reader](#用户数据自定义reader) - - [用户数据数据转换示例](#用户数据数据转换示例) + - [用户数据使用示例](#用户数据使用示例) + - [数据格式转换](#数据格式转换) + - [自定义数据训练](#自定义数据训练) - [(可选)生成Anchor](#(可选)生成Anchor) ### 目标检测数据说明 @@ -236,15 +238,7 @@ json文件中包含以下key: print('\n查看一条目标物体标注信息:', coco_anno['annotations'][0]) ``` - COCO数据准备如下。 - `dataset/coco/`最初文件组织结构 - ``` - >>cd dataset/coco/ - >>tree - ├── download_coco.py - ``` - -#### 用户数据 +#### 用户数据准备 对于用户数据有3种处理方法: (1) 将用户数据转成VOC数据(根据需要仅包含物体检测所必须的标签即可) (2) 将用户数据转成COCO数据(根据需要仅包含物体检测所必须的标签即可) @@ -331,35 +325,8 @@ dataset/xxx/ ##### 用户数据自定义reader 如果数据集有新的数据需要添加进PaddleDetection中,您可参考数据处理文档中的[添加新数据源](../advanced_tutorials/READER.md#2.3自定义数据集)文档部分,开发相应代码完成新的数据源支持,同时数据处理具体代码解析等可阅读[数据处理文档](../advanced_tutorials/READER.md)。 -关于Dataset的配置文件存在于`configs/datasets`文件夹。比如COCO数据集的配置文件如下: -``` -metric: COCO # 目前支持COCO, VOC, OID, WiderFace等评估标准 -num_classes: 80 # num_classes数据集的类别数,不包含背景类 - -TrainDataset: - !COCODataSet - image_dir: train2017 # 训练集的图片所在文件相对于dataset_dir的路径 - anno_path: annotations/instances_train2017.json # 训练集的标注文件相对于dataset_dir的路径 - dataset_dir: dataset/coco #数据集所在路径,相对于PaddleDetection路径 - data_fields: ['image', 'gt_bbox', 'gt_class', 'is_crowd'] # 控制dataset输出的sample所包含的字段,注意此为训练集Reader独有的且必须配置的字段 -EvalDataset: - !COCODataSet - image_dir: val2017 # 验证集的图片所在文件夹相对于dataset_dir的路径 - anno_path: annotations/instances_val2017.json # 验证集的标注文件相对于dataset_dir的路径 - dataset_dir: dataset/coco # 数据集所在路径,相对于PaddleDetection路径 - -TestDataset: - !ImageFolder - anno_path: annotations/instances_val2017.json # 标注文件所在路径,仅用于读取数据集的类别信息,支持json和txt格式 - dataset_dir: dataset/coco # 数据集所在路径,若添加了此行,则`anno_path`路径为`dataset_dir/anno_path`,若此行不设置或去掉此行,则`anno_path`路径即为`anno_path` -``` -在PaddleDetection的yml配置文件中,使用`!`直接序列化模块实例(可以是函数,实例等),上述的配置文件均使用Dataset进行了序列化。 - -**注意:** -请运行前自行仔细检查数据集的配置路径,在训练或验证时如果TrainDataset和EvalDataset的路径配置有误,会提示自动下载数据集。若使用自定义数据集,在推理时如果TestDataset路径配置有误,会提示使用默认COCO数据集的类别信息。 - -#### 用户数据数据转换示例 +#### 用户数据使用示例 以[Kaggle数据集](https://www.kaggle.com/andrewmvd/road-sign-detection) 比赛数据为例,说明如何准备自定义数据。 Kaggle上的 [road-sign-detection](https://www.kaggle.com/andrewmvd/road-sign-detection) 比赛数据包含877张图像,数据类别4类:crosswalk,speedlimit,stop,trafficlight。 @@ -384,6 +351,8 @@ Kaggle上的 [road-sign-detection](https://www.kaggle.com/andrewmvd/road-sign-de │ | ... ``` +#### 数据格式转换 + 将数据划分为训练集和测试集 ``` # 生成 label_list.txt 文件 @@ -450,6 +419,67 @@ roadsign数据集统计: (1)用户数据,建议在训练前仔细检查数据,避免因数据标注格式错误或图像数据不完整造成训练过程中的crash (2)如果图像尺寸太大的话,在不限制读入数据尺寸情况下,占用内存较多,会造成内存/显存溢出,请合理设置batch_size,可从小到大尝试 +#### 自定义数据训练 + +数据准备完成后,需要修改PaddleDetection中关于Dataset的配置文件,在`configs/datasets`文件夹下。比如roadsign数据集的配置文件如下: +``` +metric: VOC # 目前支持COCO, VOC, WiderFace等评估标准 +num_classes: 4 # 数据集的类别数,不包含背景类,roadsign数据集为4类,其他数据需要修改为自己的数据类别 + +TrainDataset: + !VOCDataSet + dataset_dir: dataset/roadsign_voc # 训练集的图片所在文件相对于dataset_dir的路径 + anno_path: train.txt # 训练集的标注文件相对于dataset_dir的路径 + label_list: label_list.txt # 数据集所在路径,相对于PaddleDetection路径 + data_fields: ['image', 'gt_bbox', 'gt_class', 'difficult'] # 控制dataset输出的sample所包含的字段,注意此为训练集Reader独有的且必须配置的字段 + +EvalDataset: + !VOCDataSet + dataset_dir: dataset/roadsign_voc # 数据集所在路径,相对于PaddleDetection路径 + anno_path: valid.txt # 验证集的标注文件相对于dataset_dir的路径 + label_list: label_list.txt # 标签文件,相对于dataset_dir的路径 + data_fields: ['image', 'gt_bbox', 'gt_class', 'difficult'] + +TestDataset: + !ImageFolder + anno_path: label_list.txt # 标注文件所在路径,仅用于读取数据集的类别信息,支持json和txt格式 + dataset_dir: dataset/roadsign_voc # 数据集所在路径,若添加了此行,则`anno_path`路径为相对于`dataset_dir`路径,若此行不设置或去掉此行,则为相对于PaddleDetection路径 +``` + +然后在对应模型配置文件中将自定义数据文件路径替换为新路径,以`configs/yolov3/yolov3_mobilenet_v1_roadsign.yml`为例 + +``` +_BASE_: [ + '../datasets/roadsign_voc.yml', # 指定为自定义数据集配置路径 + '../runtime.yml', + '_base_/optimizer_40e.yml', + '_base_/yolov3_mobilenet_v1.yml', + '_base_/yolov3_reader.yml', +] +pretrain_weights: https://paddledet.bj.bcebos.com/models/yolov3_mobilenet_v1_270e_coco.pdparams +weights: output/yolov3_mobilenet_v1_roadsign/model_final + +YOLOv3Loss: + ignore_thresh: 0.7 + label_smooth: true +``` + + +在PaddleDetection的yml配置文件中,使用`!`直接序列化模块实例(可以是函数,实例等),上述的配置文件均使用Dataset进行了序列化。 + +配置修改完成后,即可以启动训练评估,命令如下 + +``` +export CUDA_VISIBLE_DEVICES=0 +python tools/train.py -c configs/yolov3/yolov3_mobilenet_v1_roadsign.yml --eval +``` + +更详细的命令参考[30分钟快速上手PaddleDetection](../GETTING_STARTED_cn.md) + +**注意:** +请运行前自行仔细检查数据集的配置路径,在训练或验证时如果TrainDataset和EvalDataset的路径配置有误,会提示自动下载数据集。若使用自定义数据集,在推理时如果TestDataset路径配置有误,会提示使用默认COCO数据集的类别信息。 + + ### (可选)生成Anchor 在yolo系列模型中,大多数情况下使用默认的anchor设置即可, 你也可以运行`tools/anchor_cluster.py`来得到适用于你的数据集Anchor,使用方法如下: diff --git a/docs/tutorials/PrepareDataSet_en.md b/docs/tutorials/data/PrepareDetDataSet_en.md similarity index 100% rename from docs/tutorials/PrepareDataSet_en.md rename to docs/tutorials/data/PrepareDetDataSet_en.md diff --git a/docs/tutorials/PrepareKeypointDataSet_cn.md b/docs/tutorials/data/PrepareKeypointDataSet.md similarity index 94% rename from docs/tutorials/PrepareKeypointDataSet_cn.md rename to docs/tutorials/data/PrepareKeypointDataSet.md index 791fd1e49e8367815967654de24aed8eb2485635..d70a27deed527abce0b7f0f8e87d1f4f6404be3b 100644 --- a/docs/tutorials/PrepareKeypointDataSet_cn.md +++ b/docs/tutorials/data/PrepareKeypointDataSet.md @@ -1,14 +1,16 @@ 简体中文 | [English](PrepareKeypointDataSet_en.md) -# 如何准备关键点数据集 +# 关键点数据准备 ## 目录 - [COCO数据集](#COCO数据集) - [MPII数据集](#MPII数据集) -- [训练其他数据集](#训练其他数据集) +- [用户数据准备](#用户数据准备) + - [数据格式转换](#数据格式转换) + - [自定义数据训练](#自定义数据训练) ## COCO数据集 ### COCO数据集的准备 -我们提供了一键脚本来自动完成COCO2017数据集的下载及准备工作,请参考[COCO数据集下载](https://github.com/PaddlePaddle/PaddleDetection/blob/f0a30f3ba6095ebfdc8fffb6d02766406afc438a/docs/tutorials/PrepareDataSet.md#COCO%E6%95%B0%E6%8D%AE)。 +我们提供了一键脚本来自动完成COCO2017数据集的下载及准备工作,请参考[COCO数据集下载](https://github.com/PaddlePaddle/PaddleDetection/blob/f0a30f3ba6095ebfdc8fffb6d02766406afc438a/docs/tutorials/PrepareDetDataSet.md#COCO%E6%95%B0%E6%8D%AE)。 ### COCO数据集(KeyPoint)说明 在COCO中,关键点序号与部位的对应关系为: @@ -110,7 +112,10 @@ MPII keypoint indexes: - `scale`:表示人物的比例,对应200px。 -## 训练其他数据集 +## 用户数据准备 + +### 数据格式转换 + 这里我们以`AIChallenger`数据集为例,展示如何将其他数据集对齐到COCO格式并加入关键点模型训练中。 @@ -139,3 +144,5 @@ AI Challenger Description: 5. 整理图像路径`file_name`,使其能够被正确访问到。 我们提供了整合`COCO`训练集和`AI Challenger`数据集的[标注文件](https://bj.bcebos.com/v1/paddledet/data/keypoint/aic_coco_train_cocoformat.json),供您参考调整后的效果。 + +### 自定义数据训练 diff --git a/docs/tutorials/PrepareKeypointDataSet_en.md b/docs/tutorials/data/PrepareKeypointDataSet_en.md similarity index 98% rename from docs/tutorials/PrepareKeypointDataSet_en.md rename to docs/tutorials/data/PrepareKeypointDataSet_en.md index 4656922ab79d93720538bd13ef4bc3f188819862..80272910cee355e28d6aa219e30bc98de599bbd0 100644 --- a/docs/tutorials/PrepareKeypointDataSet_en.md +++ b/docs/tutorials/data/PrepareKeypointDataSet_en.md @@ -1,4 +1,4 @@ -[简体中文](PrepareKeypointDataSet_cn.md) | English +[简体中文](PrepareKeypointDataSet.md) | English # How to prepare dataset? ## Table of Contents @@ -8,7 +8,7 @@ ## COCO ### Preperation for COCO dataset -We provide a one-click script to automatically complete the download and preparation of the COCO2017 dataset. Please refer to [COCO Download](https://github.com/PaddlePaddle/PaddleDetection/blob/f0a30f3ba6095ebfdc8fffb6d02766406afc438a/docs/tutorials/PrepareDataSet.md#COCO%E6%95%B0%E6%8D%AE). +We provide a one-click script to automatically complete the download and preparation of the COCO2017 dataset. Please refer to [COCO Download](https://github.com/PaddlePaddle/PaddleDetection/blob/f0a30f3ba6095ebfdc8fffb6d02766406afc438a/docs/tutorials/PrepareDetDataSet_en.md#COCO%E6%95%B0%E6%8D%AE). ### Description for COCO dataset(Keypoint): In COCO, the indexes and corresponding keypoint name are: diff --git a/docs/tutorials/PrepareMOTDataSet_cn.md b/docs/tutorials/data/PrepareMOTDataSet.md similarity index 95% rename from docs/tutorials/PrepareMOTDataSet_cn.md rename to docs/tutorials/data/PrepareMOTDataSet.md index 7c97e073f3edb81a8cf122476f022a1a05bfd647..08d7ba9955620968016dc4a1a13358137b0b1aec 100644 --- a/docs/tutorials/PrepareMOTDataSet_cn.md +++ b/docs/tutorials/data/PrepareMOTDataSet.md @@ -1,11 +1,13 @@ -简体中文 | [English](GETTING_STARTED.md) +简体中文 | [English](PrepareMOTDataSet_en.md) -# 目录 -## 多目标跟踪数据集准备 +# 多目标跟踪数据集准备 +## 目录 - [MOT数据集](#MOT数据集) -- [数据集目录](#数据集目录) -- [数据格式](#数据格式) + - [数据集目录](#数据集目录) + - [数据格式](#数据格式) - [用户数据准备](#用户数据准备) + - [数据格式转换](#数据格式转换) + - [自定义数据训练](#自定义数据训练) - [引用](#引用) ### MOT数据集 @@ -17,7 +19,7 @@ PaddleDetection复现[JDE](https://github.com/Zhongdao/Towards-Realtime-MOT) 和 - 多类别跟踪模型是[MCFairMOT](../../configs/mot/mcfairmot/README_cn.md),多类别数据集是VisDrone数据集的整合版,可参照[MCFairMOT](../../configs/mot/mcfairmot/README_cn.md)的文档说明。 - 跨镜头跟踪模型,是选用的[AIC21 MTMCT](https://www.aicitychallenge.org) (CityFlow)车辆跨镜头跟踪数据集,数据集和模型可参照[跨境头跟踪](../../configs/mot/mtmct/README_cn.md)的文档说明。 -### 数据集目录 +#### 数据集目录 首先按照以下命令下载image_lists.zip并解压放在`PaddleDetection/dataset/mot`目录下: ``` wget https://dataset.bj.bcebos.com/mot/image_lists.zip @@ -60,7 +62,7 @@ dataset/mot |——————PRW ``` -### 数据格式 +#### 数据格式 这几个相关数据集都遵循以下结构: ``` MOT17 @@ -83,6 +85,8 @@ MOT17 ### 用户数据准备 +#### 数据格式转换 + 为了规范地进行训练和评测,用户数据需要转成和MOT-16数据集相同的目录和格式: ``` custom_data @@ -109,7 +113,7 @@ custom_data └—————— ... ``` -#### images文件夹 +##### images文件夹 - `gt.txt`是原始标注文件,而训练所用标注是`labels_with_ids`文件夹。 - `img1`文件夹里是按照一定帧率抽好的图片。 - `seqinfo.ini`文件是视频信息描述文件,需要如下格式的信息: @@ -139,7 +143,7 @@ imExt=.jpg - `vis_ratio`是当前目标被其他目标包含或覆挡后的可见率,是从0到1的浮点数,默认为`1` -#### labels_with_ids文件夹 +##### labels_with_ids文件夹 所有数据集的标注是以统一数据格式提供的。各个数据集中每张图片都有相应的标注文本。给定一个图像路径,可以通过将字符串`images`替换为`labels_with_ids`并将`.jpg`替换为`.txt`来生成标注文本路径。在标注文本中,每行都描述一个边界框,格式如下: ``` [class] [identity] [x_center] [y_center] [width] [height] @@ -155,6 +159,8 @@ cd dataset/mot python gen_labels_MOT.py ``` +#### 自定义数据训练 + ### 引用 Caltech: ``` diff --git a/docs/tutorials/PrepareMOTDataSet.md b/docs/tutorials/data/PrepareMOTDataSet_en.md similarity index 99% rename from docs/tutorials/PrepareMOTDataSet.md rename to docs/tutorials/data/PrepareMOTDataSet_en.md index 44f5a4713a3b461e84ab0dfa2a01af1045b7dc4c..f1bd170ccad18457c7faf6c0f0a57f6211af7784 100644 --- a/docs/tutorials/PrepareMOTDataSet.md +++ b/docs/tutorials/data/PrepareMOTDataSet_en.md @@ -1,4 +1,4 @@ -English | [简体中文](PrepareMOTDataSet_cn.md) +English | [简体中文](PrepareMOTDataSet.md) # Contents ## Multi-Object Tracking Dataset Preparation diff --git a/docs/tutorials/data/README.md b/docs/tutorials/data/README.md new file mode 100644 index 0000000000000000000000000000000000000000..8511948a3d4fb58479228db5e4b587725b5e284b --- /dev/null +++ b/docs/tutorials/data/README.md @@ -0,0 +1,17 @@ +# 数据准备 + +数据对于深度学习开发起到了至关重要的作用,数据采集和标注的质量是提升业务模型效果的重要因素。本文档主要介绍PaddleDetection中如何进行数据准备,包括采集高质量数据方法,覆盖多场景类型,提升模型泛化能力;以及各类任务数据标注工具和方法,并在PaddleDetection下使用 + +## 数据采集 + + + +## 数据标注及格式说明 + +| 任务类型 | 数据标注 | 数据格式说明 | +|:--------:| :--------:|:--------:| +| 目标检测 | [文档链接](DetAnnoTools.md) | [文档链接](PrepareDetDataSet.md) | +| 关键点检测 | [文档链接](KeyPointAnnoTools.md) | [文档链接](PrepareKeypointDataSet.md) | +| 多目标跟踪 | [文档链接](MOTAnnoTools.md) | [文档链接](PrepareMOTDataSet.md) | +| 图像分类 | [文档链接]() | [文档链接]() | +| 属性识别 | [文档链接]() | [文档链接]() |