Files
HSAP/README.md
Chengfang Lu 483e027482 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>
2026-06-16 17:06:31 +08:00

7.9 KiB
Raw Blame History

HSAP — Huaxu Sentinel Active Safety Platform

华胥 Sentinel 主动安全算法迭代平台HSAP卡车主动安全DMS / Lane / ADAS算法迭代平台Web UI + API + 审核 + Job 队列 + CVAT 标注 + 算法适配器 + 车队地图

克隆本仓库即可运行;算法源码与数据集脚手架已内嵌。大文件(图像、训练权重)通过外部 workspace送标数据湖 挂载,不进入 Git。

新机器部署请直接看 → docs/DEPLOY.md


仓库结构

HSAP/
├── as.py / workflow.registry.yaml
├── platform/
│   ├── as_platform/           # FastAPI 后端
│   │   └── labeling/          # CVAT 客户端、格式转换、任务分配
│   └── web/                   # React (Vite) 前端 → build 到 ui-hsap/dist
├── algorithms/
│   ├── dms_yolo/code/         # DMS YOLO
│   └── lane_ufld/code/        # Lane UFLD
├── datasets/
│   ├── dms/                   # DMS 配置/脚本
│   ├── lane/
│   ├── adas -> ../../data/送标/adas   # ADAS 送标数据湖符号链接clone 后可手动创建)
│   └── labeling.registry.yaml
├── lake/lake_example/         # 数据湖 inbox 目录示例与 manifest
├── vendor/cvat/patches/       # CVAT no_auth + iframe 补丁
├── scripts/                   # dev_up、build_web、init_after_clone 等
├── docs/DEPLOY.md             # 新机器部署(推荐阅读)
├── docs/HANDOVER.md           # 详细交接文档
├── docker-compose.yml         # 平台 + CVAT单文件已合并
└── manifests/
    ├── feishu.env.example
    └── feishu.env             # 本地生成,不入 Git
内容 是否在 Git 中 说明
平台 + 前端源码 + 适配器 直接提交
CVAT 补丁 / compose vendor/cvat/patches/
前端构建产物 ui-hsap/dist bash scripts/build_web.sh 生成
算法 Python 源码 scripts/vendor_workspace.sh 可同步
送标图像 / 标定 / 标注 数据湖挂载
图像 / 视频 / 权重 .gitignore

快速开始Docker推荐

依赖: Docker 20+、Docker Compose v2、Node 18+(仅构建前端)

git clone https://git.sanyele.com/ChengFang.LU/HSAP.git
cd HSAP

bash scripts/init_after_clone.sh   # 生成 .env / feishu.env构建前端
# 编辑 .envAS_WORKSPACE_ROOT、AS_DATA_LAKE_HOST、AS_FRONTEND_URL
bash scripts/dev_up.sh             # 或: make up

make up / dev_up.sh 一次启动 HSAP 平台 + 内置 CVAT(无需单独部署 CVAT无需 CVAT 账号登录)。

服务 地址 说明
HSAP 平台 UI + API http://127.0.0.1:8787 登录、送标、标注、审核、车队地图
CVAT 标注画布 http://127.0.0.1:8080 HSAP iframe 嵌入;内部 no_auth
PostgreSQL localhost:5433 .env AS_DB_PORT
Redis localhost:6380 Job 队列
make logs      # platform / worker / cvat 日志
make down      # 停止全部服务
make health    # API 健康检查

开发登录: manifests/feishu.envAS_DEV_AUTH=true 时无需飞书即可登录。

改前端后:bash scripts/build_web.shdocker compose restart platform

部署到他人电脑 / 局域网: 修改 .envAS_FRONTEND_URLCVAT_PUBLIC_URLFEISHU_REDIRECT_URI 为实际访问地址,详见 docs/DEPLOY.md


标注与送标

HSAP 统一使用 CVAT 作为标注画布;账号、任务分配、权限在 HSAP 管理CVAT 仅作内部引擎。

流程概览

