PaddleDetection 是飞桨推出的物体检测统一框架。支持现有的RCNN、SSD、YOLO等系列模型、支持 ResNet、ResNet-VD、ResNeXt、ResNeXt-VD、SENet、MobileNet、DarkNet等主干网络。

数据集准备

PaddleDetection所使用的数据为VOC格式,VOC数据集的准备可以参考下面这篇文章:https://blog.csdn.net/cyj972628089/article/details/113408709

本次项目为水果分类任务,数据集中只有苹果、香蕉和橘子三类,可根据实际需要自行修改。

在AI studio上训练

数据准备

运行此程序可以下载PaddleDetection包:

git clone https://gitee.com/paddlepaddle/PaddleDetection.git

为节约时间,我将PaddleDetection和VOC数据集一起作为数据集在创建项目时上传(压缩文件最好为.zip格式):
在这里插入图片描述

创建完成后,我们就可以在data文件夹内看到这两个文件的压缩包。

解压数据集和环境资源

%cd /home/aistudio/
!unzip data/data69541/dataset.zip
!unzip data/data69542/PaddleDetection.zip

解压完成后可以得到下面这两个文件夹:
在这里插入图片描述

修改配置文件

点开PaddleDetection→configs,可以看到里面有各种模型的.yml配置文件:
在这里插入图片描述

我们这次的项目是水果分类,所以我们选择yolov3_mobilenet_v1_fruit.yml做为本项目的训练配置文件。该配置文件是使用YOLO v3的模型结构,同时主干网络为Mobilenrt V1。

双击打开配置文件,我们需要关注以下几点:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

配置环境变量


#根据自己的路径选择PaddleDection配置python环境变量
%env PYTHONPATH=/home/aistudio/PaddleDetection

开始训练

%cd /home/aistudio/PaddleDetection-release-0.2
#执行train.py,开始训练,更多参数请查看train.py文件,并在末尾进行个性化设置
!python -u tools/train.py -c configs/yolov3_mobilenet_v1_fruit.yml  --eval

出现下面的内容代表正在进行训练:
在这里插入图片描述

图片预测

模型训练完成后即可进行图片的预测,我上网找了苹果、香蕉和橘子的图片,放在demo文件夹中:
在这里插入图片描述

在这里插入图片描述

单张图片的预测
!python -u tools/infer.py -c configs/yolov3_mobilenet_v1_fruit.yml -o weights=output/yolov3_mobilenet_v1_fruit/best_model --infer_img=/home/aistudio/demo/orange.jpg --output_dir=infer_output/test_output

在PaddleDetection→infer_output中即可看到预测图片:
在这里插入图片描述

文件夹内所有图片的预测
!python -u tools/infer.py -c configs/yolov3_mobilenet_v1_fruit.yml -o weights=output/yolov3_mobilenet_v1_fruit/best_model --infer_dir=/home/aistudio/demo --output_dir=infer_output

此时infer_output中即可看到所有预测图片:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

PaddleDetection文档链接

https://github.com/PaddlePaddle/PaddleDetection