基于视觉语言模型(VLM)的电力高压柜安全操作视频分析系统,使用 OpenRouter 的 Kimi 多模态模型自动识别操作人员的个人防护装备(PPE)穿戴情况、动作序列、安全违规,并生成自然语言场景描述。
- PPE 检测:自动识别安全头盔、绝缘服、绝缘手套的穿戴情况
- 动作识别:按时间顺序提取操作动作(捡起、插入、旋转、打开、关闭等)
- 旋转参数识别:识别旋转方向(顺时针/逆时针)和圈数
- 特殊操作检测:检测接地刀闸操作和标识牌悬挂
- 安全规范判断:根据 PPE 和操作顺序判断是否符合安全规范
- 自然语言场景描述:生成流畅的中文场景描述文本
- 批量处理:支持单视频和目录批量处理
- 断点续传:支持中断后继续处理
- 重试机制:自动重试失败的 API 请求
| 模型 | 说明 | 价格 |
|---|---|---|
| kimi (推荐) | Kimi K2.5,性价比高 | ~$0.25/百万 tokens |
| kimi-vision | Kimi 视觉增强版 | ~$0.50/百万 tokens |
pip install -r requirements.txt获取 API 密钥:
- 访问 OpenRouter
- 注册账号
- 创建 API Key
设置密钥:
# Windows PowerShell
$env:OPENROUTER_API_KEY="sk-or-你的密钥"
# 或编辑配置文件
cp configs/.env.example configs/.env
# 编辑 configs/.env,填入 OPENROUTER_API_KEY分析单个视频:
python analyze.py --video sources_video/video.mp4批量分析目录:
python analyze.py --video_dir sources_video断点续传:
python analyze.py --video_dir sources_video --resume使用 Kimi Vision:
python analyze.py --video_dir sources_video --model kimi-vision| 参数 | 说明 | 默认值 |
|---|---|---|
--video |
单个视频文件路径 | - |
--video_dir |
视频目录路径 | - |
--out |
输出结果文件路径 | output/results.jsonl |
--summary |
汇总报告输出路径 | output/summary.json |
--model |
模型(kimi 或 kimi-vision) | kimi |
--api_key |
OpenRouter API 密钥 | 环境变量 |
--max_mb |
最大视频文件大小(MB) | 80 |
--timeout |
API 请求超时时间(秒) | 300 |
--retries |
最大重试次数 | 3 |
--resume |
断点续传 | False |
--quiet |
安静模式 | False |
不规范操作:
一名男子未佩戴安全头盔、未穿着绝缘服、绝缘手套,穿着不规范。弯腰捡起断路器手车摇柄,
将手车摇柄插进摇柄插口,顺时针旋转 9 圈后,拔出手车摇柄放置在地上。起身后,向前伸手。
打开上开关柜门。用右手拨动柜内的二次开关。关闭上开关柜门。
规范操作:
一名工作人员佩戴安全头盔、穿戴绝缘服与绝缘手套,穿着规范。弯腰捡起断路器手车摇柄,
将手车摇柄插进摇柄插口,逆时针旋转 7 圈后,拔出手车摇柄放置在地上。起身后,向前伸手。
打开上开关柜门。用右手拨动柜内的二次开关。关闭上开关柜门。接着弯腰捡起接地开关操作手柄,
将手柄插进中门右下侧六角孔内,顺时针下压合上接地刀闸,将手柄放置于地上。
捡起地上的标识牌悬挂在上柜门。
{
"video_path": "sources_video/video.mp4",
"model": "moonshotai/kimi-k2.5",
"annotation": {
"ppe": {
"helmet": false,
"insulating_clothing": false,
"insulating_gloves": false
},
"actions": [...],
"grounding_switch": false,
"warning_sign": false,
"sequence_valid": false
},
"scene_description": "一名男子未佩戴安全头盔...",
"report": {
"violations": ["未佩戴安全头盔", "未穿着绝缘服", "未佩戴绝缘手套"],
"overall_compliant": false
}
}# 查看统计信息
python scripts/analyze_results.py --input output/results.jsonl
# 导出 CSV
python scripts/analyze_results.py --input output/results.jsonl --export_csv output/results.csv保留原始脚本,完全兼容:
# 基本用法
python vlm_kimi_video_label.py --video_dir sources_video
# 启用场景描述
python vlm_kimi_video_label.py --video_dir sources_video --with_scene_descMP4, MOV, WebM, MPEG, M4V, AVI
- API 密钥:需要有效的 OpenRouter API 密钥
- 视频大小:默认限制 80MB,可通过
--max_mb调整 - 网络连接:需要稳定的网络连接
- 费用:Kimi K2.5 约 $0.25/百万 tokens,单个视频成本极低
PowerStationBehaviorRecognition/
├── src/
│ ├── main.py # 主程序
│ ├── config.py # 配置(仅 Kimi)
│ └── scene_description.py # 场景描述生成器
├── scripts/
│ └── analyze_results.py # 结果分析工具
├── configs/
│ └── .env.example # 环境变量模板
├── sources_video/ # 视频源目录
├── output/ # 输出结果目录
├── analyze.py # 命令行入口
├── vlm_kimi_video_label.py # 兼容脚本
├── test_project.py # 测试脚本
├── requirements.txt # 依赖
└── README.md # 项目说明
访问 OpenRouter 注册并创建 API Key
Kimi K2.5 约 $0.25/百万 tokens,单个视频分析成本极低(约几分钱)
- kimi (Kimi K2.5):性价比高,推荐用于常规分析
- kimi-vision:视觉增强版,对细节识别更准确
使用 --max_mb 参数调整限制:
python analyze.py --video_dir sources_video --max_mb 100python analyze.py --video_dir sources_video --resumepython test_project.pyMIT License