feat: 合并 Docker Compose、标注表格优化与部署文档

将 platform + CVAT 合并为单文件 docker-compose.yml,完善 .env 与 init/dev_up 脚本;
新增 docs/DEPLOY.md 与更新 README 以支持新机器部署;含数据湖示例、车队地图、
紧凑表格 UI、ADAS det_7cls 路径与批次台账等近期改动。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-16 17:06:31 +08:00
parent 0b8ade048e
commit 483e027482
117 changed files with 5933 additions and 1499 deletions

View File

@@ -1,7 +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
path: /data/hsap/datasets/dms/packs/dms_v1/addw
train: /data/hsap/datasets/dms/packs/dms_v1/addw/images/train
val: /data/hsap/datasets/dms/packs/dms_v1/addw/images/val
nc: 4
names: ["face", "eye_open", "nod_face", "nod_eye"]

View File

@@ -370,11 +370,11 @@ def append_log(root: Path, record: dict) -> None:
f.write(json.dumps(record, ensure_ascii=False) + "\n")
def run_refresh(root: Path) -> None:
subprocess.run(
[sys.executable, str(SCRIPT_DIR / "refresh_yaml.py"), "--root", str(root)],
check=True,
)
def run_refresh(root: Path, task: str | None = None) -> None:
cmd = [sys.executable, str(SCRIPT_DIR / "refresh_yaml.py"), "--root", str(root)]
if task:
cmd.extend(["--task", task])
subprocess.run(cmd, check=True)
def ingest_one(
@@ -588,7 +588,7 @@ def promote_inbox_batch(
if not dry_run:
append_log(root.resolve(), {"src": str(src), "pack": pack, **result})
if refresh:
run_refresh(root.resolve())
run_refresh(root.resolve(), task=task)
return result

View File

@@ -36,7 +36,18 @@ def resolve_pack_dir(root: Path, pack_name: str) -> Path:
name = reg.get("aliases", {}).get(pack_name, pack_name)
for item in reg.get("packs", []):
if item.get("name") == name:
return (root / item["path"]).resolve()
candidate = root / item["path"]
if candidate.is_symlink():
try:
resolved = candidate.resolve()
if resolved.is_dir():
return resolved
except OSError:
pass
if not candidate.exists():
candidate.unlink()
candidate.mkdir(parents=True, exist_ok=True)
return candidate.resolve()
candidate = root / name
if candidate.is_dir():
return candidate.resolve()

View File

@@ -0,0 +1,186 @@
{
"version_id": "v3",
"project": "dms",
"created_at": "2026-06-16T02:16:28.125198+00:00",
"description": "自动快照 · build dms/addw",
"author": "system",
"parent_version": "v2",
"summary": {
"packs_count": 3,
"total_images": 138852,
"total_labels": 2003,
"batches_count": 60
},
"packs": {
"dms_v1": {
"train_images": 8794,
"val_images": 1053,
"test_images": 2129,
"class_counts": {},
"tasks": [
"ddaw",
"addw",
"addw_face",
"adas"
]
},
"dms_v2": {
"train_images": 1,
"val_images": 0,
"test_images": 0,
"class_counts": {},
"tasks": [
"ddaw",
"addw",
"addw_face",
"adas"
]
},
"adas_v1": {
"train_images": 116103,
"val_images": 12901,
"test_images": 0,
"class_counts": {},
"tasks": [
"ddaw",
"addw",
"addw_face",
"adas"
]
}
},
"batches": [
"20260525_pilot",
"e2e_2img_20260616",
"once_test_test_cam01_000034",
"once_test_test_cam01_000077",
"once_test_test_cam01_000168",
"once_test_test_cam01_000200",
"once_test_test_cam01_000273",
"once_test_test_cam01_000275",
"once_test_test_cam01_000303",
"once_test_test_cam01_000318",
"once_test_test_cam01_000322",
"once_test_test_cam01_000334",
"once_test_test_cam09_000034",
"once_test_test_cam09_000077",
"once_test_test_cam09_000168",
"once_test_test_cam09_000200",
"once_test_test_cam09_000273",
"once_test_test_cam09_000275",
"once_test_test_cam09_000303",
"once_test_test_cam09_000318",
"once_test_test_cam09_000322",
"once_test_test_cam09_000334",
"once_train_train_cam01_000076",
"once_train_train_cam01_000080",
"once_train_train_cam01_000092",
"once_train_train_cam01_000104",
"once_train_train_cam01_000113",
"once_train_train_cam01_000121",
"once_train_train_cam03_000076",
"once_train_train_cam03_000080",
"once_train_train_cam03_000092",
"once_train_train_cam03_000104",
"once_train_train_cam03_000113",
"once_train_train_cam03_000121",
"once_train_train_cam09_000076",
"once_train_train_cam09_000080",
"once_train_train_cam09_000092",
"once_train_train_cam09_000104",
"once_train_train_cam09_000113",
"once_train_train_cam09_000121",
"once_val_val_cam01_000027",
"once_val_val_cam01_000028",
"once_val_val_cam01_000112",
"once_val_val_cam01_000201",
"once_val_val_cam03_000027",
"once_val_val_cam03_000028",
"once_val_val_cam03_000112",
"once_val_val_cam03_000201",
"wf_batch001_202511_fov100_2d_obj_det_data",
"wf_batch003_202601_0109_0113_fov75_2d_obj_det_data",
"wf_batch006_20240102_near_missing_datas",
"wf_batch007_202512_1202_1209_data_with_prelabel",
"wf_batch009_202601_0118_0120_truck425_data",
"wf_batch011_202601_0122_0124_truck425_data",
"wf_batch012_202601_0118_0121_truck_588_282_data",
"wf_batch013_202601_0121_0124_truck_588_282_data",
"wf_batch014_202601_0125_0131_data",
"wf_batch017_202509_0901_0910_data",
"wf_batch021_zhongka_bev_biaozhu_front_240710_240718",
"wf_batch025_zhongka_bev_biaozhu_front_241213_241225"
],
"diff": {
"added_packs": [
"adas_v1"
],
"removed_packs": [],
"added_batches": [
"e2e_2img_20260616",
"once_test_test_cam01_000034",
"once_test_test_cam01_000077",
"once_test_test_cam01_000168",
"once_test_test_cam01_000200",
"once_test_test_cam01_000273",
"once_test_test_cam01_000275",
"once_test_test_cam01_000303",
"once_test_test_cam01_000318",
"once_test_test_cam01_000322",
"once_test_test_cam01_000334",
"once_test_test_cam09_000034",
"once_test_test_cam09_000077",
"once_test_test_cam09_000168",
"once_test_test_cam09_000200",
"once_test_test_cam09_000273",
"once_test_test_cam09_000275",
"once_test_test_cam09_000303",
"once_test_test_cam09_000318",
"once_test_test_cam09_000322",
"once_test_test_cam09_000334",
"once_train_train_cam01_000076",
"once_train_train_cam01_000080",
"once_train_train_cam01_000092",
"once_train_train_cam01_000104",
"once_train_train_cam01_000113",
"once_train_train_cam01_000121",
"once_train_train_cam03_000076",
"once_train_train_cam03_000080",
"once_train_train_cam03_000092",
"once_train_train_cam03_000104",
"once_train_train_cam03_000113",
"once_train_train_cam03_000121",
"once_train_train_cam09_000076",
"once_train_train_cam09_000080",
"once_train_train_cam09_000092",
"once_train_train_cam09_000104",
"once_train_train_cam09_000113",
"once_train_train_cam09_000121",
"once_val_val_cam01_000027",
"once_val_val_cam01_000028",
"once_val_val_cam01_000112",
"once_val_val_cam01_000201",
"once_val_val_cam03_000027",
"once_val_val_cam03_000028",
"once_val_val_cam03_000112",
"once_val_val_cam03_000201",
"wf_batch001_202511_fov100_2d_obj_det_data",
"wf_batch003_202601_0109_0113_fov75_2d_obj_det_data",
"wf_batch006_20240102_near_missing_datas",
"wf_batch007_202512_1202_1209_data_with_prelabel",
"wf_batch009_202601_0118_0120_truck425_data",
"wf_batch011_202601_0122_0124_truck425_data",
"wf_batch012_202601_0118_0121_truck_588_282_data",
"wf_batch013_202601_0121_0124_truck_588_282_data",
"wf_batch014_202601_0125_0131_data",
"wf_batch017_202509_0901_0910_data",
"wf_batch021_zhongka_bev_biaozhu_front_240710_240718",
"wf_batch025_zhongka_bev_biaozhu_front_241213_241225"
],
"removed_batches": [
"addw_face",
"ddaw",
"labels"
]
}
}

View File

@@ -33,10 +33,11 @@ profiles:
scope_key: "lane:lane_v1"
export_default: lane_gt_txt
ml_adapter: lane_ufld
cuboid_7cls:
scope_key: "adas:cuboid_7cls"
export_default: cvat_cuboid
det_7cls:
scope_key: "adas:det_7cls"
export_default: yolo
ml_adapter: adas_yolo26
cvat_label_type: rectangle
cvat_labels:
- pedestrian
- car
@@ -45,3 +46,13 @@ profiles:
- motorcycle
- tricycle
- traffic cone
cuboid_7cls:
scope_key: "adas:cuboid_7cls"
export_default: cvat_cuboid
ml_adapter: adas_yolo26
cvat_label_type: cuboid
adas:
scope_key: "dms:adas"
export_default: yolo
ml_adapter: adas_yolo26
cvat_label_type: rectangle