GithubHelp home page GithubHelp logo

wkangei / paddledetection_yoloseries Goto Github PK

View Code? Open in Web Editor NEW

This project forked from paddlepaddle/paddleyolo

0.0 0.0 0.0 305.64 MB

🚀🚀🚀 YOLOSeries of PaddleDetection implementation, PPYOLOE, YOLOX, YOLOv7, YOLOv5, MT-YOLOv6 and so on. 🚀🚀🚀

License: GNU General Public License v3.0

Shell 2.72% C++ 14.12% Python 82.05% C 0.10% Cuda 0.15% Makefile 0.21% CMake 0.64%

paddledetection_yoloseries's Introduction

简介

YOLOSeries是基于PaddleDetection的YOLO系列模型库,由PaddleDetection团队成员建设和维护,支持YOLOv3,PP-YOLOE,PP-YOLOE+,YOLOX,YOLOv5,MT-YOLOv6,YOLOv7等模型,其upstream为PaddleDetection的develop分支,并与PaddleDetection主代码库分支保持同步更新,包括github和gitee的代码,欢迎一起使用和建设!

注意:

Updates!

  • 【2022/08/23】发布PaddleDetection_YOLOSeries代码库: 支持YOLOv3,PP-YOLOE,PP-YOLOE+,YOLOX,YOLOv5,MT-YOLOv6,YOLOv7等YOLO模型,支持ConvNeXt骨干网络高精度版PP-YOLOE,YOLOXYOLOv5等模型,支持PaddleSlim无损加速量化训练PP-YOLOE,YOLOv5,MT-YOLOv6YOLOv7等模型,详情可阅读此文章

技术交流

  • 如果你发现任何PaddleDetection存在的问题或者是建议, 欢迎通过GitHub Issues给我们提issues。

  • 欢迎加入PaddleDetection 微信用户群(扫码填写问卷即可入群)

    • 入群福利 💎:获取PaddleDetection团队整理的重磅学习大礼包🎁
      • 📊 福利一:获取飞桨联合业界企业整理的开源数据集
      • 👨‍🏫 福利二:获取PaddleDetection历次发版直播视频与最新直播咨询
      • 🗳 福利三:获取垂类场景预训练模型集合,包括工业、安防、交通等5+行业场景
      • 🗂 福利四:获取10+全流程产业实操范例,覆盖火灾烟雾检测、人流量计数等产业高频场景

ModelZoo on COCO

网络模型 输入尺寸 图片数/GPU 学习率策略 推理耗时(ms) mAPval
0.5:0.95
mAPval
0.5
Params(M) FLOPs(G) 下载链接 配置文件
PP-YOLOE-s 640 32 400e 2.9 43.4 60.0 7.93 17.36 model config
PP-YOLOE-s 640 32 300e 2.9 43.0 59.6 7.93 17.36 model config
PP-YOLOE-m 640 28 300e 6.0 49.0 65.9 23.43 49.91 model config
PP-YOLOE-l 640 20 300e 8.7 51.4 68.6 52.20 110.07 model config
PP-YOLOE-x 640 16 300e 14.9 52.3 69.5 98.42 206.59 model config
PP-YOLOE-tiny ConvNeXt 640 16 36e - 44.6 63.3 33.04 13.87 model config
PP-YOLOE+_s 640 8 80e 2.9 43.7 60.6 7.93 17.36 model config
PP-YOLOE+_m 640 8 80e 6.0 49.8 67.1 23.43 49.91 model config
PP-YOLOE+_l 640 8 80e 8.7 52.9 70.1 52.20 110.07 model config
PP-YOLOE+_x 640 8 80e 14.9 54.7 72.0 98.42 206.59 model config

部署模型

