项目概述
GridSentinel 是一套面向输电线路巡检、故障分析与预警处置的 Windows 桌面应用。系统以 YOLO 目标检测为核心,结合 OpenAI-compatible 多模态模型进行按需复核,覆盖数据集管理、模型训练与发布、图片检测、视频检测、摄像头实时检测、模型评估、预警处置、报告导出和系统管理等业务,形成从“数据准备—模型训练—检测分析—风险预警—人工处置”的完整闭环。
系统采用 Electron 桌面客户端,不依赖浏览器独立运行。开发模式下客户端连接由 PyCharm 或 run.py 启动的本地 Flask 服务;正式打包后由 Electron 主进程管理后端进程。客户端与后端仅监听本机回环地址,数据库、日志、上传文件、训练产物、检测结果和缓存统一写入 runtime/,避免运行数据散落到源码目录。
当前内置初始数据集以 dataset/data.yaml 为准,共 1,912 张图片,包含训练集 1,794 张、验证集 77 张、测试集 41 张,目标类别共 6 类:电缆破损、绝缘子破损、正常电缆、正常绝缘子、杆塔和植被遮挡。系统同时支持导入其他符合标准 YOLO 目录规范的数据集。

核心创新点
桌面端一体化运行:使用 Electron 封装完整业务界面,并通过受限 preload IPC 调用摄像头、桌面通知和本地文件等能力。
三种检测方式统一接入:支持单张图片、离线视频和实时摄像头检测,检测记录与预警事件使用统一的数据结构保存。
YOLO 训练与发布闭环:兼容 YOLOv8n、YOLO11n、YOLO12n 和 YOLO26n 基础权重;YOLO26n 为默认训练基座,YOLO12n 标记为实验性模型。基础权重与用户训练、评估和发布的业务模型严格区分。
多模态 AI 按需复核:图片检测结果和视频关键帧可由用户主动发起复核;系统将原图、YOLO 结构化检测结果和业务提示词发送给视觉模型,生成风险研判、依据、处置建议和不确定性说明。
多模型容错调用:系统设置页可维护多个 OpenAI-compatible API 模型,区分文本模型和视觉多模态模型,自定义访问顺序;当前模型失败后自动按顺序尝试后续模型。
真实结果优先与明确降级:未配置多模态服务、请求超时或响应格式异常时,YOLO 检测仍可正常完成,复核状态明确标记为“AI 未验证”,不生成虚假分析内容。
视频证据链展示:异步处理视频并生成 H.264 标注视频、关键帧、逐帧检测对象和风险摘要;用户可播放标注视频、浏览全部保留关键帧并对选中帧发起 AI 复核。
实时目标跟踪与预警去重:实时检测通过 WebSocket 传输采样帧,结合 ByteTrack 维护轨迹,在会话范围内进行事件去重,降低重复告警。
五级风险与人工处置闭环:风险等级分为可忽略、轻微、中等、严重和紧急;预警事件支持待处置、已处置和误判三种人工状态,并保留处置记录。
可观测的训练与评估:训练任务提供 GPU 检测、进度、动态预计剩余时间、实时日志、指标和产物查看;评估任务提供 Precision、Recall、mAP50、mAP50-95、类别指标、PR 曲线、混淆矩阵及 GT/预测对比。
本地安全与审计:密码使用 Argon2id 存储,接口使用 JWT 访问令牌和刷新令牌,管理员操作写入审计日志,多模态 API Key 在 Windows 环境下使用 DPAPI 加密保存。
短信身份验证:支持账号密码登录、手机短信验证码登录和验证短信后重置密码;验证码按用途隔离并设置有效期、发送冷却和尝试次数限制。
应用场景
日常线路巡检:对无人机、移动终端或固定监控采集的图片和视频进行批量检测,快速定位电缆破损、绝缘子破损和植被遮挡等风险。
实时监控预警:接入本机摄像头进行实时识别、目标跟踪和桌面通知,适用于巡检演示、现场辅助判断和监控值守。
故障复核与处置:结合 YOLO 证据和多模态 AI 分析辅助研判,按风险等级筛选预警并记录处置状态。
模型迭代管理:导入标准 YOLO 数据集,使用本机 CPU 或 CUDA GPU 训练、续训、评估和发布输电线路业务模型。
检测报告归档:保存原图、标注图、目标裁剪图、关键帧、AI 复核结论和处置建议,并导出 Word 检测报告。
教学与毕业设计演示:完整展示计算机视觉模型从数据准备到部署应用的工程流程;原型模拟数据仅用于界面演示,正式应用只展示真实任务结果。
技术架构
整体架构设计
系统采用 Electron 桌面容器、Vue 渲染进程、本地 Flask API、算法与任务服务、SQLite 数据库及运行文件存储组成的分层架构。常规业务通过 /api/v1 REST 接口通信,训练、视频和评估任务由轮询/进度接口反馈状态,实时摄像头检测通过 WebSocket 发送二进制采样帧并返回检测框、轨迹和事件。
┌──────────────────────────────────────────────────────────────┐
│ Electron 桌面客户端 │
│ 主进程:窗口/后端进程/通知/摄像头权限 │
│ preload:受限 IPC 桥接 │
│ 渲染进程:Vue 3 + TypeScript + Element Plus │
│ 开发地址:http://127.0.0.1:15173 │
└───────────────────────────┬──────────────────────────────────┘
│ REST /api/v1 + WebSocket
▼
┌──────────────────────────────────────────────────────────────┐
│ Flask 本地业务与算法服务 │
│ 开发地址:http://127.0.0.1:8765 │
│ 鉴权与权限 │ 数据集/模型 │ 训练/评估任务 │ 检测/预警 │
└───────────────┬──────────────────┬───────────────────────────┘
│ │
▼ ▼
┌────────────────────────┐ ┌──────────────────────────────────┐
│ YOLO / PyTorch / OpenCV│ │ OpenAI-compatible 多模态模型 │
│ CUDA/CPU、ByteTrack │ │ 按类型、优先级和失败顺序调用 │
└───────────────┬────────┘ └──────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────┐
│ runtime/ │
│ SQLite WAL │ 日志 │ 数据集 │ 模型 │ 任务 │ 上传 │ 输出 │ 缓存│
└──────────────────────────────────────────────────────────────┘
Electron 安全配置开启 contextIsolation 和 sandbox,禁用渲染进程 Node.js 集成与 webview,并限制新窗口和页面跳转。GPU 密集型训练、视频和实时任务使用本地资源锁,避免多个重任务争抢同一显卡;发生冲突时由界面提示等待或改用 CPU。
技术栈详解
桌面客户端技术栈 (desktop-client)
桌面容器:Electron 43.1.x
核心框架:Vue 3.5.x(Composition API)
开发语言:TypeScript 5.9.x
UI 组件库:Element Plus 2.11.x、Element Plus Icons
状态管理:Pinia 3.0.x
路由管理:Vue Router 4.5.x
HTTP 客户端:Axios 1.11.x
构建工具:Vite 7.1.x、Vue TSC
组件测试:Vitest、Vue Test Utils、JSDOM
进程协作:Electron 主进程、preload IPC、Vite 开发服务器、本地 Flask 健康检查
界面主题:深海军蓝、电网青蓝、安全黄与预警橙红,沿用审核原型的左侧导航、顶部状态栏和卡片式工作区布局
后端+算法端技术栈 (backend)
运行环境:Python 3.12+
Web 框架:Flask 3.1、Flask-Cors、Flask-Sock
数据访问:Flask-SQLAlchemy、SQLAlchemy 2、Alembic、SQLite WAL
身份认证:Argon2id、PyJWT、访问令牌/刷新令牌、管理员与普通用户权限控制
参数校验:Pydantic 2
目标检测:Ultralytics 8.4、YOLOv8/YOLO11/YOLO12/YOLO26
深度学习:PyTorch,支持 CUDA GPU 与 CPU 降级路径
图像与视频处理:OpenCV、NumPy、Pillow、CLAHE、H.264 视频转码
目标跟踪:ByteTrack
多模态服务:基于 requests 的 OpenAI-compatible Chat Completions 适配器,支持文本/视觉模型分类和顺序回退
报告生成:python-docx
短信服务:阿里云市场 AppCode 接口适配器,支持验证码登录和密码重置
自动化测试:pytest、pytest-cov
























