利用AI和RAG技术,实现起重机实时安全分析和智能知识问答的综合监控平台
- 使用 千问视觉 AI (qwen-vl-plus) 进行深度图像分析
- 实时检测:未佩戴安全帽、危险区域入侵、违规站位
- 三级风险评估:安全 / 警告 / 危险
- 基于向量化检索的语义搜索
- 集成起重机安全规程知识库(8份安全规程与事故案例)
- 自动引用参考资料来源,可查看检索原文
- 浅色/深色主题实时切换
- 响应式布局,流畅交互
┌──────────────────────────────────────────────┐
│ Web 前端 (浏览器) │
│ index.html / styles.css / script.js │
└────────────────┬─────────────────────────────┘
│ HTTP/REST API
┌────────────────▼─────────────────────────────┐
│ Flask 后端服务 (Python) │
│ app.py / rag_service.py / video_analyzer.py │
└──────┬──────────┬──────────────┬─────────────┘
│ │ │
▼ ▼ ▼
千问API Chroma DB 本地文件系统
Vision & 向量数据库
Text
用户问题 → 向量化(text2vec) → Chroma检索(top5) → 千问生成 → 返回答案+参考来源
视频帧 → Canvas提取 → Base64编码 → 千问Vision分析 → 安全评估 → 日志更新
CraneSafe/
├── StartAll.bat # 双击一键启动
├── StartAll.ps1 # PowerShell 启动脚本
├── frontend/
│ ├── index.html # 前端主页面
│ ├── script.js # 客户端逻辑
│ └── styles.css # 样式表(支持主题切换)
├── backend/
│ ├── app.py # Flask 主应用
│ ├── rag_service.py # RAG 知识问答模块
│ ├── video_analyzer.py # 视频分析模块
│ ├── chroma_db/ # 向量数据库
│ ├── requirements.txt # Python 依赖
│ └── .env # 环境变量配置
└── Crane_simulation/
└── simulation.py # PyBullet 桥式起重机仿真
- Python 3.9+
- 阿里 DashScope API Key (申请入口)
双击 StartAll.bat,脚本会自动:
- 检查 Python 环境
- 安装缺失的依赖
- 验证配置文件 (.env)
- 启动后端 (端口 5000) 和前端 (端口 8000)
- 自动打开浏览器
# 1. 配置 API 密钥
cd backend
copy .env.example .env
# 编辑 .env,填入 DASHSCOPE_API_KEY
# 2. 安装依赖
pip install -r requirements.txt
# 3. 启动后端
python app.py
# 4. 另开终端启动前端
cd frontend
python -m http.server 8000启动后访问:
| 服务 | 地址 |
|---|---|
| 前端界面 | http://localhost:8000 |
| 后端 API | http://localhost:5000 |
| 健康检查 | http://localhost:5000/api/health |
DASHSCOPE_API_KEY=sk-xxx... # 阿里千问 API Key
CHROMA_DB_PATH=./chroma_db # 向量数据库路径
FLASK_ENV=development
FLASK_DEBUG=True
GET /api/healthPOST /api/qa/ask
Content-Type: application/json
{"question": "五级大风操作规范"}POST /api/video/analyze/realtime
Content-Type: application/json
{"image": "base64编码的图像"}POST /api/video/analyze/frame
Content-Type: multipart/form-data
file: <image_file>GET /api/video/history?limit=10GET /api/suggestionsPOST /api/simulation/start| 类别 | 技术 |
|---|---|
| 前端 | HTML5 / Tailwind CSS / JavaScript / Font Awesome |
| 后端 | Python 3.9+ / Flask / Flask-CORS |
| AI | 千问 API (qwen3.5-flash + qwen-vl-plus) |
| 向量化 | shibing624/text2vec-base-chinese |
| 向量库 | ChromaDB |
| 框架 | LangChain |
| 仿真 | PyBullet |
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 后端离线 | 服务未启动 | python backend/app.py |
| API 错误 | 密钥无效 | 更新 .env 中的 API Key |
| RAG 无记录 | 知识库未初始化 | 运行 ingest_to_db.py |
| 视频卡顿 | 分析频率过高 | 增大 setInterval 间隔 |
| 端口被占用 | 其他进程占用 | 修改端口或 kill 进程 |
| 依赖缺失 | 未安装 | pip install -r requirements.txt |
| 首次启动慢 | 下载模型 | 正常现象,约 30-60 秒 |
修改视频分析频率 (script.js)
setInterval(() => {
if (analysisEnabled && !isAnalyzing) {
analyzeVideoFrame();
}
}, 10000); // 改为 10 秒一次修改后端端口 (app.py)
app.run(host='0.0.0.0', port=8888)MIT License