AutoLabel C++ 是一个面向目标检测数据预标注的本地 Web 平台。用户上传单张图片或选择图片文件夹后,系统通过 RAM 生成候选语义标签,再由 GroundingDINO 输出目标框、类别和置信度;结果可在浏览器中复核,并导出为 COCO 或 YOLO 标注包。
自动标注用于降低人工初标成本,不替代人工复核。真实模型权重、测试图片、上传数据和数据库均不随仓库分发。
- 单张图片上传、格式校验、自动标注和检测框可视化;
- 文件夹批量上传、并发传输、任务排队、进度查询、取消和失败重试;
- RAM 候选标签生成、标签清洗及 GroundingDINO 开放词汇目标检测;
- C++ 线程池与有界异步任务队列,GPU 推理端保持单 worker 串行执行;
- 用户注册登录、会话管理、幂等请求和任务归属隔离;
- SQLite 持久化任务、批次、推理结果和文件生命周期状态;
- 单任务或整批结果导出为 COCO / YOLO ZIP 标注包。
flowchart TB
U[浏览器用户] --> FE[React + TypeScript 前端]
FE --> GW[C++20 HTTP 网关与固定线程池]
GW --> UP[请求校验与上传文件保存]
UP --> SYNC[同步标注路径]
UP --> QUEUE[有界异步任务队列]
QUEUE --> WORKER[单 GPU 任务 Worker]
SYNC --> INF[Python 常驻推理服务]
WORKER --> INF
GW <--> DB[(SQLite:任务、状态、结果和历史)]
DB -. 重启恢复与待处理任务派发 .-> QUEUE
UP --> FILES[(运行时上传目录)]
INF --> RAM[RAM 图像标签识别]
RAM --> CLEAN[标签清洗与检测提示词生成]
CLEAN --> DINO[GroundingDINO 目标检测]
CLEAN --> RESULT[结构化推理结果]
DINO --> RESULT
RESULT -->|JSON:标签与检测框| GW
GW --> VIEW[任务状态与标注结果展示]
GW --> EXPORT[COCO / YOLO 导出]
VIEW --> FE
EXPORT --> FE
React 前端负责上传、任务操作、结果展示和导出操作,并只访问 C++ 网关。SQLite 只负责持久化,不参与模型计算;上传图片保存在运行时目录,数据库仅记录文件元数据和相对路径。有界内存队列只调度近期异步任务,待处理任务及结果由 SQLite 保存并支持重启恢复。异步 GPU Worker 固定为单 worker,Python 服务也通过推理锁串行访问 GPU;RAM 和 GroundingDINO 由常驻服务一次加载,不会因浏览器并发上传而为每个请求创建一套模型。
真实运行效果图将在获得可公开使用的测试图片后补充。
环境要求:Git、Docker、Docker Compose、支持容器 GPU 的 NVIDIA 驱动;Windows 使用 Docker Desktop + WSL2 GPU,Linux 需要 NVIDIA Container Toolkit。首次构建还需要访问 Docker Hub、PyPI、PyTorch 及两个上游官方 GitHub 仓库。
-
克隆仓库并进入目录:
git clone https://github.com/lwxhhh/AutoLabel.git Set-Location AutoLabel
-
从上游官方来源下载权重,保持文件名不变:
-
在仓库外准备资源和运行目录:
<AUTOLABEL_ASSETS_DIR>/ ├── weights/ │ ├── ram_swin_large_14m.pth │ └── groundingdino_swint_ogc.pth └── cache/huggingface/ # bert-base-uncased 的完整离线缓存 <AUTOLABEL_DOCKER_DATA_DIR>/ └── logs/BERT 缓存对应官方模型 google-bert/bert-base-uncased。运行配置启用了
TRANSFORMERS_OFFLINE=1,因此缓存必须在启动前准备完成。模型权重和缓存不应复制到仓库。 -
复制环境模板,填写上述两个宿主机目录;如需首次管理员账号,也只在本地
.env中填写:Copy-Item .env.example .env -
构建并启动真实 RAM + GroundingDINO 链路:
docker compose -f docker-compose.grounded.yml up --build -d
-
等待服务健康后打开 http://127.0.0.1:5174。可上传单张图片,或切换到文件夹批量模式;任务完成后选择 COCO / YOLO 下载标注包。停止服务使用:
docker compose -f docker-compose.grounded.yml down
更完整的 GPU 与离线资源准备说明见 Grounded Docker 本地运行指南。
项目自有代码采用 Apache License 2.0。RAM、GroundingDINO、模型权重及其他第三方依赖不因本项目许可证而被重新授权,详情见 THIRD_PARTY_NOTICES.md。