- 人工智能
- 计算机视觉
- 预训练
【免费下载链接】PaddleSeg
Easy-to-use image segmentation library with awesome pre-trained model zoo, supporting wide-range of practical tasks in Semantic Segmentation, Interactive Segmentation, Panoptic Segmentation, Image Matting, 3D Segmentation, etc.
导读
本文给出「数据标注 → 模型训练 → 评估预测」的一条完整目标检测实战链路:使用 PaddleLabel 完成道路标志数据集的标注、划分与导出,再交给 PaddleDetection 基于 YOLOv3 + MobileNetV1 训练一个自定义路标检测模型。读完本文,你将掌握 PaddleLabel 检测标注项目的完整操作流程(PASCAL VOC 数据格式、数据集划分与导出),以及 PaddleDetection 中针对自定义数据集的配置修改、训练、评估与单图预测方法,可直接复刻到自己的目标检测任务中。
1. 全流程概览:PaddleLabel 与 PaddleDetection 如何衔接
PaddleLabel 是飞桨生态的配套标注工具,涵盖分类、检测、分割三类常见视觉任务的标注能力,并支持手动标注与机器学习预标注相结合;其导出数据可直接用于 Paddle 各套件的训练预测流程(见 contrib/PaddleLabel/README.md)。对于检测任务,PaddleLabel 支持PASCAL VOC、COCO、YOLO三种数据集格式(见 检测标注文档),本文采用 PASCAL VOC 格式衔接 PaddleDetection。
整条链路可以概括为:
PaddleLabel 标注数据 + PaddleDetection 训练预测 = 快速完成一次目标检测任务
具体分为三大阶段:
- 数据准备:在 PaddleLabel 中创建检测标注项目 → 用矩形框逐张标注 → 使用
Split Dataset功能划分训练/验证/测试子集 → 导出数据集。 - 模型训练:安装 paddlepaddle 与 PaddleDetection → 将导出的数据集放入
PaddleDetection/dataset/→ 修改数据集配置文件 → 启动训练。 - 评估与预测:用
eval.py评估模型精度,用infer.py对单张图片进行推理验证。
2. 数据准备:用 PaddleLabel 标注路标数据集
2.1 安装与启动 PaddleLabel
推荐在独立虚拟环境中安装,避免依赖冲突(详见 安装指南):
conda create -n paddlelabel python=3.10 conda activate paddlelabel pip install --upgrade paddlelabel启动服务(默认运行在http://127.0.0.1:17995,可用--port/-p指定端口,--lan/-l暴露到局域网便于在平板上标注):
paddlelabel # 等价命令:pdlabel paddlelabel --port 8000 --lan2.2 创建检测标注项目
浏览器打开 PaddleLabel 后,通过「创建项目」下的目标检测卡片创建新项目,需要填写(见 检测标注文档):
- 项目名称(必填):检测标注项目的名称;
- 数据集路径(必填):本地数据集的根文件夹(建议从文件管理器复制粘贴);
- 数据集描述(选填):项目简单描述;
- 标签格式(选填):导入数据集的格式,如果数据集尚不含标注信息则无需选择。
2.3 标注操作
PaddleLabel 标注界面分为五个区域:上方为可切换的标签页,下方为标注进度展示,左侧为图像显示区与工具栏,右侧为标签列表。检测任务的标注步骤为:
- 点击右侧「添加标签」,创建路标类别(如
speedlimit、stop、crosswalk、trafficlight等); - 选中一个标签,点击左侧工具栏的「矩形」,在图像上依次点击目标物体的左上角和右下角,出现矩形框即完成当前目标标注;通过「编辑」可调整矩形框大小和位置;
- 点击左右按钮切换图像,重复上述操作直至全部标注完成;
- 通过下方进度展示查看标注进度。
注意:右侧标签栏包含「标签列表」和「标注列表」两种视图。在目标检测中,标签列表对应类别,标注列表对应某个类别下的一个实例(即一个标注框)。
2.4 数据划分与导出
标注完成后,点击右侧工具栏的「项目总览」进入总览界面:
- 划分数据集(Split Dataset):点击「划分数据集」按钮,分别填入训练集、验证集、测试集的占比,点击确定完成划分;
- 导出数据集:点击「导出数据集」,输入导出目标文件夹路径,点击确认即可导出。
导出的数据会生成train_list.txt、val_list.txt、test_list.txt三个划分文件以及labels.txt标签文件。labels.txt中每行一个标签名,标签编号从0开始递增;xx_list.txt的每一行以相对数据集根目录的图像路径开头,后跟对应的标注文件路径或类别(详见 数据集文件结构说明)。
2.5 导出的数据集目录结构
将 PaddleLabel 导出的内容整体放到自建目录下,例如roadsign_det_dataset:
├── roadsign_det_dataset │ ├── Annotations # PASCAL VOC 格式的 xml 标注文件 │ ├── JPEGImages # 图像文件 │ ├── labels.txt # 类别标签(每行一个,编号从 0 开始) │ ├── test_list.txt # 测试集划分列表 │ ├── train_list.txt # 训练集划分列表 │ └── val_list.txt # 验证集划分列表这正是 PASCAL VOC 格式:每张图像对应一个 xml 标注文件,xml 中<object>节点下的<bndbox>保存xmin/ymin/xmax/ymax四角坐标;PaddleLabel 导入时会解析 xml 中的folder与filename节点来匹配图像文件,folder缺失时默认取JPEGImages(xml 的完整字段结构可参考 数据集文件结构说明 中的示例)。
3. 模型训练:PaddleDetection 训练自定义路标检测模型
3.1 安装必备库
3.1.1 安装 paddlepaddle
# 机器安装的是 CUDA9 或 CUDA10,运行以下命令安装 GPU 版 pip install paddlepaddle-gpu -i https://mirror.baidu.com/pypi/simple # 机器为纯 CPU 环境,运行以下命令安装 CPU 版 # pip install paddlepaddle3.1.2 安装 PaddleDetection 及依赖
git clone https://gitee.com/paddlepaddle/PaddleDetection cd PaddleDetection pip install -r requirements.txt python setup.py install3.2 准备自制的路标数据集
将上一步导出的数据集放入 PaddleDetection 的dataset目录下:
cd ./PaddleDetection/dataset/ mkdir roadsign_det_dataset cd ../../ cp -r ./roadsign_det_dataset/* ./PaddleDetection/dataset/roadsign_det_dataset3.3 修改配置文件
该任务主要涉及 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要点说明:
num_classes需与labels.txt中的类别数一致(示例中为 4 类路标);TrainDataset/EvalDataset使用!VOCDataSet读取 PaddleLabel 导出的 VOC 格式数据,anno_path分别指向导出的train_list.txt与val_list.txt;TestDataset使用!ImageFolder读取整目录图像用于预测,仅需提供标签列表路径;- 主配置文件
yolov3_mobilenet_v1_roadsign.yml会通过 include 机制把roadsign_voc.yml、optimizer_40e.yml、yolov3_mobilenet_v1.yml、yolov3_reader.yml等组合起来,因此只需保证数据路径配置正确即可启动训练。
3.4 开始训练
export CUDA_VISIBLE_DEVICES=0 # 开始训练,--eval 表示边训练边验证 python PaddleDetection/tools/train.py -c configs/yolov3/yolov3_mobilenet_v1_roadsign.yml --eval -o use_gpu=true-c指定主配置文件;--eval开启训练过程中的周期性验证,便于实时观察精度变化;-o use_gpu=true覆盖配置中的公共参数,显式启用 GPU 训练。
4. 模型评估与预测
4.1 评估
训练完成后,用eval.py在验证集上评估模型精度:
python PaddleDetection/tools/eval.py -c PaddleDetection/configs/yolov3/yolov3_mobilenet_v1_roadsign.yml -o use_gpu=true4.2 预测
使用infer.py对单张图片进行推理:
python PaddleDetection/tools/infer.py \ -c PaddleDetection/configs/yolov3/yolov3_mobilenet_v1_roadsign.yml \ -o use_gpu=true \ --infer_img=demo/road554.png--infer_img指定待预测图片路径。以路标检测为例,对一张包含限速标志的测试图,模型输出speedlimit 0.77,即预测类别为限速标志、置信度 0.77,预测正确。
5. 扩展:检测预标注与更多衔接方式
如果标注工作量较大,PaddleLabel 还提供基于飞桨的检测预标注能力:通过加载预训练检测模型(如 PicoDet),可对未标注图像自动生成候选框,标注人员只需确认或微调,能显著提升标注效率,使用方法见 检测自动标注文档。
除 PaddleDetection 外,PaddleLabel 导出的数据同样可以衔接 PaddleClas 分类训练、PaddleSeg 分割训练 以及 PaddleX 全流程工具链(训练教程索引),标注一次、多套件复用。此外,标注界面的「项目总览」还提供「导入额外数据」功能,可随时向已有项目补充新图片继续标注。
6. 总结
本文以道路标志检测为实例,完整串联了「PaddleLabel 标注(矩形框 + 数据集划分 + VOC 导出)→ PaddleDetection 训练(自定义数据集配置 + YOLOv3 训练)→ 评估与单图预测」的全流程。核心要点可归纳为:
- 格式对齐是衔接关键:PaddleLabel 导出的 PASCAL VOC 目录结构(
Annotations/JPEGImages/labels.txt/xx_list.txt)与 PaddleDetection 的VOCDataSet读取方式天然匹配,仅需在roadsign_voc.yml中指向数据集路径并核对num_classes; - 配置文件职责单一:主配置只做组装,数据路径、优化器、模型、reader 各自独立,自定义数据集时只动数据配置即可;
- 全流程可复用:同一套「标注→导出→配置→训练→评估」方法论可直接迁移到任何自定义目标检测数据集(行人、车辆、缺陷等),也可横向迁移到分类与分割任务。
- 人工智能
- 计算机视觉
- 预训练
【免费下载链接】PaddleSeg
Easy-to-use image segmentation library with awesome pre-trained model zoo, supporting wide-range of practical tasks in Semantic Segmentation, Interactive Segmentation, Panoptic Segmentation, Image Matting, 3D Segmentation, etc.
相关推荐
PaddleDetection 关键点检测数据标注实战:LabelMe 标注与 x2coco.py 转 COCO 格式全流程
PaddleDetection 关键点检测数据标注实战:LabelMe 标注与 x2coco.py 转 COCO 格式全流程 本指南以 PaddleDetect
人工智能深度学习计算机视觉PaddleDetection 30分钟快速上手:从路标检测数据集到训练、评估与部署全流程
PaddleDetection 30分钟快速上手:从路标检测数据集到训练、评估与部署全流程 导读 PaddleDetection 是基于 PaddlePaddl
人工智能深度学习计算机视觉PaddleDetection 多目标跟踪(MOT)标注工具实战指南:SDE 检测标注与 JDE 检测+ReID 标注全流程
PaddleDetection 多目标跟踪(MOT)标注工具实战指南:SDE 检测标注与 JDE 检测+ReID 标注全流程 本指南以 PaddleDetect
人工智能深度学习计算机视觉
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考