# deep-vision **Repository Path**: aizuda/deep-vision ## Basic Information - **Project Name**: deep-vision - **Description**: 🔥🔥🔥 从数据标注、模型训练到实时推理监控的全流程AI视觉系统 - **Primary Language**: Unknown - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 9 - **Forks**: 3 - **Created**: 2025-09-12 - **Last Updated**: 2025-10-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # deep-vision [![语言](https://img.shields.io/badge/language-Python%2C%20Vue.js-blue.svg)](https://www.python.org/ "Python") [![框架](https://img.shields.io/badge/framework-FastAPI%2C%20Vue.js-green.svg)](https://fastapi.tiangolo.com/ "FastAPI") [![部署](https://img.shields.io/badge/deploy-Docker-orange.svg)](https://www.docker.com/ "Docker") 一份功能强大、开箱即用的全栈式deep-vision。它集成了现代化的Web界面与高性能的Python后端,通过Docker实现了一键部署,为您提供从数据准备、模型训练到实时推理的端到端解决方案。 ![系统截图](images/dc98187d-3197-4e19-958a-5a73dd2f4a15.png) --- ## ✨ 核心功能 - **现代化Web界面**: 基于 Vue.js 3 和 Vite 构建,提供友好的用户体验,支持数据集管理、模型训练、实时视频流监控等。 - **高性能后端API**: 基于 FastAPI 构建,提供异步、高性能的RESTful API接口,并支持WebSocket实时通信。 - **数据集管理**: 支持通过Web界面上传、管理和删除ZIP格式的数据集。 - **异步模型训练**: 训练任务在独立的后台进程中运行,不阻塞API服务,并可通过API实时获取训练状态和日志。 - **模型管理**: 自动列出并管理所有预训练模型和自定义训练的模型。 - **多种推理模式**: - **单图/批量推理**: 上传图片进行快速目标检测。 - **实时视频流推理**: 支持Webcam、RTSP、HTTP等多种视频源,通过WebSocket将结果实时推送到前端。 - **多路视频监控 (九宫格)**: 在一个视图中同时监控和分析多路视频流。 - **一键化部署**: 使用 Docker 和 Docker Compose 封装所有服务,简化了部署和环境配置的复杂性。 ## 🏗️ 系统架构 本平台采用前后端分离的架构,并通过Docker容器化进行部署。 ```text . ├── User (Browser/Client) │ └── Server (Docker Environment) │ ├── Nginx (Reverse Proxy) │ ├── Routes to -> Frontend │ └── Routes to -> Backend API │ ├── Frontend (Vue.js Container) │ └── User Interface, Real-time Views │ ├── Backend API (FastAPI Container) │ ├── Handles REST API & WebSocket │ ├── Performs Inference │ └── Manages -> Background Training Process │ ├── Background Training Process (Independent Python Process) │ └── Executes Model Training │ └── Shared Data (Docker Volume: ./data) ├── Used by Backend & Training Process ├── Contains: │ ├── datasets/ │ ├── runs/ │ └── exports/ ``` - **前端**: Vue.js 应用程序,通过 Nginx 部署在Docker容器中。 - **后端**: FastAPI 应用程序,运行在Docker容器中,负责处理业务逻辑、API请求和模型推理。 - **训练进程**: 一个独立的Python进程,由后端API启动,专门负责执行耗时的模型训练任务。 - **数据卷**: 使用Docker Volume将主机的`./data`目录映射到后端容器,用于持久化存储数据集、训练结果、导出模型等。 ## 🛠️ 技术栈 - **后端**: Python 3, FastAPI, Ultralytics YOLOv8, Uvicorn, OpenCV - **前端**: Vue.js 3, Vite, Element Plus, JavaScript/TypeScript - **部署**: Docker, Docker Compose, Nginx ## 📁 目录结构 ``` . ├── backend/ # 后端 FastAPI 服务 ├── data/ # 持久化数据目录 (由Docker Volume映射) │ ├── datasets/ # 存放数据集 │ ├── runs/ # 存放训练结果 │ └── ... ├── frontend/ # 前端 Vue.js 应用 ├── scripts/ # 辅助脚本 (如本地开发启动) ├── docker-compose.yml # Docker编排文件 └── README.md # 本说明文件 ``` ## 🚀 快速开始 (推荐) 本项目推荐使用 Docker 进行部署,可以免去繁琐的环境配置。 ### 1. 先决条件 - [Docker](https://www.docker.com/get-started) - [Docker Compose](https://docs.docker.com/compose/install/) ### 2. 启动步骤 1. **克隆项目** ```bash git clone cd yolo_detection_system ``` 2. **构建并启动服务** 使用 `docker-compose` 一键构建并启动所有服务(前端、后端)。 ```bash docker-compose up -d --build ``` `-d` 参数表示在后台运行。首次启动时,`--build` 会根据 `Dockerfile` 构建镜像,可能需要一些时间。 3. **访问系统** - **前端Web界面**: [http://localhost:3000](http://localhost:3000) - **后端API文档**: [http://localhost:8000/docs](http://localhost:8000/docs) (由FastAPI自动生成的Swagger UI) 4. **停止服务** ```bash docker-compose down ``` ## 💻 本地开发 (可选) 如果您希望在本地直接运行前后端服务进行开发,可以使用 `scripts` 目录下的脚本。 ### 1. 先决条件 - Python 3.8+ - Node.js 16+ - `pip` 和 `npm` ### 2. 启动步骤 1. **启动后端** ```bash cd backend pip install -r requirements.txt python start_api.py ``` 后端服务将在 `http://localhost:8000` 运行。 2. **启动前端** 在另一个终端中: ```bash cd frontend npm install npm run dev ``` 前端开发服务器将在 `http://localhost:3000` 运行。 或者,您也可以使用项目根目录提供的一键启动脚本: ```bash ./scripts/start_all.sh ``` ## 📖 API 端点概览 后端服务提供了丰富的API接口,以下是部分核心端点: | 方法 | 路径 | 描述 | | :----- | :----------------------------- | :--------------------------------- | | `POST` | `/upload/dataset` | 上传数据集压缩包 (ZIP) | | `GET` | `/datasets` | 获取所有数据集列表 | | `POST` | `/train` | 启动一个新的模型训练任务 | | `GET` | `/status/{task_id}` | 获取指定训练任务的状态 | | `GET` | `/logs/{task_id}` | 获取训练任务的日志 | | `GET` | `/models` | 获取所有可用模型列表 | | `POST` | `/predict` | 对单张图片进行推理 | | `POST` | `/predict/batch` | 对多张图片进行批量推理 | | `WS` | `/ws/realtime/{session_id}` | 实时视频流推理的WebSocket连接 | | `WS` | `/ws/grid/{grid_id}` | 多路视频监控的WebSocket连接 | 更详细的API说明和在线测试,请访问 [API文档 (http://localhost:8000/docs)](http://localhost:8000/docs)。 ## 📄 其他文档 - **[部署说明 (DEPLOYMENT.md)](./DEPLOYMENT.md)**: 更详细的部署选项和注意事项。 - **[Docker说明 (DOCKER.md)](./DOCKER.md)**: 关于Docker镜像和容器的详细信息。 - **[训练日志 (TRAINING_LOGS.md)](./TRAINING_LOGS.md)**: 训练相关的一些记录和说明。 ## 📝 更新日志 **v1.3.0 (2025-09-28)** - **🚀 功能: 前端体验优化** - 数据标注的类别现在会缓存在浏览器中,方便下次使用。 - 模型训练时,可以直接从已保存的标注类别中选择,无需手动输入。 - **🔧 优化: 交互优化** - 移除了部分不必要的成功提示弹窗,使得操作流程更流畅。 - **🎨 风格: 品牌更新** - 前端项目名称和Logo更新为"deep-vision",并同步更新了相关文档。 **v1.2.1 (2025-09-26)** - **🔧 优化: 详细跟踪日志** - 在后台日志中为每个被跟踪的新对象添加了详细信息,现在会输出每个对象的 `track_id` 和 `class_name`,便于调试和监控。 **v1.2.0 (2025-09-26)** - **🚀 功能: 实时视频流唯一对象计数** - 在实时视频流中增加了唯一对象计数功能,避免了对同一对象的重复计数。 - **🔧 技术实现** - 在 `yolo_trainer.py` 中添加了 `track` 方法,以支持YOLO的目标跟踪功能。 - 更新了 `yolo_api.py` 中的实时处理流程,使用 `track` 方法代替 `predict` 方法。 - 在WebSocket的输出中增加了 `unique_object_counts` 字段,用于实时展示各类物体的唯一数量。 **v1.1.0 (2025-09-26)** - **🚀 功能: 新增 YOLOv11 模型支持** - 后端: `yolo11n.pt` 模型已添加至可用的预训练模型列表。 - 前端: 所有模型选择下拉框(训练、推理、实时监控)现在都能动态展示 `YOLOv11` 及其他所有可用的后端模型。 - **🔧 优化: 动态模型加载** - 前端: 重构了模型选择功能,现在会通过API从后端动态获取模型列表,移除了硬编码。 - 这使得系统更具扩展性,未来在后端新增任何模型,都将自动出现在用户界面中,无需修改前端代码。 ## 📜 开源许可 本项目根据 [LICENSE](./LICENSE) 文件中的条款授权。