网络模型 输入尺寸 导出后的权重(w/o NMS) ONNX(w/o NMS)
PP-YOLOE-s(400epoch) 640 ( w/ nms) | ( w/o nms) ( w/ nms) | ( w/o nms)
PP-YOLOE-s 640 ( w/ nms) | ( w/o nms) ( w/ nms) | ( w/o nms)
PP-YOLOE-m 640 ( w/ nms) | ( w/o nms) ( w/ nms) | ( w/o nms)
PP-YOLOE-l 640 ( w/ nms) | ( w/o nms) ( w/ nms) | ( w/o nms)
PP-YOLOE-x 640 ( w/ nms) | ( w/o nms) ( w/ nms) | ( w/o nms)
PP-YOLOE+_s 640 ( w/ nms) | ( w/o nms) ( w/ nms) | ( w/o nms)
PP-YOLOE+_m 640 ( w/ nms) | ( w/o nms) ( w/ nms) | ( w/o nms)
PP-YOLOE+_l 640 ( w/ nms) | ( w/o nms) ( w/ nms) | ( w/o nms)
PP-YOLOE+_x 640 ( w/ nms) | ( w/o nms) ( w/ nms) | ( w/o nms)
网络模型 输入尺寸 图片数/GPU 学习率策略 推理耗时(ms) mAPval
0.5:0.95
mAPval
0.5
Params(M) FLOPs(G) 下载链接 配置文件
YOLOX-nano 416 8 300e 2.3 26.1 42.0 0.91 1.08 model config
YOLOX-tiny 416 8 300e 2.8 32.9 50.4 5.06 6.45 model config
YOLOX-s 640 8 300e 3.0 40.4 59.6 9.0 26.8 model config
YOLOX-m 640 8 300e 5.8 46.9 65.7 25.3 73.8 model config
YOLOX-l 640 8 300e 9.3 50.1 68.8 54.2 155.6 model config
YOLOX-x 640 8 300e 16.6 51.8 70.6 99.1 281.9 model config
YOLOX-cdn-tiny 416 8 300e 1.9 32.4 50.2 5.03 6.33 model config
YOLOX-crn-s 640 8 300e 3.0 40.4 59.6 7.7 24.69 model config
YOLOX-s ConvNeXt 640 8 36e - 44.6 65.3 36.2 27.52 model config

部署模型

网络模型 输入尺寸 导出后的权重(w/o NMS) ONNX(w/o NMS)
YOLOx-nano 416 ( w/ nms) | ( w/o nms) ( w/ nms) | ( w/o nms)
YOLOx-tiny 416 ( w/ nms) | ( w/o nms) ( w/ nms) | ( w/o nms)
YOLOx-s 640 ( w/ nms) | ( w/o nms) ( w/ nms) | ( w/o nms)
YOLOx-m 640 ( w/ nms) | ( w/o nms) ( w/ nms) | ( w/o nms)
YOLOx-l 640 ( w/ nms) | ( w/o nms) ( w/ nms) | ( w/o nms)
YOLOx-x 640 ( w/ nms) | ( w/o nms) ( w/ nms) | ( w/o nms)
网络模型 输入尺寸 图片数/GPU 学习率策略 推理耗时(ms) mAPval
0.5:0.95
mAPval
0.5
Params(M) FLOPs(G) 下载链接 配置文件
YOLOv5-n 640 16 300e 2.6 28.0 45.7 1.87 4.52 model config
YOLOv5-s 640 8 300e 3.2 37.0 55.9 7.24 16.54 model config
YOLOv5-m 640 5 300e 5.2 45.3 63.8 21.19 49.08 model config
YOLOv5-l 640 3 300e 7.9 48.6 66.9 46.56 109.32 model config
YOLOv5-x 640 2 300e 13.7 50.6 68.7 86.75 205.92 model config
YOLOv5-s ConvNeXt 640 8 36e - 42.4 65.3 34.54 17.96 model config

部署模型

网络模型 输入尺寸 导出后的权重(w/o NMS) ONNX(w/o NMS)
YOLOv5-n 640 ( w/ nms) | ( w/o nms) ( w/ nms) | ( w/o nms)
YOLOv5-s 640 ( w/ nms) | ( w/o nms) ( w/ nms) | ( w/o nms)
YOLOv5-m 640 ( w/ nms) | ( w/o nms) ( w/ nms) | ( w/o nms)
YOLOv5-l 640 ( w/ nms) | ( w/o nms) ( w/ nms) | ( w/o nms)
YOLOv5-x 640 ( w/ nms) | ( w/o nms) ( w/ nms) | ( w/o nms)
网络模型 输入尺寸 图片数/GPU 学习率策略 推理耗时(ms) mAPval
0.5:0.95
mAPval
0.5
Params(M) FLOPs(G) 下载链接 配置文件
*YOLOv6mt-n 416 32 400e 2.5 30.5 46.8 4.74 5.16 model config
*YOLOv6mt-n 640 32 400e 2.8 34.7 52.7 4.74 12.2 model config
*YOLOv6mt-t 640 32 400e 2.9 40.8 60.4 16.36 39.94 model config
*YOLOv6mt-s 640 32 400e 3.0 42.5 61.7 18.87 48.36 model config

部署模型

网络模型 输入尺寸 导出后的权重(w/o NMS) ONNX(w/o NMS)
YOLOv6mt-n 416 ( w/ nms) | ( w/o nms) ( w/ nms) | ( w/o nms)
YOLOv6mt-n 640 ( w/ nms) | ( w/o nms) ( w/ nms) | ( w/o nms)
YOLOv6mt-t 640 ( w/ nms) | ( w/o nms) ( w/ nms) | ( w/o nms)
YOLOv6mt-s 640 ( w/ nms) | ( w/o nms) ( w/ nms) | ( w/o nms)
网络模型 输入尺寸 图片数/GPU 学习率策略 推理耗时(ms) mAPval
0.5:0.95
mAPval
0.5
Params(M) FLOPs(G) 下载链接 配置文件
YOLOv7-L 640 32 300e 7.4 51.0 70.2 37.62 106.08 model config
*YOLOv7-X 640 32 300e 12.2 53.0 70.8 71.34 190.08 model config
*YOLOv7P6-W6 1280 16 300e 25.5 54.4 71.8 70.43 360.26 model config
*YOLOv7P6-E6 1280 10 300e 31.1 55.7 73.0 97.25 515.4 model config
*YOLOv7P6-D6 1280 8 300e 37.4 56.1 73.3 133.81 702.92 model config
*YOLOv7P6-E6E 1280 6 300e 48.7 56.5 73.7 151.76 843.52 model config
YOLOv7-tiny 640 32 300e - 37.3 54.5 6.23 6.90 model config
YOLOv7-tiny 416 32 300e - 33.3 49.5 6.23 2.91 model config
YOLOv7-tiny 320 32 300e - 29.1 43.8 6.23 1.73 model config

部署模型

网络模型 输入尺寸 导出后的权重(w/o NMS) ONNX(w/o NMS)
YOLOv7-l 640 ( w/ nms) | ( w/o nms) ( w/ nms) | ( w/o nms)
YOLOv7-x 640 ( w/ nms) | ( w/o nms) ( w/ nms) | ( w/o nms)
YOLOv7P6-W6 1280 ( w/ nms) | ( w/o nms) ( w/ nms) | ( w/o nms)
YOLOv7P6-E6 1280 ( w/ nms) | ( w/o nms) ( w/ nms) | ( w/o nms)
YOLOv7P6-D6 1280 ( w/ nms) | ( w/o nms) ( w/ nms) | ( w/o nms)
YOLOv7P6-E6E 1280 ( w/ nms) | ( w/o nms) ( w/ nms) | ( w/o nms)
YOLOv7-tiny 640 ( w/ nms) | ( w/o nms) ( w/ nms) | ( w/o nms)
YOLOv7-tiny 416 ( w/ nms) | ( w/o nms) ( w/ nms) | ( w/o nms)
YOLOv7-tiny 320 ( w/ nms) | ( w/o nms) ( w/ nms) | ( w/o nms)

注意:

  • 所有模型均使用COCO train2017作为训练集,在COCO val2017上验证精度,模型前带*表示训练更新中。
  • 具体精度和速度细节请查看PP-YOLOE,YOLOX,YOLOv5,MT-YOLOv6,YOLOv7
  • 模型推理耗时(ms)为TensorRT-FP16下测试的耗时,不包含数据预处理和模型输出后处理(NMS)的耗时。测试采用单卡V100,batch size=1,测试环境为paddlepaddle-2.3.0, CUDA 11.2, CUDNN 8.2, GCC-8.2, TensorRT 8.0.3.4,具体请参考各自模型主页。
  • 统计参数量Params(M),可以将以下代码插入trainer.py
    params = sum([
        p.numel() for n, p in self.model.named_parameters()
        if all([x not in n for x in ['_mean', '_variance']])
    ]) # exclude BatchNorm running status
    print('Params: ', params / 1e6)
  • 统计FLOPs(G),首先安装PaddleSlim, pip install paddleslim,然后设置runtime.ymlprint_flops: True,并且注意确保是单尺度下如640x640,打印的是MACs,FLOPs=2*MACs
  • 各模型导出后的权重以及ONNX,分为带(w)和不带(wo)后处理NMS,都提供了下载链接,请参考各自模型主页下载。w_nms表示带NMS后处理,可以直接使用预测出最终检测框结果如python deploy/python/infer.py --model_dir=ppyoloe_crn_l_300e_coco_w_nms/ --image_file=demo/000000014439.jpg --device=GPUwo_nms表示不带NMS后处理,是测速时使用,如需预测出检测框结果需要找到对应head中的后处理相关代码并修改为如下:
       if self.exclude_nms:
           # `exclude_nms=True` just use in benchmark for speed test
           # return pred_bboxes.sum(), pred_scores.sum() # 原先是这行,现在注释
           return pred_bboxes, pred_scores # 新加这行,表示保留进NMS前的原始结果
       else:
           bbox_pred, bbox_num, _ = self.nms(pred_bboxes, pred_scores)
           return bbox_pred, bbox_num

