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>
This commit is contained in:
2026-05-25 16:59:59 +08:00
commit 7c43b44c57
1619 changed files with 373355 additions and 0 deletions

View File

@@ -0,0 +1,207 @@
======================================================================
【ddaw_1124】YOLO 检测 path: /home/chengfanglu/DATA/DMS/DATASET/gyp/ddaw_1124
======================================================================
当前划分: train=3824 val=424 test=0 合计=4248
类别数(nc): 9 类别ID: [0, 1, 2, 3, 4, 5, 6, 7, 8]
--- 当前:含该类别的图片数(按 split---
cls train val val% test 合计
0 3072 348 10.2% 0 3420
1 686 65 8.7% 0 751
2 1827 210 10.3% 0 2037
3 619 71 10.3% 0 690
4 279 29 9.4% 0 308
5 881 99 10.1% 0 980
6 2415 273 10.2% 0 2688
7 659 64 8.9% 0 723
8 138 15 9.8% 0 153
当前 val 占比: min=8.7% max=10.3% 极差=1.7% (目标≈10%)
✓ 当前各类 val 比例已较均衡
--- 分层重分后(模拟, val_ratio=0.1, seed=42) ---
train=3823 val=425
cls train val val%
0 3074 346 10.1%
1 674 77 10.3%
2 1834 203 10.0%
3 620 70 10.1%
4 277 31 10.1%
5 882 98 10.0%
6 2423 265 9.9%
7 651 72 10.0%
8 138 15 9.8%
重分后 val 占比: min=9.8% max=10.3% 极差=0.4%
✓ 分层后各类 val 比例均衡极差≤2%
======================================================================
【addw_0523】YOLO 检测 path: /home/chengfanglu/DATA/DMS/DATASET/gyp/addw_0523
======================================================================
当前划分: train=2375 val=594 test=0 合计=2969
类别数(nc): 4 类别ID: [0, 1, 2, 3]
--- 当前:含该类别的图片数(按 split---
cls train val val% test 合计
0 1367 370 21.3% 0 1737
1 415 120 22.4% 0 535
2 1018 229 18.4% 0 1247
3 1812 445 19.7% 0 2257
当前 val 占比: min=18.4% max=22.4% 极差=4.1% (目标≈10%)
⚠ 当前各类 val 比例不均衡
--- 分层重分后(模拟, val_ratio=0.1, seed=42) ---
train=2671 val=298
cls train val val%
0 1565 172 9.9%
1 481 54 10.1%
2 1121 126 10.1%
3 2029 228 10.1%
重分后 val 占比: min=9.9% max=10.1% 极差=0.2%
✓ 分层后各类 val 比例均衡极差≤2%
======================================================================
【isa_detect】YOLO 检测 path: /home/chengfanglu/DATA/DMS/DATASET/gyp/isa_detect
======================================================================
当前划分: train=50480 val=9584 test=0 合计=60064
类别数(nc): 4 类别ID: [0, 1, 2, 3]
--- 当前:含该类别的图片数(按 split---
cls train val val% test 合计
0 15871 2971 15.8% 0 18842
1 33355 7060 17.5% 0 40415
2 7348 1204 14.1% 0 8552
3 14715 2429 14.2% 0 17144
当前 val 占比: min=14.1% max=17.5% 极差=3.4% (目标≈10%)
⚠ 当前各类 val 比例不均衡
--- 分层重分后(模拟, val_ratio=0.1, seed=42) ---
train=54066 val=5940
cls train val val%
0 16883 1902 10.1%
1 36344 4013 9.9%
2 7693 855 10.0%
3 15435 1707 10.0%
重分后 val 占比: min=9.9% max=10.1% 极差=0.2%
✓ 分层后各类 val 比例均衡极差≤2%
======================================================================
【dam_0516】YOLO 检测 path: /home/chengfanglu/DATA/DMS/DATASET/gyp/dam_0516
======================================================================
当前划分: train=3780 val=1890 test=0 合计=5670
类别数(nc): 15 类别ID: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
--- 当前:含该类别的图片数(按 split---
cls train val val% test 合计
0 2582 1337 34.1% 0 3919
1 726 373 33.9% 0 1099
2 1670 829 33.2% 0 2499
3 784 395 33.5% 0 1179
4 266 136 33.8% 0 402
5 1141 542 32.2% 0 1683
6 2066 1050 33.7% 0 3116
7 670 324 32.6% 0 994
8 445 217 32.8% 0 662
9 1088 528 32.7% 0 1616
10 306 164 34.9% 0 470
11 838 464 35.6% 0 1302
12 883 489 35.6% 0 1372
13 3700 1843 33.2% 0 5543
14 360 151 29.5% 0 511
当前 val 占比: min=29.5% max=35.6% 极差=6.1% (目标≈10%)
⚠ 当前各类 val 比例不均衡
--- 分层重分后(模拟, val_ratio=0.1, seed=42) ---
train=5104 val=566
cls train val val%
0 3525 394 10.1%
1 986 113 10.3%
2 2240 259 10.4%
3 1074 105 8.9%
4 362 40 10.0%
5 1497 186 11.1%
6 2826 290 9.3%
7 896 98 9.9%
8 595 67 10.1%
9 1473 143 8.8%
10 423 47 10.0%
11 1180 122 9.4%
12 1241 131 9.5%
13 4988 555 10.0%
14 459 52 10.2%
重分后 val 占比: min=8.8% max=11.1% 极差=2.2%
~ 分层后明显改善,少数类因样本极少会有小幅偏差
======================================================================
【yoloface-0726】YOLO 检测 path: /home/chengfanglu/DATA/DMS/DATASET/gyp/yoloface-0726
======================================================================
当前划分: train=4145 val=1464 test=0 合计=5609
类别数(nc): 1 类别ID: [0]
--- 当前:含该类别的图片数(按 split---
cls train val val% test 合计
0 4137 1462 26.1% 0 5599
当前 val 占比: min=26.1% max=26.1% 极差=0.0% (目标≈10%)
✓ 当前各类 val 比例已较均衡
--- 分层重分后(模拟, val_ratio=0.1, seed=42) ---
train=4970 val=551
cls train val val%
0 4960 551 10.0%
重分后 val 占比: min=10.0% max=10.0% 极差=0.0%
✓ 分层后各类 val 比例均衡极差≤2%
======================================================================
【isa_class_0116】分类(文件夹) path: /home/chengfanglu/DATA/DMS/DATASET/gyp/isa_class_0116
======================================================================
split: ['test', 'train'] 类别数: 92 总图片: 61747
--- 每类图片数前20类 + 汇总)---
class test train
005 43 393
010 55 501
015 47 424
020 67 604
030 214 1933
040 152 1369
050 279 2513
060 224 2024
070 179 1614
080 285 2572
090 116 1045
100 207 1866
110 88 794
120 156 1407
130 47 429
arrow_right 126 1138
arrow_up 38 350
bycycle 40 368
dis_005 30 279
dis_010 23 213
(仅列前20类共92类)
当前为 train/test 结构(无 val若需 val 请用 stratified_split.py classify --src-split train
若从 train 按类划 10% val: val% min=8.3% max=11.8% 极差=3.4%
test: 92类 min=1 max=310 avg=67 合计=6133
train: 92类 min=17 max=2792 avg=604 合计=55614
======================================================================
【dam_src_0417】原始 jpg+xml path: /home/chengfanglu/DATA/DMS/DATASET/gyp/dam_src_0417
======================================================================
src_data_0417_pick: jpg=2455 xml=2455 (无 YOLO 标签,待转换后按类划分)

View File

@@ -0,0 +1,62 @@
【ddaw_1124】 train=3823 val=425 各类val%: min=9.8% max=10.3% 极差=0.4%
cls0: train=3074 val=346 val%=10.1%
cls1: train=674 val=77 val%=10.3%
cls2: train=1834 val=203 val%=10.0%
cls3: train=620 val=70 val%=10.1%
cls4: train=277 val=31 val%=10.1%
cls5: train=882 val=98 val%=10.0%
cls6: train=2423 val=265 val%=9.9%
cls7: train=651 val=72 val%=10.0%
cls8: train=138 val=15 val%=9.8%
【addw_0523】 train=2671 val=298 各类val%: min=9.9% max=10.1% 极差=0.2%
cls0: train=1565 val=172 val%=9.9%
cls1: train=481 val=54 val%=10.1%
cls2: train=1121 val=126 val%=10.1%
cls3: train=2029 val=228 val%=10.1%
【dam_0516】 train=5104 val=566 各类val%: min=8.8% max=11.1% 极差=2.2%
cls0: train=3525 val=394 val%=10.1%
cls1: train=986 val=113 val%=10.3%
cls2: train=2240 val=259 val%=10.4%
cls3: train=1074 val=105 val%=8.9%
cls4: train=362 val=40 val%=10.0%
cls5: train=1497 val=186 val%=11.1%
cls6: train=2826 val=290 val%=9.3%
cls7: train=896 val=98 val%=9.9%
cls8: train=595 val=67 val%=10.1%
cls9: train=1473 val=143 val%=8.8%
cls10: train=423 val=47 val%=10.0%
cls11: train=1180 val=122 val%=9.4%
cls12: train=1241 val=131 val%=9.5%
cls13: train=4988 val=555 val%=10.0%
cls14: train=459 val=52 val%=10.2%
【dam_0417】 train=2210 val=245 各类val%: min=8.6% max=10.7% 极差=2.1%
cls0: train=1302 val=137 val%=9.5%
cls1: train=237 val=26 val%=9.9%
cls2: train=1117 val=125 val%=10.1%
cls3: train=607 val=68 val%=10.1%
cls4: train=220 val=24 val%=9.8%
cls5: train=749 val=77 val%=9.3%
cls6: train=1093 val=128 val%=10.5%
cls7: train=585 val=64 val%=9.9%
cls8: train=291 val=33 val%=10.2%
cls9: train=902 val=97 val%=9.7%
cls10: train=29 val=3 val%=9.4%
cls11: train=451 val=54 val%=10.7%
cls12: train=545 val=61 val%=10.1%
cls13: train=2172 val=243 val%=10.1%
cls14: train=297 val=28 val%=8.6%
【yoloface-0726】 train=4970 val=627 各类val%: min=11.2% max=11.2% 极差=0.0%
cls0: train=4960 val=627 val%=11.2%
【isa_detect】 train=54066 val=5990 各类val%: min=10.0% max=10.4% 极差=0.4%
cls0: train=16883 val=1951 val%=10.4%
cls1: train=36344 val=4063 val%=10.1%
cls2: train=7693 val=859 val%=10.0%
cls3: train=15435 val=1708 val%=10.0%
【isa_class_0116】 classify 各类val%: min=8.3% max=11.8% 极差=3.4%

View File

@@ -0,0 +1,53 @@
# 模型版本current=线上/基线candidate=待晋级train → eval → promote
# data_yaml 由 active_packs 生成,路径固定为 manifests/yaml_active/
schema: model-versions-v2
ddaw:
type: detect
data_yaml: manifests/yaml_active/ddaw.yaml
current: null
candidate: null
last_eval: null
addw:
type: detect
data_yaml: manifests/yaml_active/addw.yaml
current: null
candidate: null
last_eval: null
addw_face:
type: pose
data_yaml: manifests/yaml_active/addw_face.yaml
current: null
candidate: null
last_eval: null
isa:
type: detect
data_yaml: manifests/yaml_active/isa.yaml
current: null
candidate: null
last_eval: null
dam:
type: detect
data_yaml: manifests/yaml_active/dam.yaml
current: null
candidate: null
last_eval: null
dam_0417:
type: detect
data_yaml: manifests/yaml_active/dam_0417.yaml
current: null
candidate: null
last_eval: null
isa_class:
type: classify
data_yaml: manifests/yaml_active/isa_class.yaml
current: null
candidate: null
last_eval: null

View File

@@ -0,0 +1,7 @@
# addw — packs: dms_v1
path: /home/chengfanglu/DATA/workspace/DMS/DATASET/packs/dms_v1/addw
train: /home/chengfanglu/DATA/workspace/DMS/DATASET/packs/dms_v1/addw/images/train
val: /home/chengfanglu/DATA/workspace/DMS/DATASET/packs/dms_v1/addw/images/val
nc: 4
names: ["face", "eye_open", "nod_face", "nod_eye"]

View File

@@ -0,0 +1,5 @@
# addw_face — packs: dms_v1
path: /home/chengfanglu/DATA/workspace/DMS/DATASET/packs/dms_v1/addw_face
train: /home/chengfanglu/DATA/workspace/DMS/DATASET/packs/dms_v1/addw_face/images/train
val: /home/chengfanglu/DATA/workspace/DMS/DATASET/packs/dms_v1/addw_face/images/val
kpt_shape: [37, 3]

View File

@@ -0,0 +1,7 @@
# dam — packs: dms_v1
path: /home/chengfanglu/DATA/workspace/DMS/DATASET/packs/dms_v1/dam
train: /home/chengfanglu/DATA/workspace/DMS/DATASET/packs/dms_v1/dam/images/train
val: /home/chengfanglu/DATA/workspace/DMS/DATASET/packs/dms_v1/dam/images/val
nc: 15
names: ["face", "eye_open", "eye_partially_open", "eye_close", "mouth_open", "mouth_partially_open", "mouth_close", "side_face", "nod_face", "glasses", "sunglasses", "smoke", "phone", "driver", "rise_face"]

View File

@@ -0,0 +1,7 @@
# dam_0417 — packs: dms_v1
path: /home/chengfanglu/DATA/workspace/DMS/DATASET/packs/dms_v1/dam_0417
train: /home/chengfanglu/DATA/workspace/DMS/DATASET/packs/dms_v1/dam_0417/images/train
val: /home/chengfanglu/DATA/workspace/DMS/DATASET/packs/dms_v1/dam_0417/images/val
nc: 15
names: ["face", "eye_open", "eye_partially_open", "eye_close", "mouth_open", "mouth_partially_open", "mouth_close", "side_face", "nod_face", "glasses", "sunglasses", "smoke", "phone", "driver", "rise_face"]

View File

@@ -0,0 +1,7 @@
# ddaw — packs: dms_v1
path: /home/chengfanglu/DATA/workspace/DMS/DATASET/packs/dms_v1/ddaw
train: /home/chengfanglu/DATA/workspace/DMS/DATASET/packs/dms_v1/ddaw/images/train
val: /home/chengfanglu/DATA/workspace/DMS/DATASET/packs/dms_v1/ddaw/images/val
nc: 9
names: ["face", "eye_open", "eye_partially_open", "eye_close", "mouth_open", "mouth_partially_open", "mouth_close", "side_face", "nod_face"]

View File

@@ -0,0 +1,7 @@
# isa — packs: dms_v1
path: /home/chengfanglu/DATA/workspace/DMS/DATASET/packs/dms_v1/isa
train: /home/chengfanglu/DATA/workspace/DMS/DATASET/packs/dms_v1/isa/images/train
val: /home/chengfanglu/DATA/workspace/DMS/DATASET/packs/dms_v1/isa/images/val
nc: 4
names: ["indicative", "prohibitory", "warning", "vehicle"]

View File

@@ -0,0 +1,5 @@
# isa_class — pack: dms_v1
path: /home/chengfanglu/DATA/workspace/DMS/DATASET/packs/dms_v1/isa_class
train: train
val: val
test: test