GitHub - PaddlePaddle/PaddleYOLO: 🚀🚀🚀 YOLO series of PaddlePaddle implementation, PP-YOLOE+, RT-DETR, YOLOv5, YOLOv6, YOLOv7, YOLOv8, YOLOv10, YOLO11, YOLOX, YOLOv5u, YOLOv7u, YOLOv6Lite, RTMDet and so on. 🚀🚀🚀 (original) (raw)

简体中文 | English

简介

PaddleYOLO是基于PaddleDetection的YOLO系列模型库,只包含YOLO系列模型的相关代码,支持YOLOv3PP-YOLOPP-YOLOv2PP-YOLOE、**PP-YOLOE+RT-DETR**、YOLOXYOLOv5YOLOv6YOLOv7YOLOv8YOLOv5uYOLOv7uYOLOv6LiteRTMDet等模型,COCO数据集模型库请参照 ModelZooconfigs

注意:

教程

安装

Clone 代码库和安装 requirements.txt,环境需要在一个Python>=3.7.0 下的环境,且需要安装PaddlePaddle>=2.4.2

git clone https://github.com/PaddlePaddle/PaddleYOLO # clone cd PaddleYOLO pip install -r requirements.txt # install

训练/验证/预测/将以下命令写在一个脚本文件里如```run.sh```,一键运行命令为:```sh run.sh```,也可命令行一句句去运行。

model_name=ppyoloe # 可修改,如 yolov7 job_name=ppyoloe_plus_crn_s_80e_coco # 可修改,如 yolov7_tiny_300e_coco

config=configs/${model_name}/${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.训练(单卡/多卡),加 --eval 表示边训边评估,加 --amp 表示混合精度训练

CUDA_VISIBLE_DEVICES=0 python tools/train.py -c ${config} --eval --amp

python -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.评估,加 --classwise 表示输出每一类mAP

CUDA_VISIBLE_DEVICES=0 python tools/eval.py -c config−oweights={config} -o weights=configoweights={weights} --classwise

3.预测 (单张图/图片文件夹)

CUDA_VISIBLE_DEVICES=0 python tools/infer.py -c config−oweights={config} -o weights=configoweights={weights} --infer_img=demo/000000014439_640x640.jpg --draw_threshold=0.5

CUDA_VISIBLE_DEVICES=0 python tools/infer.py -c config−oweights={config} -o weights=configoweights={weights} --infer_dir=demo/ --draw_threshold=0.5

部署/测速

将以下命令写在一个脚本文件里如run.sh,一键运行命令为:sh run.sh,也可命令行一句句去运行。

model_name=ppyoloe # 可修改,如 yolov7 job_name=ppyoloe_plus_crn_s_80e_coco # 可修改,如 yolov7_tiny_300e_coco

config=configs/${model_name}/${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

4.导出模型,以下3种模式选一种

普通导出,加trt表示用于trt加速,对NMS和silu激活函数提速明显

CUDA_VISIBLE_DEVICES=0 python tools/export_model.py -c config−oweights={config} -o weights=configoweights={weights} # trt=True

exclude_post_process去除后处理导出,返回和YOLOv5导出ONNX时相同格式的concat后的1个Tensor,是未缩放回原图的坐标+分类置信度

CUDA_VISIBLE_DEVICES=0 python tools/export_model.py -c config−oweights={config} -o weights=configoweights={weights} exclude_post_process=True # trt=True

exclude_nms去除NMS导出,返回2个Tensor,是缩放回原图后的坐标和分类置信度

CUDA_VISIBLE_DEVICES=0 python tools/export_model.py -c config−oweights={config} -o weights=configoweights={weights} exclude_nms=True # trt=True

5.部署预测,注意不能使用 去除后处理 或 去除NMS 导出后的模型去预测

CUDA_VISIBLE_DEVICES=0 python deploy/python/infer.py --model_dir=output_inference/${job_name} --image_file=demo/000000014439_640x640.jpg --device=GPU

6.部署测速,加 “--run_mode=trt_fp16” 表示在TensorRT FP16模式下测速,注意如需用到 trt_fp16 则必须为加 trt=True 导出的模型

CUDA_VISIBLE_DEVICES=0 python 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导出,一般结合 exclude_post_process去除后处理导出的模型

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 trt测速

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

model_name=yolov7  
job_name=yolov7_tiny_300e_coco  

更新日志

产品动态

简介

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

特性

技术交流

套件结构概览

Architectures Backbones Components Data Augmentation
Object Detection YOLOv3 YOLOv5 YOLOv6 YOLOv7 YOLOv8 PP-YOLOv1/v2 PP-YOLO-Tiny PP-YOLOE PP-YOLOE+ YOLOX RTMDet Details ResNet(&vd) CSPResNet DarkNet CSPDarkNet ConvNeXt EfficientRep CSPBepBackbone ELANNet CSPNeXt Common Sync-BN Group Norm DCNv2 EMA FPN YOLOv3FPN PPYOLOFPN PPYOLOTinyFPN PPYOLOPAN YOLOCSPPAN Custom-PAN RepPAN CSPRepPAN ELANFPN ELANFPNP6 CSPNeXtPAFPN Loss Smooth-L1 GIoU/DIoU/CIoU IoUAware 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)对比图。

说明:

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

说明:

模型库

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 链接 下载地址

前沿检测算法

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

文档教程

入门教程

进阶教程

版本更新

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

许可证书

本项目的发布受GPL-3.0 license许可认证。

引用

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