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