基于PaddlePaddle实现的目标检测模型PP-YOLO

2023-06-04 16:34:58 浏览数 (2)

PP-YOLO

PP-YOLO是PaddleDetection优化和改进的YOLOv3的模型,其精度(COCO数据集mAP)和推理速度均优于YOLOv4模型,PP-YOLO在COCO test-dev2017数据集上精度达到45.9%,在单卡V100上FP32推理速度为72.9 FPS, V100上开启TensorRT下FP16推理速度为155.6 FPS。其中还包含了PP-YOLO tiny模型,此模型后量化压缩模型,将模型体积压缩到1.3M,对精度和预测速度基本无影响。

本教程源码地址:https://github.com/yeyupiaoling/PP-YOLO

训练

  1. 安装PaddlePaddle和PaddleDetection依赖库。
代码语言:javascript复制
pip install paddlepaddle-gpu==2.1.0.post101 -f https://paddlepaddle.org.cn/whl/mkl/stable.html
pip install paddledet==2.1.0 -i https://mirror.baidu.com/pypi/simple
  1. 准备数据,默认使用的是VOC格式的数据集,首先将标注文件放在dataset/annotation/,图像文件放在dataset/images/,最后执行create_data_list.py程序生成数据列表和类别名称。
  2. 修改voc.yml中的类别数量num_classes,这个类别数量不用算上背景这一类别。
  3. 执行train.py开始训练,其中选择PP-YOLO和PP-YOLO tiny模型,并支持量化训练,具体看配置参数。
  4. 执行visualdl --logdir=log查看训练可视化信息。

评估

执行eval.py完成模型评估,其中参数-o weights为模型的路径,不需要带后缀名,执行之后输入如下。

代码语言:javascript复制
python eval.py -o weights=output/ppyolo_mbv3_large_qat/best_model

2020-08-17 12:56:58,530-INFO: Test iter 0
2020-08-17 12:57:13,349-INFO: Test iter 100
2020-08-17 12:57:27,421-INFO: Test iter 200
2020-08-17 12:57:36,716-INFO: Test finish iter 268
2020-08-17 12:57:36,716-INFO: Total number of images: 1070, inference time: 27.43800773116421 fps.
2020-08-17 12:57:36,717-INFO: Start evaluate...
2020-08-17 12:57:36,999-INFO: Accumulating evaluatation results...
2020-08-17 12:57:37,017-INFO: mAP(0.5, 11point) = 90.75

预测

  1. 执行预测执行先要导出预测模型,执行export_model.py,其中参数--weights为模型的路径,不需要带后缀名,--output_dir输出预测模型的路径,文件目录结构如下。
代码语言:javascript复制
python export_model.py -o weights=output/ppyolo_mbv3_large_qat/best_model
  1. 导出PaddleLite模型。
代码语言:javascript复制
python to_lite_model.py

预测

项目提供了两种预测方式,第一种infer.py为使用图像路径进行预测。第二个infer_camera.py为调用摄像头进行实时预测。

0 人点赞