企业级 AI 视觉推理平台,支持多模型并行推理、实时流处理、WebRTC SEI 解析
基于 YOLO11 的智能视觉分析平台,支持图片、视频和直播流的目标检测,以及多模型并行推理。
如果你要在 GPU 服务器上部署,使用我们的一键部署脚本:
# 克隆项目
git clone <repository-url>
cd yolo-platform
# 运行 GPU 部署脚本
./deploy/gpu-deploy.sh
详细说明请查看 GPU 部署指南
git clone <repository-url>
cd yolo-platform
# 创建虚拟环境
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# 安装依赖
pip install -r requirements.txt
# 创建数据库
createdb yolo11_db
# 方法1: 使用SQL脚本
psql -U your_user -d yolo11_db -f init_database.sql
# 方法2: 使用Python脚本(推荐)
python init_db.py
cd yolo-web
npm install # 或 pnpm install
# 开发模式
uvicorn web.main:app --reload --host 0.0.0.0 --port 8000
# 生产模式
uvicorn web.main:app --host 0.0.0.0 --port 8000 --workers 4
cd yolo-web
# 开发模式
npm run dev
# 构建生产版本
npm run build
访问 http://localhost:5173 查看应用。
// 前端API调用示例
await workflowApi.createMultiModelTask({
name: "监控任务-摄像头1",
source_path: "rtsp://camera1/stream",
vid_stride: 1,
webhook_url: "http://your-server/webhook", // 可选
models: [
{
model_name: "yolo11n.pt",
conf_threshold: 0.25,
iou_threshold: 0.45,
color: "#FF6B6B"
},
{
model_name: "yolo11s.pt",
conf_threshold: 0.3,
iou_threshold: 0.5,
color: "#4ECDC4"
}
]
})
// 更新模型参数(运行时生效)
await workflowApi.updateModelParams(taskId, modelIndex, {
conf_threshold: 0.35,
iou_threshold: 0.5
})
// 添加新模型
await workflowApi.addModel(taskId, {
model_name: "yolo11m.pt",
conf_threshold: 0.3,
iou_threshold: 0.45
})
// 移除模型
await workflowApi.removeModel(taskId, modelIndex)
// 连接SSE接收检测结果
const eventSource = new EventSource(`/api/algorithm/tasks/${taskId}/sse`)
eventSource.addEventListener('detection', (event) => {
const data = JSON.parse(event.data)
console.log('检测事件:', data.event_description)
console.log('检测统计:', data.detection_summary_text)
})
yolo-platform/ ├── web/ # 后端代码 │ ├── api/ # API路由 │ ├── core/ # 核心推理引擎 │ ├── models/ # 数据模型 │ ├── services/ # 业务服务 │ ├── utils/ # 工具函数 │ └── tests/ # 测试代码 ├── yolo-web/ # 前端代码 │ ├── src/ │ │ ├── api/ # API封装 │ │ ├── components/ # Vue组件 │ │ ├── views/ # 页面视图 │ │ └── utils/ # 工具函数 │ └── public/ # 静态资源 ├── scripts/ # 🔧 工具脚本 │ ├── test_drone_detection.py │ ├── train_drone_model.py │ ├── convert_visdrone_to_yolo.py │ ├── diagnose_latency.py │ └── debug/ # 调试脚本 ├── examples/ # 💡 示例代码 │ ├── object_deduplication_demo.py │ └── deepsort_integration_example.py ├── docs/ # 📚 项目文档 │ ├── README.md # 文档索引 │ ├── DEEPSORT_GUIDE.md # DeepSORT 指南 │ ├── DRONE_DETECTION_GUIDE.md │ ├── SIMPLE_TRAINING_GUIDE.md │ └── archive/ # 历史文档 ├── migrations/ # 数据库迁移 ├── data/ # 数据文件 ├── init_db.py # 数据库初始化脚本 ├── requirements.txt # Python依赖 └── config.yml # 配置文件
✅ 后端 Dockerfile 中的 libgl1-mesa-glx 已替换为 libgl1(解决构建错误)
前后端是两个独立的 Git 仓库,需要分别配置 CNB:
后端仓库(当前):
.cnb.ymlDockerfilebackend 或根据你的 CNB_REPO_SLUG_LOWERCASE 配置前端仓库(yolo-web):
yolo-web/.cnb.ymlyolo-web/Dockerfilefrontend 或根据你的 CNB_REPO_SLUG_LOWERCASE 配置1. 在各自的 CNB 项目中配置环境变量:
CNB_DOCKER_REGISTRY=xxx-docker.pkg.coding.net
CNB_TOKEN_USER_NAME=your-username
CNB_TOKEN=your-token
CNB_REPO_SLUG_LOWERCASE=project/backend # 后端
CNB_REPO_SLUG_LOWERCASE=project/frontend # 前端
2. 分别推送代码触发构建:
# 后端
cd /path/to/backend
git push origin master # 构建 latest 标签
git push origin develop # 构建 dev 标签
# 前端
cd /path/to/yolo-web
git push origin master # 构建 latest 标签
git push origin develop # 构建 dev 标签
3. 拉取镜像部署:
后端部署:
# 1. 复制环境变量配置
cp .env.example .env
# 2. 编辑 .env 文件
nano .env
# 修改:
# DOCKER_REGISTRY=xxx-docker.pkg.coding.net/project/yolo11
# DATABASE_URL=mysql+pymysql://root:password@mysql-host:3306/yolo11
# REDIS_URL=redis://redis-host:6379/0
# MINIO_ENDPOINT=minio-host:9000
# 3. 登录镜像仓库
docker login xxx-docker.pkg.coding.net
# 4. 启动后端
docker-compose -f docker-compose.backend.yml up -d
# 5. 查看日志
docker-compose -f docker-compose.backend.yml logs -f
前端部署:
# 1. 配置 .env(同上)
# 2. 登录镜像仓库
docker login xxx-docker.pkg.coding.net
# 3. 启动前端
docker-compose -f docker-compose.frontend.yml up -d
# 4. 查看日志
docker-compose -f docker-compose.frontend.yml logs -f
访问服务:
方式 1: 宝塔面板(推荐):
# 1. 复制配置文件
sudo cp nginx-bt-panel.conf /www/server/panel/vhost/nginx/yolo11.conf
# 2. 编辑配置
sudo nano /www/server/panel/vhost/nginx/yolo11.conf
# 修改 server_name 为你的域名或 IP
# 3. 测试并重载
sudo nginx -t
sudo nginx -s reload
或在宝塔面板中操作:
nginx-bt-panel.conf 的内容方式 2: 标准 Nginx:
# 1. 复制配置示例
sudo cp nginx-external-config.example /etc/nginx/sites-available/yolo11
# 2. 编辑配置
sudo nano /etc/nginx/sites-available/yolo11
# 修改 server_name 为你的域名
# 3. 启用配置
sudo ln -s /etc/nginx/sites-available/yolo11 /etc/nginx/sites-enabled/
# 4. 测试并重载
sudo nginx -t
sudo nginx -s reload
配置说明:
proxy_pass http://127.0.0.1:80 → 前端容器proxy_pass http://127.0.0.1:8000/api/ → 后端容器proxy_buffering offdocker-compose.frontend.yml 中的端口映射为 8080:80前端构建找不到 nginx.conf:
错误: COPY nginx.conf /etc/nginx/conf.d/default.conf 失败
解决方案:
nginx.conf 在 yolo-web/ 根目录.dockerignore 没有排除 nginx.conf.git 目录被正确排除# 运行所有测试
pytest
# 运行特定测试
pytest web/tests/test_algorithm_executor.py
# 运行属性测试
pytest web/tests/test_*_properties.py
# 查看覆盖率
pytest --cov=web --cov-report=html
# 运行性能测试
pytest web/tests/test_performance.py -v
# 运行集成测试
pytest web/tests/test_integration_hot_update_sse_multi_algorithm.py -v
# 数据库配置
DATABASE_URL=postgresql://user:password@localhost/yolo11_db
# 服务配置
API_HOST=0.0.0.0
API_PORT=8000
# GPU配置
CUDA_VISIBLE_DEVICES=0
编辑 config.yml 配置项目参数:
# 模型配置
models:
default_conf_threshold: 0.25
default_iou_threshold: 0.45
# 任务配置
tasks:
max_concurrent_tasks: 10
default_vid_stride: 1
# SSE配置
sse:
heartbeat_interval: 5
max_queue_size: 100
欢迎提交 Issue 和 Pull Request!
最后更新: 2025-12-22