并重新导出,使用时再另接自己写的NMS后处理

使用指南

COCO数据集下载

下载MS COCO数据集,官网下载地址为: annotations, train2017, val2017, test2017。 PaddleDetection团队提供的下载链接为:coco(共约22G)和test2017,注意test2017可不下载,评估是使用的val2017。

一键运行全流程:

model_type=ppyoloe # 可修改,如 yolov7
job_name=ppyoloe_crn_l_300e_coco # 可修改,如 yolov7_l_300e_coco

config=configs/${model_type}/${job_name}.yml
log_dir=log_dir/${job_name}
# weights=https://bj.bcebos.com/v1/paddledet/models/${job_name}.pdparams
weights=output/${job_name}/model_final.pdparams

# 1.训练(单卡/多卡)
# CUDA_VISIBLE_DEVICES=0 python3.7 tools/train.py -c ${config} --eval --amp
python3.7 -m paddle.distributed.launch --log_dir=${log_dir} --gpus 0,1,2,3,4,5,6,7 tools/train.py -c ${config} --eval --amp

# 2.评估
CUDA_VISIBLE_DEVICES=0 python3.7 tools/eval.py -c ${config} -o weights=${weights} --classwise

# 3.直接预测
CUDA_VISIBLE_DEVICES=0 python3.7 tools/infer.py -c ${config} -o weights=${weights} --infer_img=demo/000000014439_640x640.jpg --draw_threshold=0.5

# 4.导出模型
CUDA_VISIBLE_DEVICES=0 python3.7 tools/export_model.py -c ${config} -o weights=${weights} # exclude_nms=True trt=True

# 5.部署预测
CUDA_VISIBLE_DEVICES=0 python3.7 deploy/python/infer.py --model_dir=output_inference/${job_name} --image_file=demo/000000014439_640x640.jpg --device=GPU

# 6.部署测速
CUDA_VISIBLE_DEVICES=0 python3.7 deploy/python/infer.py --model_dir=output_inference/${job_name} --image_file=demo/000000014439_640x640.jpg --device=GPU --run_benchmark=True # --run_mode=trt_fp16

# 7.onnx导出
paddle2onnx --model_dir output_inference/${job_name} --model_filename model.pdmodel --params_filename model.pdiparams --opset_version 12 --save_file ${job_name}.onnx

# 8.onnx测速
/usr/local/TensorRT-8.0.3.4/bin/trtexec --onnx=${job_name}.onnx --workspace=4096 --avgRuns=10 --shapes=input:1x3x640x640 --fp16

注意:

  • 将以上命令写在一个脚本文件里如run.sh,一键运行命令为:sh run.sh,也可命令行一句句去运行。
  • 如果想切换模型,只要修改开头两行即可,如:
    model_type=yolov7
    job_name=yolov7_l_300e_coco
    
  • 统计参数量Params(M),可以将以下代码插入trainer.py
    params = sum([
        p.numel() for n, p in self.model.named_parameters()
        if all([x not in n for x in ['_mean', '_variance']])
    ]) # exclude BatchNorm running status
    print('Params: ', params / 1e6)
  • 统计FLOPs(G),首先安装PaddleSlim, pip install paddleslim,然后设置runtime.ymlprint_flops: True,并且注意确保是单尺度下如640x640,打印的是MACs,FLOPs=2*MACs

自定义数据集训练:

数据集准备:

1.自定义数据集的标注制作,请参考DetAnnoTools;

2.自定义数据集的训练准备,请参考PrepareDataSet

fintune训练:

