PaddleLabel 标注数据+PaddleDetection 训练预测=快速完成一次目标检测的任务
- 首先使用
PaddleLabel
对自制的路标数据集进行标注,其次使用Split Dataset
功能分割数据集,最后导出数据集 - 从
PaddleLabel
导出后的内容全部放到自己的建立的文件夹下,例如roadsign_det_dataset
,其目录结构如下:
├── roadsign_det_dataset
│ ├── Annotations
│ ├── JPEGImages
│ ├── labels.txt
│ ├── test_list.txt
│ ├── train_list.txt
│ ├── val_list.txt
2.1.1 安装 paddlepaddle
# 您的机器安装的是 CUDA9 或 CUDA10,请运行以下命令安装
pip install paddlepaddle-gpu -i https://mirror.baidu.com/pypi/simple
# 您的机器是CPU,请运行以下命令安装
# pip install paddlepaddle
2.1.2 安装 paddledetection 以及依赖项
git clone https://gitee.com/paddlepaddle/PaddleDetection
cd PaddleDetection
pip install -r requirements.txt
python setup.py install
cd ./PaddleDection/dataset/
mkdir roadsign_det_dataset
cd ../../
cp -r ./roadsign_det_dataset/* ./PaddleDection/dataset/roadsign_det_dataset
该任务主要涉及 6 个配置文件,分别是:
- 主配置文件入口:yolov3_mobilenet_v1_roadsign.yml
- 定义训练数据的路径:roadsign_voc.yml
- 定义公共参数:runtime.yml
- 定义优化器的策略:optimizer_40e.yml
- 定义模型和主干网络:yolov3_mobilenet_v1.yml
- 定义数据预处理方式:yolov3_reader.yml
这里我们只需要改动一个配置文件即定义训练数据的路径的配置文件:
PaddleDetection/configs/datasets/roadsign_voc.yml
metric: VOC
map_type: integral
num_classes: 4
TrainDataset:
!VOCDataSet
dataset_dir: dataset/roadsign_det_dataset
anno_path: train_list.txt
label_list: labels.txt
data_fields: ['image', 'gt_bbox', 'gt_class', 'difficult']
EvalDataset:
!VOCDataSet
dataset_dir: dataset/roadsign_det_dataset
anno_path: val_list.txt
label_list: labels.txt
data_fields: ['image', 'gt_bbox', 'gt_class', 'difficult']
TestDataset:
!ImageFolder
anno_path: dataset/roadsign_det_dataset/labels.txt
export CUDA_VISIBLE_DEVICES=0
# 开始训练
python PeddleDetection/tools/train.py -c configs/yolov3/yolov3_mobilenet_v1_roadsign.yml --eval -o use_gpu=true
python PeddleDetection/tools/eval.py -c PeddleDetection/configs/yolov3/yolov3_mobilenet_v1_roadsign.yml -o use_gpu=true
python PeddleDetection/tools/infer.py \
-c PeddleDetection/configs/yolov3/yolov3_mobilenet_v1_roadsign.yml \
-o use_gpu=true \
--infer_img=demo/road554.png
预测的样例图片如下图:
预测的结果是:
speedlimit 0.77 预测正确 ✔