基于「YOLO 目标检测 + 多模态 AI 分析」的医学骨折检测分析系统
项目概述
本项目是一套面向 Windows 10/11 x64 的医学骨折影像辅助检测桌面系统,产品名称为“骨影智析(FractureInsight)”。系统使用 Electron 构建桌面 GUI,以 Flask 提供本机业务与算法服务,将数据集管理、模型训练、模型评估、图片检测、视频检测、实时检测、预警处置和多模态大模型复核整合为一套可追溯的工作流程。
系统固定连接本机 127.0.0.1:5010 后端,正式业务数据均来自真实 YOLO 推理、真实训练/评估任务或已配置的 OpenAI-compatible 模型服务;缺少算法权重或外部服务配置时,界面会明确提示不可用原因,不生成虚假检测框、指标、短信验证码或 AI 结论。系统结果仅用于辅助筛查、科研和教学,不能替代医生诊断及治疗决策。

核心创新点
十一分类骨折检测:使用 YOLO 对医学影像中的疑似骨折区域进行定位与分类,类别包含 10 种骨折类型和 Null 类,并在界面中提供中文类型解释。
多来源检测方式:支持 JPG、JPEG、PNG、BMP、WebP 图片,常见医学教学视频,本机摄像头以及最多 9 路 RTSP/本地循环视频点位。
桌面化医学工作台:采用 Electron + Vue 3 构建临床深蓝主题桌面界面,提供受限 preload、窗口内画面全屏、桌面通知和受控文件选择能力。
本地 YOLO 与视觉大模型协同:YOLO 负责稳定、可追溯的本地目标检测;用户可针对图片、视频关键帧或预警证据帧调用真实视觉多模态模型进行二次复核。
OpenAI-compatible 多模型回退:可添加多个文本或视觉模型,显示“可用、不可用、未测试”状态并自定义调用顺序;当前模型失败后自动尝试同类型的后续模型。
完整模型生命周期:覆盖内置/导入数据集校验、基础权重发现、训练任务、实时指标、取消与续训、业务权重上传、发布、版本管理和模型评估。
图片、视频、实时预警闭环:统一保存原始媒体、YOLO 标注结果、关键帧、AI 复核、预警、处置历史和审计记录,支持从检测结果追溯到证据文件。
真实服务与故障隔离:阿里云短信和外部 AI 只调用真实服务;外部模型失败不会覆盖本地 YOLO 结果,训练、视频和评估异常会保留明确状态与错误原因。
安全的本地运行边界:后端仅监听本机地址,Electron 禁止渲染进程直接访问 Node API,文件路径必须位于受控 runtime 命名空间,敏感密钥以加密形式保存。
应用场景
医院骨科、急诊科与影像科:对匿名化 X 光影像进行疑似骨折区域辅助筛查和复核排序。
基层诊所:通过本地模型快速完成影像初筛,为进一步转诊或专业阅片提供参考。
医学教学与科研:展示数据集、训练、评估、目标检测和视觉大模型分析的完整实验过程。
体检与骨骼健康筛查:辅助发现需要专业人员进一步检查的异常影像区域。
教学视频和采集设备分析:处理本地视频、本机摄像头或 RTSP 点位中的医学影像画面。
模型验证演示:对比不同业务权重的 Precision、Recall、mAP、PR 曲线和混淆矩阵等真实指标。
技术架构
整体架构设计
系统采用 Electron 客户端与 Flask 本机服务分离的桌面架构。客户端与后端分别安装依赖、分别启动;Electron 本阶段不自动拉起 Python 服务,也不制作安装包。
┌──────────────────────── Electron 桌面客户端 ────────────────────────┐
│ Main Process Preload Bridge Vue Renderer │
│ 窗口/通知/安全策略 ←→ 白名单 IPC 与路径保护 ←→ 页面、状态、REST/WS │
└──────────────────────────────┬──────────────────────────────────────┘
│ http://127.0.0.1:5010/api/v1
│ REST / WebSocket / 受权文件流
┌──────────────────────────────▼──────────────────────────────────────┐
│ Flask 本机后端 │
│ API → Service/Task → SQLAlchemy → SQLite WAL │
│ │ │
│ ├─ Ultralytics YOLO / PyTorch / OpenCV / CLAHE / ByteTrack │
│ ├─ 图片推理、视频任务、训练任务、模型评估和预警生成 │
│ ├─ FFmpeg / FFprobe / MediaMTX │
│ ├─ OpenAI-compatible 视觉模型回退链 │
│ └─ 阿里云短信(API 市场 AppCode 或 Dysms AccessKey) │
└──────────────────────────────┬──────────────────────────────────────┘
│
┌────────────▼─────────────────┐
│ 项目根目录 runtime │
│ 数据库、日志、模型、媒体、评估 │
└───────────────────────────────┘
技术栈详解
前端技术栈 (Electron + Vue)
桌面运行环境:Electron 44.0.0,主进程负责窗口、安全策略、受控文件选择和桌面通知。
渲染框架:Vue 3.5.42 + Composition API。
开发语言:TypeScript 5.9.3。
UI 组件库:Element Plus 2.14.5 + Element Plus Icons 2.3.2。
状态管理:Pinia 3.0.3。
路由管理:Vue Router 4.5.1,使用 Hash 路由适配 Electron。
HTTP 客户端:Axios 1.20.0,统一访问 /api/v1。
图表可视化:ECharts 6.1.0,用于训练、评估和趋势数据展示。
构建工具:electron-vite 4.0.1 + Vite 7.3.6。
样式系统:Sass 1.93.2,采用医学深蓝、蓝青状态色和影像灰白配色。
自动化测试:Vitest 3.2.7 + Vue Test Utils 2.4.6。
安全配置:contextIsolation: true、nodeIntegration: false,preload 只暴露白名单 IPC。
后端+算法端技术栈 (Flask + YOLO)
核心框架:Flask 3.1.2 + Flask-Cors 6.0.1。
数据访问与迁移:Flask-SQLAlchemy 3.1.1、SQLAlchemy 2.0.43、Flask-Migrate 4.1.0、Alembic 1.16.5。
数据库:SQLite 3,启用 WAL、外键约束和统一 UTC ISO 8601 时间。
认证与密码:JWT + 可撤销令牌;密码使用 Argon2id,并兼容旧 MD5 账号登录后自动升级。
实时通信:Flask-Sock 0.7.0,WebSocket 使用 60 秒短期范围票据,通知同时保留轮询兜底。
深度学习:PyTorch 2.13.0 CUDA 13.0 环境 + Ultralytics 8.4.137,支持 CPU 或可用 CUDA GPU。
图像处理:OpenCV 4.12.0.88、NumPy 2.2.6、Pillow 11.3.0,支持 CLAHE 增强和中文标注结果生成。
视频与实时检测:OpenCV、FFmpeg、FFprobe、MediaMTX 和 ByteTrack。
多模态 AI:通过 OpenAI-compatible Chat Completions 接口调用视觉模型,结构化解析结论、影像征象、建议和局限性。
短信服务:兼容阿里云 API 市场 AppCode 与 Dysms AccessKey 两种真实发送方式。
报告导出:python-docx 1.2.0,用于生成图片检测 DOCX 报告。
自动化测试:Pytest 8.4.2,覆盖认证、数据集、模型、短信、AI 回退、路径安全和治理流程。
项目目录结构
系统代码只放在 项目代码/backend 和 项目代码/client,数据库、日志、模型、训练结果、媒体、评估文件和外部服务运行文件统一放入根目录 runtime。内置 dataset 原位只读注册,不复制到 runtime。
项目根目录/
├── dataset/ # 内置医学骨折十一分类数据集
├── prototype/ # 医学主题交互原型
├── 项目代码/
│ ├── backend/ # Flask、算法、任务、迁移与后端测试
│ └── client/ # Electron、Vue、TypeScript 与客户端测试
├── runtime/
│ ├── database/ # SQLite 数据库
│ ├── logs/{backend,client,training,mediamtx}/
│ ├── datasets/ # 用户导入数据集
│ ├── models/{base,uploaded,trained}/
│ ├── media/{images,videos,realtime,alerts}/
│ ├── evaluations/ # 模型评估产物
│ ├── exports/ # DOCX 等导出文件
│ ├── services/mediamtx/ # MediaMTX 程序与配置
│ └── temp/ # 可清理临时文件
├── 数据库开发文档.md
├── 系统介绍文档.md
├── 系统文档.md
└── 系统开发步骤.md
前端目录结构 (项目代码/client)
项目代码/client/
├── electron/
│ ├── main/ # Electron 主进程与窗口安全策略
│ └── preload/ # 受限 preload 与 IPC 白名单
├── src/
│ ├── api/ # REST、WebSocket 与文件请求封装
│ ├── assets/ # 医学主题图片资源
│ ├── components/ # AI 进度、AI 结果等公共组件
│ ├── composables/ # 可复用状态与异步反馈逻辑
│ ├── layouts/ # 侧栏、顶栏、状态栏主布局
│ ├── router/ # 页面路由与管理员路由守卫
│ ├── stores/ # Pinia 登录会话状态
│ ├── styles/ # 医学深色主题与原型一致性样式
│ ├── types/ # TypeScript 数据契约
│ ├── utils/ # 中文骨折类型与结果说明工具
│ └── views/ # 工作台及各业务页面
├── tests/ # 客户端测试
├── package.json # 依赖和开发/构建命令
└── electron.vite.config.ts # Electron Vite 配置
客户端当前包含影像工作台、图片检测、图片记录、视频检测、视频任务、实时检测、预警中心、模型评估、数据集管理、模型管理、用户管理、个人中心和系统设置等主要业务页面,并提供启动自检、身份验证、通知和通用状态界面。
后端目录结构 (项目代码/backend)
项目代码/backend/
├── app/
│ ├── algo/ # YOLO 能力检测与图像处理
│ ├── api/ # /api/v1 蓝图与业务接口
│ ├── integrations/ # 阿里云短信、MediaMTX 集成
│ ├── models/ # SQLAlchemy 数据模型
│ ├── repositories/ # 数据访问层
│ ├── schemas/ # 数据结构与校验
│ ├── security/ # JWT、密码、密钥和路径安全
│ ├── services/ # AI 回退、审计、数据集等服务
│ ├── tasks/ # 训练、视频、实时和评估后台任务
│ └── utils/ # 运行目录、响应和迁移辅助
├── migrations/ # Alembic 数据库迁移
├── tests/
│ ├── integration/ # 接口与治理流程测试
│ └── unit/ # 安全、短信、AI 和工具测试
├── app.py # 本机 Flask 启动入口
├── requirements.txt # 后端与算法依赖
├── .env.example # 环境变量示例
└── pytest.ini # 测试配置
核心功能模块
启动自检、用户认证与个人中心:客户端启动时检查 Flask、SQLite、算法权重、GPU、FFmpeg、FFprobe 和 MediaMTX 状态。系统支持账号密码登录、阿里云短信登录/注册/重置密码、JWT 续签和退出登录。个人中心展示图片、视频、实时会话与预警统计,可直接修改姓名、手机号和邮箱;手机号变更不要求短信验证,初始密码也不强制修改。
用户管理:管理员可按关键词、角色和状态筛选用户,执行新增、编辑、启用、禁用、重置密码、单条删除或批量删除。系统禁止删除当前登录管理员或最后一个有效管理员,并对敏感操作写入审计日志。
数据集管理:根目录内置数据集直接读取 dataset/data.yaml 并原位注册,真实统计为训练集 1,397 张、验证集 399 张、测试集 200 张,共 1,996 张图片与 1,996 个标签。导入 ZIP 支持自定义名称和说明,校验唯一 data.yaml、11 类名称、图片/标签配对和路径越界;嵌套目录数据集会按自身 YAML 正确解析训练、验证和测试路径。
模型与训练管理:系统扫描 runtime/models/base 中的基础权重,基础权重受保护且不能删除。管理员可以上传已经训练完成的 .pt/.onnx 业务权重,或创建训练任务并配置名称、数据集、基础权重、设备、Epoch、Batch、图片尺寸和优化器。训练详情弹窗显示实时进度、耗时、预计剩余时间、日志、Precision、Recall、mAP 和产物;支持停止、续训、发布、取消发布、删除训练记录和删除非基础模型版本。
图片检测与记录:选择医学影像后可配置模型、置信度和 CLAHE 增强,执行真实 YOLO 推理并生成中文标注图、检测框、裁剪图、类型统计、风险优先级和文字化说明。用户可调用视觉多模态模型复核,界面以 LLM 推理阶段、动态进度和文字提示反馈过程,并以结构化方式展示结论、影像征象、复核建议和局限性。历史记录提供缩略图、详情弹窗、重新复核、删除和 DOCX 报告导出。
视频检测与任务记录:上传视频后由后端异步抽帧检测,页面实时展示任务状态、已处理帧、进度和错误原因。完成后可播放原始视频与 H.264 YOLO 标注视频,在独立滚动区域浏览证据关键帧;点击关键帧可查看中文检测结果,并在当前区域发起 AI 复核。任务列表支持缩略图、详情弹窗、取消、单条删除和批量删除。
实时检测:支持 Electron 本机摄像头和多路网络点位。本机摄像头按设置间隔提交压缩帧;网络模式可选择最多 9 个已运行点位,并自动切换 1、2、4、9 宫格。后端支持 YOLO 推理、ByteTrack 跟踪、证据帧、事件去重和断线隔离;检测到疑似骨折事件后立即写入会话事件,事件超过 3 条时在模块内滚动。画面全屏仅覆盖应用窗口内容区,不改变窗口大小。
网络监控点位与流媒体管理:系统设置页从 runtime/services/mediamtx 发现和管理 MediaMTX。点位来源支持真实 RTSP/RTSPS 或本地 MP4、MOV、MKV、AVI、WebM、M4V、FLV、TS 文件;本地文件先由 FFprobe 校验,再由 FFmpeg 循环推送到本机 RTSP 地址,原文件不复制、不删除。点位支持创建、测试、开启、关闭、编辑、详情、筛选和软删除。
预警中心与通知中心:预警列表展示真实检测画面缩略图、来源、优先级、AI 状态和处置状态,支持筛选、选择、批量处置、批量删除和单条删除。详情使用居中弹窗,展示 YOLO 标注证据帧、本地检测对象、多模态 AI 结构化结果和处置历史;用户可重新复核并从下拉框选择“已复核、确认、排除、转交”等处置方式。侧栏待处理数与普通通知未读数分别统计。
模型评估:管理员可为已发布业务模型和已验证数据集创建真实评估任务。页面默认展示最近一次任务,点击列表行可切换上方指标与图表,点击详情使用弹窗展示完整任务。评估结果包含整体与分类 Precision、Recall、mAP50、mAP50-95、PR 曲线、Precision/Recall/F1 曲线、混淆矩阵和 GT/预测对比,并兼容当前 Ultralytics 的 Box*curve.png 产物命名。
多模态 AI 模型管理:系统设置页可添加、编辑、测试、启停、排序和删除 OpenAI-compatible API 模型,字段包括显示名称、模型类型、Base URL、模型名、API Key、超时和重试次数。每个模型显示可用、不可用或未测试状态;连接测试同时兼容部分供应商未在 /models 列表返回模型、但能够真实完成 Chat Completions 请求的情况。视觉任务按视觉模型顺序回退,本地 YOLO 不受外部 AI 故障影响。
系统设置、安全与运行状态:常规设置展示 Flask、SQLite、GPU、磁盘、FFmpeg、MediaMTX 和 runtime 路径状态;检测设置可管理置信度、CLAHE、抽帧间隔、预警去重、AI 复核阈值、保留天数和日志级别。所有业务接口使用 /api/v1、统一响应和错误码;数据库使用 SQLite WAL;文件接口执行命名空间与路径越界保护;密码使用 Argon2id。AI 模型连接参数与 API Key 采用 SQLite 便携存储,复制数据库即可迁移;短信密钥和点位凭据仍由 Windows DPAPI 保护。所有密钥在界面和日志中只显示掩码,包含 AI 凭据的数据库文件不得公开分发。










