除了更改数据集的路径外,训练一般推荐加载对应模型的COCO预训练权重去fintune,会更快收敛和达到更高精度,如:

# 单卡fintune训练:
# CUDA_VISIBLE_DEVICES=0 python3.7 tools/train.py -c ${config} --eval --amp -o pretrain_weights=https://paddledet.bj.bcebos.com/models/ppyoloe_crn_l_300e_coco.pdparams

# 多卡fintune训练:
python3.7 -m paddle.distributed.launch --log_dir=./log_dir --gpus 0,1,2,3,4,5,6,7 tools/train.py -c ${config} --eval --amp -o pretrain_weights=https://paddledet.bj.bcebos.com/models/ppyoloe_crn_l_300e_coco.pdparams

注意:

  • fintune训练一般会提示head分类分支最后一层卷积的通道数没对应上,属于正常情况,是由于自定义数据集一般和COCO数据集种类数不一致;
  • fintune训练一般epoch数可以设置更少,lr设置也更小点如1/10,最高精度可能出现在中间某个epoch;

预测和导出:

使用自定义数据集预测和导出模型时,如果TestDataset数据集路径设置不正确会默认使用COCO 80类。 除了TestDataset数据集路径设置正确外,也可以自行修改和添加对应的label_list.txt文件(一行记录一个对应种类),TestDataset中的anno_path也可设置为绝对路径,如:

TestDataset:
  !ImageFolder
    anno_path: label_list.txt # 如不使用dataset_dir,则anno_path即为相对于PaddleDetection主目录的相对路径
    # dataset_dir: dataset/my_coco # 如使用dataset_dir,则dataset_dir/anno_path作为新的anno_path

label_list.txt里的一行记录一个对应种类,如下所示:

person
vehicle

======================================================

简体中文 | English

飞桨目标检测开发套件,端到端地完成从训练到部署的全流程目标检测应用。

产品动态

  • 🔥 2022.8.26:PaddleDetection发布release/2.5版本

    • 🗳 特色模型:
      • 发布PP-YOLOE+,最高精度提升2.4% mAP,达到54.9% mAP,模型训练收敛速度提升3.75倍,端到端预测速度最高提升2.3倍;多个下游任务泛化性提升
      • 发布PicoDet-NPU模型,支持模型全量化部署;新增PicoDet版面分析模型
      • 发布PP-TinyPose升级版增强版,在健身、舞蹈等场景精度提升9.1% AP,支持侧身、卧躺、跳跃、高抬腿等非常规动作
    • 🔮 场景能力:
      • 发布行人分析工具PP-Human v2,新增打架、打电话、抽烟、闯入四大行为识别,底层算法性能升级,覆盖行人检测、跟踪、属性三类核心算法能力,提供保姆级全流程开发及模型优化策略,支持在线视频流输入
      • 首次发布PP-Vehicle,提供车牌识别、车辆属性分析(颜色、车型)、车流量统计以及违章检测四大功能,兼容图片、在线视频流、视频输入,提供完善的二次开发文档教程
    • 💡 前沿算法:
      • 全面覆盖的YOLO家族经典与最新模型: 包括YOLOv3,百度飞桨自研的实时高精度目标检测检测模型PP-YOLOE,以及前沿检测算法YOLOv4、YOLOv5、YOLOX,MT-YOLOv6及YOLOv7
      • 新增基于ViT骨干网络高精度检测模型,COCO数据集精度达到55.7% mAP;新增OC-SORT多目标跟踪模型;新增ConvNeXt骨干网络
    • 📋 产业范例:新增智能健身打架识别来客分析、车辆结构化范例
  • 2022.3.24:PaddleDetection发布release/2.4版本

    • 发布高精度云边一体SOTA目标检测模型PP-YOLOE,提供s/m/l/x版本,l版本COCO test2017数据集精度51.6%,V100预测速度78.1 FPS,支持混合精度训练,训练较PP-YOLOv2加速33%,全系列多尺度模型,满足不同硬件算力需求,可适配服务器、边缘端GPU及其他服务器端AI加速卡。
    • 发布边缘端和CPU端超轻量SOTA目标检测模型PP-PicoDet增强版,精度提升2%左右,CPU预测速度提升63%,新增参数量0.7M的PicoDet-XS模型,提供模型稀疏化和量化功能,便于模型加速,各类硬件无需单独开发后处理模块,降低部署门槛。
    • 发布实时行人分析工具PP-Human,支持行人跟踪、人流量统计、人体属性识别与摔倒检测四大能力,基于真实场景数据特殊优化,精准识别各类摔倒姿势,适应不同环境背景、光线及摄像角度。
    • 新增YOLOX目标检测模型,支持nano/tiny/s/m/l/x版本,x版本COCO val2017数据集精度51.8%。
  • 更多版本发布

