免费获取学习方案
ARTICLE DETAIL

资讯详情

深耕编程基础知识与建站技术分享的一线实战洞察。

多模态数据标注平台落地实施羽山数智方案

多模态数据标注平台落地实施羽山数智方案 Label Studio / CVAT 双引擎 · 图像/文本/音频/视频/时序全类型 · 规模不限 · 可开发落地1. 设计目标与规模弹性各模态样本量独立配置架构按亿级样本可扩展设计——存储走对象存储横向扩容算力走多 Worker/多 GPU 伸缩任务按分片并行任何量级只改资源不改进程。规模维度弹性机制存储MinIO 对象存储横向加盘/加节点视频/音频/图像分桶隔离算力GPU Worker 按队列积压自动扩缩云 GPU 按需任务按帧区间/时间窗/段落分片分片数随样本量线性增加人工标注标注员可多开引擎并发任务分片分发单点上限不设业务上限PostgreSQL 亿级行 分区表兜底2. 技术栈落地清单层选型版本参考后端框架Python 3.12 FastAPI SQLAlchemy 2 Pydantic 2FastAPI ≥0.110队列调度Celery 5 Redis 7任务分片与 Worker 伸缩元数据库PostgreSQL 16亿级行分区表对象存储MinIOS3 兼容引擎直挂标注引擎ACVAT视觉主引擎开源版 v2.x容器化标注引擎BLabel Studio全类型v1.13S3 同步视频模型Ultralytics YOLO BoxMOT(ByteTrack)YOLOv8/v11ASRfaster-whispersmall/medium/large 按需LLM 标注DeepSeek API / Ollama 本地文本 NER/分类/关系编排Docker Compose 起步 → K8s 演进Compose v23. 总体架构与代码目录五层架构接入层 → 核心服务 → 引擎层 → 自动标注管道 → 数据层。目录结构如下FastAPI 单体 多 Workerannotation-platform/├── docker-compose.yml # 平台编排(PG/MinIO/Redis/API/Workers)├── docker-compose.engines.yml # CVAT Label Studio 引擎编排├── .env.example # 全部连接参数/密钥├── backend/│ ├── app/│ │ ├── main.py # FastAPI 入口│ │ ├── config.py # pydantic-settings│ │ ├── api/ # 路由│ │ │ ├── datasets.py items.py tasks.py│ │ │ ├── annotations.py jobs.py export.py│ │ ├── models/ # SQLAlchemy 模型│ │ ├── schemas/ # Pydantic schema│ │ ├── adapters/ # 双引擎适配层(核心)│ │ │ ├── base.py uaf.py│ │ │ ├── cvat.py label_studio.py│ │ ├── services/ # 业务逻辑│ │ │ ├── import_service.py task_service.py│ │ │ └── prelabel_service.py export_service.py│ │ └── core/ # 队列/配置│ ├── workers/ # 五条模态管道(独立进程)│ │ ├── video_pipe.py image_pipe.py│ │ ├── text_pipe.py audio_pipe.py ts_pipe.py│ ├── ml/ # 推理封装│ │ ├── detector.py tracker.py asr.py llm_client.py│ └── requirements.txt├── frontend/ # 管理控制台(可复用羽山前端栈)└── deploy/ # 部署脚本/健康检查4. 数据库设计核心 DDL六张核心表dataset / data_item / annotation_task / annotation / auto_job / user。标注结果存 UAF 结构shape JSONB按模态解释。CREATE TABLE dataset (id BIGSERIAL PRIMARY KEY,name TEXT NOT NULL,type TEXT NOT NULL CHECK (type IN (image,text,audio,video,time_series)),engine TEXT NOT NULL DEFAULT label_studio CHECK (engine IN (cvat,label_studio)),label_config TEXT, -- LS 配置 / CVAT 标签定义status TEXT DEFAULT active,created_at TIMESTAMPTZ DEFAULT now());CREATE TABLE data_item (id BIGSERIAL PRIMARY KEY,dataset_id BIGINT REFERENCES dataset(id) ON DELETE CASCADE,storage_key TEXT NOT NULL, -- MinIO 对象键meta JSONB, -- duration/fps/sample_rate/width/heightstatus TEXT DEFAULT imported,created_at TIMESTAMPTZ DEFAULT now());CREATE TABLE annotation_task (id BIGSERIAL PRIMARY KEY,dataset_id BIGINT REFERENCES dataset(id),engine_type TEXT NOT NULL, -- cvat | label_studioengine_task_id TEXT, -- 引擎侧任务IDsplit JSONB, -- 帧区间/时间窗/段落范围assignee_id BIGINT,status TEXT DEFAULT pending,created_at TIMESTAMPTZ DEFAULT now());CREATE TABLE annotation (id BIGSERIAL PRIMARY KEY,item_id BIGINT REFERENCES data_item(id) ON DELETE CASCADE,label TEXT NOT NULL,shape JSONB, -- bbox/polygon/track/span/wave_rangesource TEXT DEFAULT human CHECK (source IN (auto,human)),model_version TEXT,confidence REAL,reviewed BOOLEAN DEFAULT FALSE,created_by BIGINT,created_at TIMESTAMPTZ DEFAULT now());CREATE TABLE auto_job (id BIGSERIAL PRIMARY KEY,dataset_id BIGINT REFERENCES dataset(id),pipe_type TEXT NOT NULL, -- video/image/text/audio/tsparams JSONB, -- fps/batch/模型名model_version TEXT,status TEXT DEFAULT pending,stats JSONB, -- 处理帧数/耗时/检出数created_at TIMESTAMPTZ DEFAULT now());亿级扩展data_item 与 annotation 按 dataset_id 分区PARTITION BY RANGE/HASHannotation 按 item_id 建索引 shape 走 GIN 索引支撑按标签检索。5. API 设计核心端点POST /api/datasets # 创建数据集(指定typeengine)GET /api/datasets # 数据集列表POST /api/datasets/{id}/import # 批量导入(分片/离线硬盘)GET /api/datasets/{id}/stats # 统计(样本/标注/进度)POST /api/datasets/{id}/prelabel # 触发自动标注作业POST /api/datasets/{id}/tasks # 创建人工标注任务(自动分片)GET /api/tasks/{id}/open # 302跳转引擎标注页GET /api/tasks/{id}/sync # 从引擎拉取最新标注→UAFPOST /api/annotations # 保存/更新标注(UAF)GET /api/export?fmtcoco|yolo|ls_json # 按需导出训练格式POST /api/jobs/{id}/retry # 失败作业重试GET /api/engines/status # CVAT/LS 健康检查6. 双引擎集成方案落地细节引擎数据接入预标注回填标注拉回CVATS3 云存储挂载(直连 MinIO 桶)不复制数据API 上传 shapes.xml 帧索引或用内置 auto-annotation 服务任务完成回调/轮询 → 下载标注 → 转 UAFLabel StudioLS S3 同步 任务 JSON 导入Prediction API 导入预标注(带 confidence)GET 任务标注 → 转 UAF关键实现要点① CVAT 用 Cloud Storage 特性挂 MinIO避免 3.4TB 级拷贝② LS 预标注走 predictions可区分 auto/human 且可回滚③ 平台侧定时轮询引擎任务状态 Webhook 回调增量拉取标注写入 annotation 表。7. 自动标注管道工程化模态Worker 流程模型视频FFmpeg归一化→抽帧2fps→检测→ByteTrack→传播→UAF回填YOLOv8m/v11 BoxMOT图像批量检测/分割→UAFYOLO音频切段→ASR→时间戳对齐→事件分类faster-whisper文本批量 LLM 调用(NER/分类)→置信度过滤DeepSeek API/Ollama时序滑窗模式识别/异常检测→区间标注轻量模型/规则工程要点每个管道 独立 Celery task参数化fps/模型/batch处理进度与统计写入 auto_job.stats失败自动重试 断点续跑按 data_item 幂等低置信度结果标记 review_required质检优先派发。8. 任务调度与伸缩五条模态队列隔离video/image/text/audio/tsWorker 按类型消费GPU 队列video/image/audio挂 4090 节点CPU 队列text/ts挂普通节点云 GPU 按队列积压自动扩缩文本管道可纯走 LLM API 零本地卡。人工任务分片视频按帧区间默认 60s/片、音频按时段、文本按段落、时序按时间窗。9. 部署方案# docker-compose.yml 服务清单services:postgres: image: postgres:16 # 元数据minio: image: minio/minio # 对象存储(视频/音频/图像/文本/时序桶)redis: image: redis:7 # 队列api: build: ./backend # FastAPIworker-video: build: ./backend # GPU: YOLOByteTrackworker-audio: build: ./backend # GPU: faster-whisperworker-text: build: ./backend # CPU: LLM 客户端worker-ts: build: ./backend # CPU: 时序# docker-compose.engines.yml:cvat: cvat/server cvat/worker # 视觉引擎label-studio: heartsignal/label-studio # 全类型引擎部署步骤① 起引擎编排CVAT/LS 初始化账号② 起平台编排③ 平台侧配置引擎地址/密钥.env④ 健康检查全绿后导入数据。生产建议Compose → K8sGPU 用 nodeSelector 固定MinIO 用独立盘 RAID。10. 开发里程碑8 周里程碑周期交付物M1 骨架2周Compose 起 LSCVATMinIOPGRedis数据导入图像/文本人工标注可用M2 视频管道2周抽帧YOLOByteTrack预标注回填 CVAT任务分片M3 音频文本管道2周faster-whisper ASR 管道DeepSeek 文本预标注M4 时序质检1周时序管道模态质检规则多格式导出(COCO/YOLO/LS)M5 闭环伸缩1周难例回流主动学习多 Worker/多 GPU 伸缩Webhook 同步11. 成本弹性公式存储 样本数 × 单样本大小 × 副本数 # 视频3min480p≈34MB/条视频算力 样本数 × 时长s × fps ÷ 300fps # 4090单卡音频算力 总时长h ÷ (20×并行度) # faster-whisper small文本成本 篇数 × tokens/篇 × DeepSeek单价 # 通常数元~数十元GPU按需 用多少付多少队列积压触发扩容无固定 10 万基线样本量只是公式输入架构层不设上限。羽山数智致力于成为企业数据智能的实践者。关于羽山数据面向企业数智化转型需求羽山数据通过数据产品、智能体应用、场景化 Demo、PoC 验证与 FDE 项目制交付帮助客户把数据真正转化为可分析、可执行、可审计、可落地的业务能力。在 AI 编程工具应用领域羽山强调“人机协同”的工程实践AI 负责加速可标准化部分人负责架构判断、代码审查和质量把控确保 AI 提升的是团队真实的交付能力而不只是代码提交量。● 商务合作孟经理● Emailmengfanhuiyushanshuju.com● 公司官网www.usendata.com/● 地址上海市虹口区飞虹路 118 号© 2026 羽山数据 | 转载请注明出处
返回列表