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

原文博客:Doi技术团队
链接地址:https://blog.doiduoyi.com/authors/1584446358138
初心:记录优秀的Doi技术团队学习经历
本文链接:基于PaddlePaddle实现的目标检测模型PP-YOLO

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。

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

训练

  1. 安装PaddlePaddle GPU版本,需要1.8.4以上。
python -m pip install paddlepaddle-gpu==1.8.4.post107 -i https://mirror.baidu.com/pypi/simple
  1. 安装ppdet,以及所需依赖包。
python setup.py
  1. 准备数据,默认使用的是VOC格式的数据集,如果要修改为COCO格式的数据集,需要修改configs/ppyolo.yml。其中VOC格式操作如下,首先将标注文件放在dataset/annotation/,图像文件放在dataset/images/,最后执行create_data_list.py程序生成数据列表和类别名称。

  2. 修改configs/ppyolo.yml中的类别数量num_classes,这个类别数量不用算上背景这一类别。

  3. 执行train.py开始训练。

评估

执行eval.py完成模型评估,其中参数--weights为模型的路径,不需要带后缀名,--overlap_thresh为需要评分的阈值,执行之后输入如下,从输出可以知道当阈值为0.75时,mAP为90.75。

$ python eval.py --weights=save_models/model_final --overlap_thresh=0.75

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.75, 11point) = 90.75

预测

  1. 执行预测执行先要导出预测模型,执行export_model.py,其中参数--weights为模型的路径,不需要带后缀名,--output_dir输出预测模型的路径,文件目录结构如下。
$ python export_model.py --weights=save_models/model_final --output_dir=output/

$ tree output
output/
├── infer_cfg.yml
├── __model__
└── __params__
  1. 项目提供了两种预测方式,第一个infer_path.py为使用图像路径进行预测,第二个infer_camera.py为调用摄像头进行实时预测。

猜你喜欢

转载自blog.csdn.net/qq_33200967/article/details/108069066