简介

PaddleDetection为基于飞桨PaddlePaddle的端到端目标检测套件,内置30+模型算法250+预训练模型,覆盖目标检测、实例分割、跟踪、关键点检测等方向,其中包括服务器端和移动端高精度、轻量级产业级SOTA模型、冠军方案和学术前沿算法,并提供配置化的网络模块组件、十余种数据增强策略和损失函数等高阶优化支持和多种部署方案,在打通数据处理、模型开发、训练、压缩、部署全流程的基础上,提供丰富的案例及教程,加速算法产业落地应用。

特性

  • 模型丰富: 包含目标检测实例分割人脸检测关键点检测多目标跟踪250+个预训练模型,涵盖多种全球竞赛冠军方案。
  • 使用简洁:模块化设计,解耦各个网络组件,开发者轻松搭建、试用各种检测模型及优化策略,快速得到高性能、定制化的算法。
  • 端到端打通: 从数据增强、组网、训练、压缩、部署端到端打通,并完备支持云端/边缘端多架构、多设备部署。
  • 高性能: 基于飞桨的高性能内核,模型训练速度及显存占用优势明显。支持FP16训练, 支持多机训练。

技术交流

  • 如果你发现任何PaddleDetection存在的问题或者是建议, 欢迎通过GitHub Issues给我们提issues。

  • 欢迎加入PaddleDetection 微信用户群(扫码填写问卷即可入群)

    • 入群福利 💎:获取PaddleDetection团队整理的重磅学习大礼包🎁
      • 📊 福利一:获取飞桨联合业界企业整理的开源数据集
      • 👨‍🏫 福利二:获取PaddleDetection历次发版直播视频与最新直播咨询
      • 🗳 福利三:获取垂类场景预训练模型集合,包括工业、安防、交通等5+行业场景
      • 🗂 福利四:获取10+全流程产业实操范例,覆盖火灾烟雾检测、人流量计数等产业高频场景

套件结构概览

Architectures Backbones Components Data Augmentation
    Object Detection
    • Faster RCNN
    • FPN
    • Cascade-RCNN
    • PSS-Det
    • RetinaNet
    • YOLOv3
    • YOLOv5
    • MT-YOLOv6
    • YOLOv7
    • PP-YOLOv1/v2
    • PP-YOLO-Tiny
    • PP-YOLOE
    • PP-YOLOE+
    • YOLOX
    • SSD
    • CenterNet
    • FCOS
    • TTFNet
    • TOOD
    • GFL
    • PP-PicoDet
    • DETR
    • Deformable DETR
    • Swin Transformer
    • Sparse RCNN
    Instance Segmentation
    • Mask RCNN
    • Cascade Mask RCNN
    • SOLOv2
    Face Detection
    • BlazeFace
    Multi-Object-Tracking
    • JDE
    • FairMOT
    • DeepSORT
    • ByteTrack
    • OC-SORT
    KeyPoint-Detection
    • HRNet
    • HigherHRNet
    • Lite-HRNet
    • PP-TinyPose
Details
  • ResNet(&vd)
  • Res2Net(&vd)
  • CSPResNet
  • SENet
  • Res2Net
  • HRNet
  • Lite-HRNet
  • DarkNet
  • CSPDarkNet
  • MobileNetv1/v3
  • ShuffleNet
  • GhostNet
  • BlazeNet
  • DLA
  • HardNet
  • LCNet
  • ESNet
  • Swin-Transformer
  • ConvNeXt
  • Vision Transformer
Common
  • Sync-BN
  • Group Norm
  • DCNv2
  • EMA
KeyPoint
  • DarkPose
FPN
  • BiFPN
  • CSP-PAN
  • Custom-PAN
  • ES-PAN
  • HRFPN
Loss
  • Smooth-L1
  • GIoU/DIoU/CIoU
  • IoUAware
  • Focal Loss
  • CT Focal Loss
  • VariFocal Loss
Post-processing
  • SoftNMS
  • MatrixNMS
Speed
  • FP16 training
  • Multi-machine training
