免费获取学习方案
ARTICLE DETAIL

资讯详情

深耕编程基础知识与建站技术分享的一线实战洞察。

PaddleDetection 快速开始实战:10 分钟完成道路标志检测模型的训练、评估与推理

PaddleDetection 快速开始实战:10 分钟完成道路标志检测模型的训练、评估与推理 人工智能深度学习计算机视觉【免费下载链接】PaddleDetectionObject Detection toolkit based on PaddlePaddle. It supports object detection, instance segmentation, multiple object tracking and real-time multi-person keypoint detection.项目地址https://gitcode.com/gh_mirrors/pa/PaddleDetection点击查看免费下载本指南是 PaddleDetection 的官方快速上手教程以道路标志road sign检测为实战场景完整演示预训练模型推理 → 小数据集微调训练 → 评估 → 推理的端到端流程。读完本文你将掌握tools/train.py、tools/eval.py、tools/infer.py三大工具的标准用法理解 PaddleDetection 基于_BASE_的配置继承机制并能在约 10 分钟1080Ti GPU内产出一个 mAP 0.85 左右的目标检测模型。一、前置环境设置 GPUPaddleDetection 的默认运行设备为 GPU训练、评估、推理前需要先指定当前进程可见的 GPU 卡号。在终端中执行export CUDA_VISIBLE_DEVICES0该命令将显卡 0 暴露给当前进程。若机器有多张显卡可通过CUDA_VISIBLE_DEVICES0,1,2,3指定多卡用于分布式训练本教程中的示例均为单卡操作。若没有 GPU 环境可在后续命令中把-o use_gpufalse传入训练将回退到 CPU耗时约 1 小时。二、快速体验用预训练模型直接推理在动手训练之前可以先使用 PaddleDetection 提供的 COCO 预训练模型体验一次推理直观感受模型效果。执行python tools/infer.py -c configs/ppyolo/ppyolo_r50vd_dcn_1x_coco.yml -o use_gputrue weightshttps://paddledet.bj.bcebos.com/models/ppyolo_r50vd_dcn_1x_coco.pdparams --infer_imgdemo/000000014439.jpg命令中几个关键参数的含义如下-c指定模型配置文件这里使用 PP-YOLO 在 COCO 数据集上的配置 configs/ppyolo/ppyolo_r50vd_dcn_1x_coco.yml-o覆盖配置文件中的字段use_gputrue表示强制使用 GPU 推理weights直接指定预训练权重文件的 URL推理时会自动下载 [weights 指向的.pdparams权重]configs/ppyolo/ppyolo_r50vd_dcn_1x_coco.yml 中即weights: output/ppyolo_r50vd_dcn_1x_coco/model_final此处通过-o覆盖为远程地址--infer_img指定待推理的单张图像路径。预测结束后会在output文件夹下生成一张画有预测框的同名图像默认输出目录为output可通过--output_dir修改可视化保留阈值由--draw_threshold控制默认 0.5见 tools/infer.py 的参数定义。三、准备数据roadsign_voc 道路标志数据集本教程使用 Kaggle 的 road-sign-detection 道路标志数据集共 877 张图像、4 个类别crosswalk人行横道、speedlimit限速、stop停止、trafficlight红绿灯。数据集被划分为训练集 701 张、测试集 176 张并按 VOC 格式整理。仓库已内置该数据集的下载脚本python dataset/roadsign_voc/download_roadsign_voc.py注意此步骤可以跳过——训练阶段若检测到数据不存在会自动下载。该脚本位于 dataset/roadsign_voc/download_roadsign_voc.py其核心逻辑是调用ppdet.utils.download模块的download_dataset(download_path, roadsign_voc)将数据集解压到当前脚本所在目录即dataset/roadsign_voc。下载完成后目录中应包含JPEGImages/全部图像Annotations/VOC 格式的 XML 标注train.txt/valid.txt训练集与验证集的图像列表供 configs/datasets/roadsign_voc.yml 引用label_list.txt类别名称列表。对应地configs/datasets/roadsign_voc.yml 中通过TrainDataset/EvalDataset/TestDataset三组配置分别描述了训练、评估、推理阶段的数据来源并声明metric: VOC、map_type: integral、num_classes: 4。四、训练对小数据集微调 YOLOv31. 训练命令本教程的核心训练配置是 configs/yolov3/yolov3_mobilenet_v1_roadsign.yml它基于 COCO 预训练的 YOLOv3 MobileNetV1 主干在 4 类道路标志小数据集上微调。执行python tools/train.py -c configs/yolov3/yolov3_mobilenet_v1_roadsign.yml --eval -o use_gputrue-c参数指定配置文件-o参数覆盖配置文件中的全局变量这里设置使用 GPU--eval参数表示边训练边评估训练结束后会自动保存一个名为model_final的模型评估结果最优时对应保存的模型路径由配置中的weights: output/yolov3_mobilenet_v1_roadsign/model_final决定。参考耗时1080Ti GPU 约 10 分钟纯 CPU 约 1 小时。从 tools/train.py 的源码看训练流程如下ArgsParser解析命令行参数load_config加载 YAML 配置merge_config合并-o传入的覆盖项依据cfg.use_gpu调用paddle.set_device(gpu/cpu)设置运行设备Trainer(cfg, modetrain)构建训练器并根据pretrain_weights自动加载 COCO 预训练权重见配置中pretrain_weights: https://paddledet.bj.bcebos.com/models/yolov3_mobilenet_v1_270e_coco.pdparamstrainer.train(FLAGS.eval)启动训练--eval标志决定是否在训练过程中周期性地执行验证。2. 配置文件深度解读该训练配置通过_BASE_字段继承 5 个基础配置这是 PaddleDetection 的核心配置组织方式_BASE_: [ ../datasets/roadsign_voc.yml, # 数据集与评测指标 ../runtime.yml, # 运行期通用配置 _base_/optimizer_40e.yml, # 优化器与学习率 _base_/yolov3_mobilenet_v1.yml, # 模型结构 _base_/yolov3_reader.yml, # 数据读取与增强 ] pretrain_weights: https://paddledet.bj.bcebos.com/models/yolov3_mobilenet_v1_270e_coco.pdparams weights: output/yolov3_mobilenet_v1_roadsign/model_final YOLOv3Loss: ignore_thresh: 0.7 label_smooth: true各继承配置的关键内容如下优化器与学习率configs/yolov3/base/optimizer_40e.yml共训练 40 个 epochbase_lr: 0.0001基础学习率学习率调度采用PiecewiseDecay在第 32、36 epoch 时按gamma: 0.1阶梯衰减叠加LinearWarmup前 100 步从 1/3 倍线性预热到全量学习率优化器为 Momentum动量 0.9配合 L2 权重衰减factor 0.0005。微调场景下学习率通常远小于从头训练以保留预训练特征。模型结构configs/yolov3/base/yolov3_mobilenet_v1.ymlarchitecture: YOLOv3主干为MobileNetscale 1输出特征层[4, 6, 13]颈部为YOLOv3FPN检测头为YOLOv3Head3 个尺度共 9 组 anchoranchor_masks将 9 组 anchor 分配到 32/16/8 三个下采样层级BBoxPostProcess负责解码与MultiClassNMS后处理其中conf_thresh: 0.005、nms_threshold: 0.45、keep_top_k: 100。该文件还额外覆盖了YOLOv3Loss开启label_smooth: true并把ignore_thresh设为 0.7用于缓解小数据集的过拟合。数据读取与增强configs/yolov3/base/yolov3_reader.yml训练阶段batch_size: 8依次执行Decode → Mixup → RandomDistort → RandomExpand → RandomCrop → RandomFlip等样本级增强并配合BatchRandomResize在 320~608 之间随机缩放、Gt2YoloTarget将标注转换为 YOLOv3 的网格目标格式评估与推理阶段则统一Resize到 608×608batch_size: 1。这也是小数据集上短时间训出好效果的数据层面保障。运行期配置configs/runtime.yml定义了use_gpu: true、log_iter: 20每 20 个迭代打印一次日志、save_dir: output模型保存根目录、snapshot_epoch: 1每个 epoch 保存一次快照等全局字段其中-o use_gputrue覆盖的正是这里的use_gpu。3. 使用 VisualDL 实时观察训练曲线如果想实时观察 loss 变化曲线可在训练命令中追加--use_vdltrue并通过--vdl_log_dir设置日志保存路径。VisualDL 需要 Python3.5先安装python -m pip install visualdl -i https://mirror.baidu.com/pypi/simple然后带 VisualDL 日志启动训练python -u tools/train.py -c configs/yolov3/yolov3_mobilenet_v1_roadsign.yml \ --use_vdltrue \ --vdl_log_dirvdl_dir/scalar \ --eval训练过程中或结束后通过 visualdl 命令在浏览器中实时查看曲线visualdl --logdir vdl_dir/scalar/ --host host_IP --port port_num--use_vdl与--vdl_log_dir两个参数在 tools/train.py 中均有明确定义其中--vdl_log_dir的默认值为vdl_log_dir/scalar与上面显式指定的路径一致。五、评估训练完成后使用 tools/eval.py 评估模型精度。默认加载配置中weights指向的model_final权重python tools/eval.py -c configs/yolov3/yolov3_mobilenet_v1_roadsign.yml -o use_gputrue-c参数指定配置文件-o参数覆盖配置文件中的全局变量评估目前只支持单卡。最终模型的 mAP 应在 0.85 左右。由于数据集较小每次训练结束后的精度会有一定波动这是小数据集微调的正常现象。如需更细粒度的评估信息tools/eval.py 还支持--classwise输出每个类别的 AP 并绘制 P-R 曲线、--output_eval指定评估结果输出路径等参数可用于定位具体类别的表现。六、推理对任意图像进行预测评估满意后即可用训练好的模型对任意图像执行推理python tools/infer.py -c configs/yolov3/yolov3_mobilenet_v1_roadsign.yml -o use_gputrue --infer_imgdemo/road554.png-c参数指定配置文件-o参数覆盖配置文件中的全局变量--infer_img指定预测图像路径预测结束后会在output文件夹中生成一张画有预测结果的同名图像。结果如下图所示从 tools/infer.py 源码可知推理工具还支持更多使用场景--infer_dir可对目录下所有图像批量推理--infer_img优先级更高--infer_list可配合--infer_dir指定图像列表文件--output_dir自定义输出目录--draw_threshold/--save_threshold分别控制可视化和保存结果的置信度阈值默认 0.5。这些参数使得推理阶段可以直接复用训练配置数据集、预处理、后处理保持一致无需额外编写推理脚本。七、从快速开始到实际业务本教程通过道路标志检测展示了 PaddleDetection 的完整使用闭环配置驱动、预训练迁移、三工具分工。其中几个要点在实际业务中具有普遍参考价值配置即代码模型结构、数据、优化策略全部沉淀在 YAML 配置中通过_BASE_组合复用换数据集或换模型只需更换配置无需改动代码-o覆盖机制命令行可通过-o keyvalue灵活覆盖配置字段如use_gpu、weights适合快速实验微调范式在 COCO 等大数据集预训练权重的基础上对业务小数据集微调是短时间内获得可用模型的高效路径可视化辅助VisualDL 实时监控 loss 曲线便于快速判断训练是否收敛。实际业务中建议根据具体需求在 configs 目录下选择合适的模型配置文件进行适配——PaddleDetection 提供了从轻量移动端如 PicoDet、PP-YOLOE-Tiny到高精度大模型如 RT-DETR、DINO的丰富配置覆盖检测、实例分割、多目标跟踪与关键点检测等任务。入门阶段先跑通本教程的完整流程即可在此基础上平滑迁移到更多业务场景。赞分享人工智能深度学习计算机视觉【免费下载链接】PaddleDetectionObject Detection toolkit based on PaddlePaddle. It supports object detection, instance segmentation, multiple object tracking and real-time multi-person keypoint detection.项目地址https://gitcode.com/gh_mirrors/pa/PaddleDetection点击查看免费下载相关推荐PaddleDetection 30分钟快速上手从路标检测数据集到训练、评估与部署全流程PaddleDetection 30分钟快速上手从路标检测数据集到训练、评估与部署全流程 导读 PaddleDetection 是基于 PaddlePaddl人工智能深度学习计算机视觉PaddleDetection FCOSR 旋转目标检测实战指南DOTA 数据集训练、推理与评估PaddleDetection FCOSR 旋转目标检测实战指南DOTA 数据集训练、推理与评估 本文以 PaddleDetection 仓库中 config人工智能深度学习计算机视觉PaddleDetection 人脸检测实战指南BlazeFace 与 BlazeFace-FPN-SSH 模型解析、训练评估与推理部署PaddleDetection 人脸检测实战指南BlazeFace 与 BlazeFace FPN SSH 模型解析、训练评估与推理部署 PaddleDete人工智能深度学习计算机视觉上一篇Moti动画变体Variants实战如何创建复杂的动画状态管理下一篇时间线可视化工具timevis使用教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表