Files
HSAP/datasets/dms/docs/TODO_gyp_to_yolo26.md
Chengfang Lu 7c43b44c57 feat: initial HSAP platform
Huaxu Sentinel Active Safety Platform with embedded algorithm code,
Docker Compose setup, and vendored dataset scaffolds for clone-and-run.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-25 16:59:59 +08:00

6.7 KiB
Raw Blame History

GYP 数据整理 → YOLO26 RKNN 迁移 Todo

数据根目录:/home/chengfanglu/DATA/DMS/DATASET/gyp(约 45G,已自 gyp_org / BK2/archive/gyp 迁入)
配置:/home/chengfanglu/DATA/DMS/DATASET/configs/
目标工程:/home/chengfanglu/DATA/DMS/Code/yolo26_rknn_ultralytics-main


阶段 0环境与目录先做

  • 0.1 确认 condaclrnet_export / 新建 yolo26 环境,能跑 yolo train / yolo export format=rknn
  • 0.2 RKNN 量化环境单独建 venv与 ultralytics 依赖隔离,见 README-EN
  • 0.3 确定目标芯片平台(如 rk3588)写入后续 convert 命令
  • 0.4 统一数据根目录 DMS/DATASET/dms_yolo/(使用 scripts/refresh_yaml.py
    dms_yolo/
    ├── yaml/          # 各任务 yamlpath 为相对路径
    ├── ddaw/ -> ../gyp/ddaw_1124
    ├── addw/, addw_face/, isa/, dam/, dam_0417/, isa_class/
    ├── manifests/
    └── README.md
    
    迁移服务器: scripts/pack_dms_yolo.shrsync --copy-links

阶段 1盘点源数据BK2/archive/gyp

业务 源路径 格式 体量 类别数
DDAW DATASET/gyp/ddaw_1124 YOLO images/labels ~646M 9
ADDW DATASET/gyp/addw_0523 YOLO ~553M 4
ADDW 人脸 DATASET/gyp/yoloface-0726 YOLO pose ~1.6G face + 37 kpts
ISA DATASET/gyp/isa_detect YOLO ~40G 4
ISA 分类 DATASET/gyp/isa_class_0116 文件夹分类 ~448M 多类
DAM DATASET/gyp/dam_src_0417 / dam_0516 jpg+xml / YOLO ~540M + ~930M 待确认
DOWN down/yolov5-6.2 代码+runs数据在 yaml 指向服务器路径 待查本地 data
  • 1.1 对每个子项目跑一遍统计train/val 图片数、标签数、空标签、坏图
  • 1.2 唯一数据根:DMS/DATASET/gyp/(已从 archive 补齐 isa / yoloface / isa_class
  • 1.3 已删除 gyp_orgBK2/archive/gyp 中重复数据目录(约释放 40G+

阶段 2转换为 Ultralytics/YOLO26 标准结构

划分原则(必守)

不要按总量随机划分 train/val,必须 按类别分层,使各类在 train/val 中的比例接近(默认 val≈10%)。

  • YOLO 检测scripts/stratified_split.py yolo
    合并现有 train+val 为池子后,按「图像所含最稀有类」优先依次划分,避免稀有类全进 train。
  • 文件夹分类scripts/stratified_split.py classify
    每个类别目录内独立划分(与 isa_preprocess.py 思路一致),禁止全库 random.sample
  • 划分前用 --dry-run 查看各类 val 占比;满意后再去掉 --dry-run 执行。
cd DMS/DATASET/scripts
python stratified_split.py yolo --root ../gyp/ddaw_1124 --val-ratio 0.1 --dry-run
python stratified_split.py yolo --root ../gyp/ddaw_1124 --val-ratio 0.1 --seed 42
python stratified_split.py classify --root ../gyp/isa_class_0116 --src-split train --val-ratio 0.1 --dry-run

每个检测任务目标结构:

dms_yolo/<task>/
  images/train/
  images/val/
  labels/train/    # 与 images 同名 .txt
  labels/val/
  <task>.yaml
  • 2.1 DDAW(优先,与 DMS 疲劳最相关)

    • 源:ddaw_1124(已是 YOLO 布局)
    • 复制或软链到 dms_yolo/ddaw/
    • 编写 ddaw.yamlpathnc: 9names(与 gyp_org/configs/ddaw.yaml 一致)
    • 校验 train/val 一一配对
  • 2.2 ADDW 检测

    • 源:addw_0523
    • 同上,生成 addw.yaml4 类)
  • 2.3 ISA 检测(体量大,可放后)

    • 源:isa/jiancexunlian/isa_detect(约 5 万 train 图)
    • 生成 isa.yaml4 类indicative / prohibitory / warning / vehicle
    • 必须stratified_split.py yolo 按类重划分(约 6 万图,先 --dry-run
  • 2.4 DAM

    • 源:dam/src_data_0417_pickjpg + xml
    • 编写 xml → YOLO txt 转换脚本(可参考原 yolov5 dam-0516 流程)
    • 划分 train/val 后写入 dms_yolo/dam/
  • 2.5 ADDW 人脸 Pose(若上 RKNN

    • 源:yoloface-0726
    • 确认 yolo26 是否支持 format=rknn + pose若不支持单独保留 ultralytics820 链路
    • 生成 yoloface.yamlkpt_shape: [37,3]
  • 2.6 DOWN / 其他

    • 清点 down/ 下是否有本地 images/labels;若仅 yaml 指远程路径,从 archive 或备份补数据

阶段 3清单与量化校准集RKNN 必需)

rknn_export/convert.py 需要 图片路径列表 txt(默认 coco_subset_20.txt)。

  • 3.1 每个任务生成 manifests/<task>_calib_20.txt2050 张代表性图,覆盖场景)
  • 3.2 每个任务生成 manifests/<task>_train.txt / val.txt(可选,用于训练记录)
  • 3.3 图片尺寸统一策略:
    • 检测默认 640×640(与 yolo export format=rknn 一致)
    • 记录原图分辨率,训练 yaml 里可设 imgsz

阶段 4迁入 yolo26 工程并训练

路径:DMS/Code/yolo26_rknn_ultralytics-main

  • 4.1 在工程下建 data/ 或软链:data/dms_yolo -> ../../DATASET/dms_yolo
  • 4.2 冒烟训练(每个任务先 1 epoch / 小 subset
    yolo detect train data=../../DATASET/dms_yolo/ddaw/ddaw.yaml model=yolo26n.pt epochs=1 imgsz=640
    
  • 4.3 正式训练记录:runs/、best.pt、指标
  • 4.4 导出 RKNN 用 ONNX
    yolo export model=runs/detect/train/weights/best.pt format=rknn imgsz=640
    

阶段 5ONNX → RKNN

  • 5.1 使用任务专属校准列表:
    python rknn_export/convert.py \
      --model-path <best.onnx> \
      --platform rk3588 \
      --data-path ../../DATASET/dms_yolo/manifests/ddaw_calib_20.txt
    
  • 5.2 板端验证:原始输出 6 tensor + CPU 后处理decode/NMS见 README-EN
  • 5.3 与旧 yolov5/yolov8 模型对比精度与延迟

阶段 6清理与文档

  • 6.1 确认 BK2/archive/gyp 无再用压缩包(已完成删 16 个,约释 43G
  • 6.2 更新 gyp_org/README.md:指向 dms_yolo 新路径
  • 6.3DMS/Code/yolo26_rknn_ultralytics-main 增加 docs/DMS_DATASETS.md(类名、路径、训练命令)

建议优先级

  1. DDAW → 冒烟训练 → RKNN 导出(验证整条链路)
  2. ADDW 检测 → 同上
  3. DAM(需 xml 转换)
  4. ISA40G训练成本高按需
  5. 人脸 Pose(依赖 RKNN 对 pose 的支持情况)

当前磁盘参考

路径 大小(删包后)
BK2/archive/gyp ~51G
DMS/DATASET/gyp_org ~48G若与 archive 重复,合并后可再省)
系统盘可用 ~137G

生成日期2026-05-20