Details
  • Resize
  • Lighting
  • Flipping
  • Expand
  • Crop
  • Color Distort
  • Random Erasing
  • Mixup
  • AugmentHSV
  • Mosaic
  • Cutmix
  • Grid Mask
  • Auto Augment
  • Random Perspective

模型性能概览

云端模型性能对比

各模型结构和骨干网络的代表模型在COCO数据集上精度mAP和单卡Tesla V100上预测速度(FPS)对比图。

说明:

  • ViTViT-Cascade-Faster-RCNN模型,COCO数据集mAP高达55.7%
  • Cascade-Faster-RCNNCascade-Faster-RCNN-ResNet50vd-DCN,PaddleDetection将其优化到COCO数据mAP为47.8%时推理速度为20FPS
  • PP-YOLOE是对PP-YOLO v2模型的进一步优化,在COCO数据集精度51.6%,Tesla V100预测速度78.1FPS
  • PP-YOLOE+是对PPOLOE模型的进一步优化,在COCO数据集精度53.3%,Tesla V100预测速度78.1FPS
  • YOLOXYOLOv5均为基于PaddleDetection复现算法
  • 图中模型均可在模型库中获取
移动端模型性能对比

各移动端模型在COCO数据集上精度mAP和高通骁龙865处理器上预测速度(FPS)对比图。

说明:

  • 测试数据均使用高通骁龙865(4*A77 + 4*A55)处理器batch size为1, 开启4线程测试,测试使用NCNN预测库,测试脚本见MobileDetBenchmark
  • PP-PicoDetPP-YOLO-Tiny为PaddleDetection自研模型,其余模型PaddleDetection暂未提供

模型库

1. 通用检测

PP-YOLOE+系列 推荐场景:Nvidia V100, T4等云端GPU和Jetson系列等边缘端设备

模型名称 COCO精度(mAP) V100 TensorRT FP16速度(FPS) 配置文件 模型下载
PP-YOLOE+_s 43.9 333.3 链接 下载地址
PP-YOLOE+_m 50.0 208.3 链接 下载地址
PP-YOLOE+_l 53.3 149.2 链接 下载地址
PP-YOLOE+_x 54.9 95.2 链接 下载地址

PP-PicoDet系列 推荐场景:ARM CPU(RK3399, 树莓派等) 和NPU(比特大陆,晶晨等)移动端芯片和x86 CPU设备

模型名称 COCO精度(mAP) 骁龙865 四线程速度(ms) 配置文件 模型下载
PicoDet-XS 23.5 7.81 链接 下载地址
PicoDet-S 29.1 9.56 链接 下载地址
PicoDet-M 34.4 17.68 链接 下载地址
PicoDet-L 36.1 25.21 链接 下载地址

前沿检测算法

模型名称 COCO精度(mAP) V100 TensorRT FP16速度(FPS) 配置文件 模型下载
YOLOX-l 50.1 107.5 链接 下载地址
YOLOv5-l 48.6 136.0 链接 下载地址
YOLOv7-l 51.0 135.0 链接 下载地址

其他通用检测模型 文档链接

2. 实例分割
模型名称 模型简介 推荐场景 COCO精度(mAP) 配置文件 模型下载
Mask RCNN 两阶段实例分割算法 云边端 box AP: 41.4
mask AP: 37.5
链接 下载地址
Cascade Mask RCNN 两阶段实例分割算法 云边端 box AP: 45.7
mask AP: 39.7
链接 下载地址
SOLOv2 轻量级单阶段实例分割算法 云边端 mask AP: 38.0 链接 下载地址
3. 关键点检测
模型名称 模型简介 推荐场景 COCO精度(AP) 速度 配置文件 模型下载
HRNet-w32 + DarkPose
top-down 关键点检测算法
输入尺寸384x288
云边端
78.3 T4 TensorRT FP16 2.96ms 链接 下载地址
HRNet-w32 + DarkPose top-down 关键点检测算法
输入尺寸256x192
云边端 78.0 T4 TensorRT FP16 1.75ms 链接 下载地址
PP-TinyPose 轻量级关键点算法
输入尺寸256x192
移动端 68.8 骁龙865 四线程 6.30ms 链接 下载地址
PP-TinyPose 轻量级关键点算法
输入尺寸128x96
移动端 58.1 骁龙865 四线程 2.37ms 链接 下载地址

其他关键点检测模型 文档链接