数据湖登记批次 → 协调员「开标」→ CVAT 自动建 Task / 上传图片
    → 协调员分配任务(飞书通讯录 + 可选 DM
    → 标注员「我的标注」→ CVAT 画框 / Cuboid → 保存 → 同步回数据湖
    → 协调员提交批次 → 质检 → 导出入库

角色与页面

角色 典型页面
协调员 (engineer) 送标工作台、标注进度、任务分配
标注员 (labeler) 我的标注、标注页
审核员 (reviewer) 审核队列

支持的标注类型

Profile 范围 CVAT 工具
ddaw / addw DMS 2D 检测 Rectangle
lane__lane_v1 车道线 Polyline
det_7cls ADAS 2D 七类检测 Rectangle
cuboid_7cls ADAS 单目 3D Cuboid Cuboid

ADAS 7 类:car, pedestrian, truck, bus, motorcycle, tricycle, traffic cone

送标数据湖路径

宿主机(默认 AS_DATA_LAKE_HOST = 仓库上级 ../data

类型 inbox 路径 project task
ADAS 2D 送标/adas/inbox/det_7cls/<batch>/ adas det_7cls
ADAS 3D 送标/adas/inbox/cuboid_7cls/<batch>/ adas cuboid_7cls
DMS 送标/dms/inbox/<profile>/<batch>/ dms 见 profile

批次目录示例见 lake/lake_example/。登记:批次台账 → 扫描数据湖 → 登记

清空送标/标注 DB保留账号bash scripts/reset_labeling.sh


环境变量(.env

变量 默认 说明
AS_PLATFORM_PORT 8787 HSAP 端口
CVAT_PORT 8080 CVAT Traefik 端口
AS_DB_PORT 5433 PostgreSQL 宿主机端口
AS_REDIS_PORT 6380 Redis 宿主机端口
AS_WORKSPACE_ROOT 占位目录 DMS/Lane 大文件
AS_DATA_LAKE_HOST ../data 送标数据湖根
AS_FRONTEND_URL http://127.0.0.1:8787 浏览器访问 HSAP
CVAT_PUBLIC_URL http://127.0.0.1:8080 浏览器访问 CVAT

完整列表见 .env.example


数据挂载

# .env
AS_WORKSPACE_ROOT=/path/to/DATA/workspace
AS_DATA_LAKE_HOST=/path/to/DATA/data

bash scripts/setup_links.sh   # 可选:切换为 workspace 软链模式
docker compose up -d --build

确保 datasets/adas 指向数据湖(若缺失):

ln -sfn ../../data/送标/adas datasets/adas

本机直跑(不用 Docker 跑 Platform

pip install -r requirements.txt
bash scripts/init_after_clone.sh
bash scripts/run_local.sh
  • Job 默认 AS_JOB_EXECUTOR=thread
  • 无 PostgreSQL 时回退 SQLite
  • 标注需 CVAT 可达

仅基础设施用 Dockerdocker compose up -d postgres redis cvat_traefik cvat_server ...


认证(飞书 + PostgreSQL

cp manifests/feishu.env.example manifests/feishu.env
角色 权限
admin 全部 + 用户管理
reviewer 审核
engineer 送标开标、任务分配、build/train
labeler 我的标注、CVAT 保存
viewer 只读

CLI 示例

python as.py pending
python as.py add dms dam --src /path/to/batch ...
python as.py train dms dam --track local

维护者

从 workspace 刷新内嵌代码

bash scripts/vendor_workspace.sh
git add algorithms/ datasets/ manifests/repo_layout.json
git commit -m "chore: refresh vendored algorithm scaffolds"

同步到训练服务器

bash scripts/sync_to_server.sh user@host:/opt/HSAP

推送到 Git 远端

git status   # 确认无 .env、feishu.env、*.pt、送标图像
git push origin main

远端:https://git.sanyele.com/ChengFang.LU/HSAP.git


更多文档

文档 说明
docs/DEPLOY.md 新机器部署
docs/HANDOVER.md 架构、API、运维、排障
docs/DEVELOPMENT_GUIDE.md 开发指南
lake/lake_example/README.md 数据湖 inbox 示例

Job 执行模式

AS_JOB_EXECUTOR 行为
worker Docker 默认Redis 队列 + worker
thread 本机调试API 进程内线程