Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CraneSafe AI - 起重机安全监控平台

利用AI和RAG技术,实现起重机实时安全分析和智能知识问答的综合监控平台


核心特性

实时视频安全分析

  • 使用 千问视觉 AI (qwen-vl-plus) 进行深度图像分析
  • 实时检测:未佩戴安全帽、危险区域入侵、违规站位
  • 三级风险评估:安全 / 警告 / 危险

RAG 知识问答系统

  • 基于向量化检索的语义搜索
  • 集成起重机安全规程知识库(8份安全规程与事故案例)
  • 自动引用参考资料来源,可查看检索原文

现代化 Web 界面

  • 浅色/深色主题实时切换
  • 响应式布局,流畅交互

系统架构

┌──────────────────────────────────────────────┐
│              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

RAG 知识问答流程

用户问题 → 向量化(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 桥式起重机仿真

快速开始

前置要求

方式一:双击启动(推荐)

双击 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

环境变量 (.env)

DASHSCOPE_API_KEY=sk-xxx...     # 阿里千问 API Key
CHROMA_DB_PATH=./chroma_db      # 向量数据库路径
FLASK_ENV=development
FLASK_DEBUG=True

API 接口

1. 健康检查

GET /api/health

2. RAG 知识问答

POST /api/qa/ask
Content-Type: application/json

{"question": "五级大风操作规范"}

3. 实时视频分析

POST /api/video/analyze/realtime
Content-Type: application/json

{"image": "base64编码的图像"}

4. 视频帧分析(文件上传)

POST /api/video/analyze/frame
Content-Type: multipart/form-data

file: <image_file>

5. 分析历史

GET /api/video/history?limit=10

6. 快速问答建议

GET /api/suggestions

7. 启动仿真

POST /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

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages