ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

YOLOv9 目标检测快速上手指南:从一张图片推理到训练货架巡检模型

YOLOv9 目标检测快速上手指南:从一张图片推理到训练货架巡检模型 YOLOv9 目标检测快速上手指南从一张图片推理到训练货架巡检模型【免费下载链接】yolov9Implementation of paper - YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information项目地址: https://gitcode.com/GitHub_Trending/yo/yolov9YOLOv9 是 YOLOv9 实时目标检测算法的官方实现代码它用可编程梯度信息Programmable Gradient Information一种改善深层网络训练质量的技巧来提升收敛与精度。仓库里同时提供了检测、实例分割、全景分割的训练入口和模型导出脚本模型结构、数据集、超参数配置全都现成一条命令就能从跑通示例走到训练自己的专属模型。本文以超市货架商品巡检识别哪些商品缺货、哪些摆错位置为场景把整条动线走一遍。 先跑起来5 分钟出第一张检测结果环境只需 Python PyTorch。克隆仓库后安装依赖即可核心包是 PyTorch、OpenCV、NumPy完整清单见 requirements.txtREADME 推荐直接用官方 Docker 容器保证环境一致。git clone https://gitcode.com/GitHub_Trending/yo/yolov9 cd yolov9 pip install -r requirements.txt从 README 的 Evaluation 一节找到官方权重如 yolov9-c-converted.pt下载后对仓库自带的示例图跑推理python detect.py --weights yolov9-c-converted.pt --source data/images/horses.jpg --img 640 --device 0运行结束后detect.py 会把画好框、带类别和置信度的结果图存到 runs/detect/ 下。--source这个参数很灵活图片、图片目录、视频文件、摄像头填 0、RTSP 地址、甚至screen截屏都可以从单张图切到视频流不用改模型只换输入。 项目能做什么四个任务、两条训练路线这个仓库不只是检测按任务分了三组入口目标检测train.py / train_dual.py模型结构见 models/detect/实例分割画出每个目标的轮廓而非方框segment/train.py models/segment/全景分割把背景如墙面、货架面也一起分割panoptic/train.py models/panoptic/两条训练路线值得留意train_dual.py对应论文中的双分支结构训练时走两个分支、互相补充梯度训完做重参数化re-parameterization把等效的多个分支合并成一个标准网络后推理结构不变、部署方式不变说明笔记在 tools/reparameterization.ipynbtrain.py则用于 GELAN 这类单分支结构。新手用train.py起步完全够用。MS COCO 基准性能README 公布的 MS COCO 评测数据640 输入测试精度 AP 越高越好模型AP参数量FLOPsYOLOv9-T38.3%2.0M7.7GYOLOv9-S46.8%7.1M26.4GYOLOv9-C53.0%25.3M102.1GYOLOv9-E55.6%57.3M189.0G选型的思路很直接边缘设备树莓派、店里的工控盒用 T/S 档服务器或工作站用 C/E 档换更高精度。 准备自己的数据集标注格式与配置文件货架巡检模型需要一个自己的数据集。标注用任意支持 YOLO 格式的工具README 的 Useful Links 里列了 AnyLabeling 等每张图配一个同名.txt每行写一个目标类别号 归一化的中心点坐标和宽高如果后面要做分割就改成多边形点序列。数据集配置参考 data/coco.yaml 自己写一份比如data/shelf.yaml要点只有三个path数据集根目录train/val训练、验证图片列表比例自己定常见 7:2:1 或 8:2names类别列表例如0: cola、1: juice、2: water类别不需要很多货架场景通常十几类就能覆盖主要 SKU。⚙️ 最小训练配置一条命令训出巡检模型数据就位后训练就是改参数的一条命令python train.py --workers 8 --device 0 --batch 16 --data data/shelf.yaml --img 640 \ --cfg models/detect/yolov9-s.yaml --weights --name shelf-inspect \ --hyp data/hyps/hyp.scratch-high.yaml --epochs 300 --close-mosaic 15几个关键参数的作用--cfg选模型骨架yaml 里的depth_multiple/width_multiple可调深浅换成 models/detect/yolov9-t.yaml 就是更轻的档位--weights 表示从头训练填入已下载的预训练权重就变成迁移学习数据少时通常更稳--close-mosaic 15表示最后 15 轮关掉 mosaic 增强把四张图随机拼成一张来训练的技巧让模型在收尾阶段学真实画面--hyp指向超参数文件控制学习率、数据增强等data/hyps/hyp.scratch-high.yaml 是适合从零训练的高精度配方产物在runs/train/shelf-inspect/weights/下的best.pt用 val.py 配同一份 yaml 跑验证即可拿到 AP。多卡训练在 README 的 Training 一节有现成命令torch.distributed.launch--sync-bn训练日志默认接 TensorBoardutils/loggers/ 里还内置了 Comet、WandB 等上报通道。 从权重文件到边缘设备导出与部署训好的best.pt想搬到没有 Python 环境的设备如店里的 ARM 盒子用 export.py 加--include onnx --simplify导出 ONNX 格式一种跨平台模型文件simplify 会顺手做一层图简化。推理端不用另写代码detect.py的加载器本身就是多后端DetectMultiBackendONNX 权重可以直接喂给它--dnn走 OpenCV DNN、--half开半精度推理。README 的 Useful Links 一节还整理了 TensorRT、OpenVINO、TFLite 等部署路线的社区实践可以按硬件对号入座。落到货架巡检场景你可以这样搭配巡检机或店内摄像头出 RTSP 流detect.py用--source接上--save-txt输出 YOLO 格式结果再由自己的业务逻辑统计某个货架位连续 N 帧没检出对应 SKU作为缺货信号——模型只负责识别报警规则留给你自己的代码。 进阶玩法从检测框到分割轮廓检测框回答哪里有分割回答边界在哪。同一份货架数据多边形标注换入口就能升级任务实例分割segment/train.py models/segment/yolov9-c-seg.yaml输出每个商品的精确轮廓适合做单件商品的计量或破损区域观察全景分割panoptic/train.py models/panoptic/gelan-c-pan.yaml把货架面、空隙这类背景也作为分割目标可以统计货架空置面积上图来自仓库 Teaser 部分它同时发布了 YOLOR 多任务学习的代码一个网络可以同时输出检测、实例分割、语义分割、全景分割甚至图像描述各任务入口和评测脚本都已放在仓库里需要时直接挑任务用。YOLOv9 这套仓库的价值在于动线完整一条命令出推理结果、一条命令训出自己的模型、一条命令导出可部署的 ONNX每个环节都是现成脚本加可改的参数而不是要你自己搭框架。完整参数列表、权重下载与多任务示例详见 README.md。【免费下载链接】yolov9Implementation of paper - YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information项目地址: https://gitcode.com/GitHub_Trending/yo/yolov9创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进