4. 多目标跟踪PP-Tracking
模型名称 模型简介 推荐场景 精度 配置文件 模型下载
ByteTrack SDE多目标跟踪算法 仅包含检测模型 云边端 MOT-17 half val: 77.3 链接 下载地址
FairMOT JDE多目标跟踪算法 多任务联合学习方法 云边端 MOT-16 test: 75.0 链接 下载地址
OC-SORT SDE多目标跟踪算法 仅包含检测模型 云边端 MOT-17 half val: 75.5 链接 -

其他多目标跟踪模型 文档链接

5. 产业级实时行人分析工具PP-Human
任务 端到端速度(ms) 模型方案 模型体积
行人检测(高精度) 25.1ms 目标检测 182M
行人检测(轻量级) 16.2ms 目标检测 27M
行人跟踪(高精度) 31.8ms 多目标跟踪 182M
行人跟踪(轻量级) 21.0ms 多目标跟踪 27M
属性识别(高精度) 单人8.5ms 目标检测
属性识别
目标检测:182M
属性识别:86M
属性识别(轻量级) 单人7.1ms 目标检测
属性识别
目标检测:182M
属性识别:86M
摔倒识别 单人10ms 多目标跟踪
关键点检测
基于关键点行为识别
多目标跟踪:182M
关键点检测:101M
基于关键点行为识别:21.8M
闯入识别 31.8ms 多目标跟踪 182M
打架识别 19.7ms 视频分类 90M
抽烟识别 单人15.1ms 目标检测
基于人体id的目标检测
目标检测:182M
基于人体id的目标检测:27M
打电话识别 单人ms 目标检测
基于人体id的图像分类
目标检测:182M
基于人体id的图像分类:45M

点击模型方案中的模型即可下载指定模型

详细信息参考文档

6. 产业级实时车辆分析工具PP-Vehicle
任务 端到端速度(ms) 模型方案 模型体积
车辆检测(高精度) 25.7ms 目标检测 182M
车辆检测(轻量级) 13.2ms 目标检测 27M
车辆跟踪(高精度) 40ms 多目标跟踪 182M
车辆跟踪(轻量级) 25ms 多目标跟踪 27M
车牌识别 4.68ms 车牌检测
车牌识别
车牌检测:3.9M
车牌字符识别: 12M
车辆属性 7.31ms 属性识别 7.2M

点击模型方案中的模型即可下载指定模型

详细信息参考文档

文档教程

入门教程

进阶教程

课程专栏

  • 【理论基础】目标检测7日打卡营 目标检测任务综述、RCNN系列目标检测算法详解、YOLO系列目标检测算法详解、PP-YOLO优化策略与案例分享、AnchorFree系列算法介绍和实践

  • 【产业实践】AI快车道产业级目标检测技术与应用 目标检测超强目标检测算法矩阵、实时行人分析系统PP-Human、目标检测产业应用全流程拆解与实践

  • 【行业特色】2022.3.26 智慧城市行业七日课 城市规划、城市治理、智慧政务、交通管理、社区治理

应用案例

第三方教程推荐

版本更新

版本更新内容请参考版本更新文档

贡献代码

我们非常欢迎你可以为PaddleDetection提供代码,也十分感谢你的反馈。

  • 感谢Mandroide清理代码并且统一部分函数接口。
  • 感谢FL77N贡献Sparse-RCNN模型。
  • 感谢Chen-Song贡献Swin Faster-RCNN模型。
  • 感谢yangyudong, hchhtc123 开发PP-Tracking GUI界面
  • 感谢Shigure19 开发PP-TinyPose健身APP
  • 感谢manangoel99贡献Wandb可视化方式

引用

@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}
}

paddledetection_yoloseries's People

Contributors

jerrywgz avatar yghstill avatar nemonameless avatar heavengate avatar ghostxsl avatar wangxinxin08 avatar zhiboniu avatar lyuwenyu avatar zoooo0820 avatar qingqing01 avatar willthefrog avatar yixinkristy avatar littletomatodonkey avatar pkhk-1 avatar wanghaoshuang avatar baiyfbupt avatar flyingqianmm avatar slf12 avatar noplz avatar xyz-916 avatar sunahong1993 avatar channingss avatar ldoublev avatar fdinsky avatar mmglove avatar jiweimaster avatar yzl19940819 avatar walloollaw avatar rachelxu7 avatar an1018 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.