Skip to content
lwxhhhPublic

About

基于 React、C++20、SQLite、RAM 与 GroundingDINO 的自动图像标注平台,支持同步/异步任务和 COCO/YOLO 导出。

Topics

Resources

Security policy

Stars

6 stars

Watchers

0 watching

Forks

Repository files navigation

AutoLabel C++

项目简介

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
Loading

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 仓库。

  1. 克隆仓库并进入目录:

    git clone https://github.com/lwxhhh/AutoLabel.git
    Set-Location AutoLabel
  2. 从上游官方来源下载权重,保持文件名不变:

  3. 在仓库外准备资源和运行目录:

    <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,因此缓存必须在启动前准备完成。模型权重和缓存不应复制到仓库。

  4. 复制环境模板,填写上述两个宿主机目录;如需首次管理员账号,也只在本地 .env 中填写:

    Copy-Item .env.example .env
  5. 构建并启动真实 RAM + GroundingDINO 链路:

    docker compose -f docker-compose.grounded.yml up --build -d
  6. 等待服务健康后打开 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。

About

基于 React、C++20、SQLite、RAM 与 GroundingDINO 的自动图像标注平台,支持同步/异步任务和 COCO/YOLO 导出。

Topics

Resources

Security policy

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages