KINGMAN8888/Eye-Control-v2.0

GitHub: KINGMAN8888/Eye-Control-v2.0

一种基于机器视觉与物联网的严重运动障碍辅助通信系统,利用LSTM与LLM将有意眨眼转换为交流与智能家居控制命令。

Stars: 0 | Forks: 0

# EyeLink v2.0 **一种基于机器视觉和物联网的严重运动障碍辅助通信框架** Elsewedy University of Technology (SUT) — 计算机科学学院 毕业设计 — 第 G26 团队 — 学年 2025/2026 ## 概述 EyeLink 是一个实时、边缘到云端的辅助系统,专为严重四肢瘫痪、肌萎缩侧索硬化症(ALS)和闭锁综合征(LIS)患者设计。这些患者保留完整的认知能力,但已丧失随意运动控制能力,因此有意眼部运动成为他们与环境交互的主要——通常也是唯一——方式。 该系统将有意的眨眼序列转换为结构化的交流短语和智能家居设备动作。版本 2.0 用训练好的 LSTM 神经网络取代了 v1.0 的基于规则的启发式分类器,将误报率从 14.8% 降低至 2.1%,并将端到端系统延迟缩短至 142 毫秒。 ## 问题陈述 市面上的 AAC(增强与替代交流)设备价格介于 7,000 至 15,000 美元之间,并且需要专门的临床支持才能操作。在发展中国家,这一价格使得大多数需要的患者无法负担。EyeLink 被设计为一种基于通用硬件的低成本、开放架构替代方案:标准摄像头、单板微控制器和一台普通笔记本电脑。 ## 系统架构 系统围绕四个松耦合层构建,通过明确定义的接口进行通信: ``` [ Webcam / Edge Node ] | | MediaPipe Face Mesh (468 landmarks, 30 fps) v [ LSTM Blink Classifier — ONNX Runtime ] | |-- Blink Command ---------> [ LLM Semantic Engine (Llama 3.1) ] | | | [ TTS Audio Output ] | | | [ MQTT Publish — JSON Payload ] | | | [ ESP32 Firmware ] | | | [ Optocoupler-Isolated Relay Bank ] | | | [ 220V AC Appliances ] | |-- Session Logs ----------> [ MongoDB Atlas ] | [ FastAPI REST + WebSocket ] | [ React.js Clinical Dashboard ] [ Flutter Mobile Application ] ``` 边缘节点在本地执行所有计算机视觉推理;不将原始摄像头数据传输到云端。仅上传结构化的日志事件和眨眼会话元数据。 ## 核心功能 **LSTM 时间序列分类器** 基于 30 帧滑动窗口的 12 维面部标志向量进行训练的序列模型。时间上下文使网络能够区分有意眨眼模式与无意生理噪声、环境光照伪影和部分遮挡事件。 **通过 LLM 的语义物联网动作** 选中的菜单项(如“风扇”或“灯”等单词短语)被传递给本地托管的 Llama 3.1 模型以解析意图,并向 MQTT 代理发送结构化的 JSON 命令。ESP32 订阅相关主题并触发对应的继电器动作。 **临床监控仪表板** 一个 React.js Web 应用,实时展示每位患者的眨眼频率遥测、会话时长和疲劳指数。专为病房护士和主治医生设计,可从单一控制台监控多个房间的患者交互模式。 **紧急检测协议** 后端监控眨眼间隔。超过可配置阈值(默认 120 秒)未检测到眨眼事件会触发通过 Firebase Cloud Messaging 向注册照护设备推送通知。异常高频眨眼超过设定速率则会触发独立的癫痫警报路径。 **电气安全隔离** 继电器控制板在每个通道接口使用 PC817 光电耦合器。ESP32 的 5V 逻辑域与 220V 交流市电完全隔离。微控制器固件中的任何单点故障都无法通过直接电气路径使继电器通电或断电。 **多语言文本转语音** 文本转语音输出支持阿拉伯语、英语和法语。语言选择按患者个人资料存储。 ## 技术栈 | 层级 | 技术 | |---|---| | 计算机视觉 | Python 3.11, MediaPipe Face Mesh, OpenCV | | 人工智能 / 机器学习 | TensorFlow 2.x, Keras, ONNX Runtime, LSTM | | 语义引擎 | Llama 3.1 (OpenRouter API) | | 后端 | FastAPI, Uvicorn, Motor(异步 MongoDB 驱动) | | 认证 | JWT (RS256), bcrypt | | 数据库 | MongoDB Atlas | | 前端 | React.js 18, Tailwind CSS, Recharts, WebSocket API | | 移动端 | Flutter 3.x (Dart), Firebase Cloud Messaging | | 消息传递 | Eclipse Mosquitto(MQTT 代理), PubSubClient | | 硬件 | ESP32-WROOM-32, Arduino IDE, PC817 光电耦合器, 4 通道继电器模块 | | 物联网传输 | MQTT over TCP, QoS 1 | ## 性能基准 基准测试在 8 名受试者上执行,使用在 50–800 lux 不同光照条件下记录的 2,400 个标注眨眼序列。 | 指标 | v1.0 — 启发式(EAR 阈值) | v2.0 — LSTM 网络 | 变化 | |---|---|---|---| | 分类准确率 | 85.2% | 97.8% | +12.6 pp | | 误报率 | 14.8% | 2.1% | -12.7 pp | | 端到端延迟 | ~500 ms | 142 ms | -71.6% | | 低光准确率(<50 lux) | ~60.0% | >88.0% | +28.0 pp | 误报率是操作关键指标。临床环境中的误触发意味着未预期的命令——继电器动作、紧急警报或错误短语输出——这会破坏患者对系统的信任。 ## 项目结构 ``` EyeLink_Project/ | |-- backend/ | |-- main_api.py # FastAPI application entry point | |-- auth.py # JWT issuance and validation | |-- models.py # Pydantic schemas | |-- db.py # MongoDB Motor client | |-- mqtt_client.py # MQTT publisher service | |-- ai_engine/ | |-- eye_tracker.py # MediaPipe landmark extraction | |-- lstm_model.py # ONNX inference wrapper | |-- blink_classifier.py # Sequence windowing and command resolution | |-- gaze_tracker.py # Gaze zone estimation | |-- firmware/ | |-- ESP32_Firmware.ino # Arduino sketch — MQTT subscriber + relay control | |-- dashboard/ # React.js frontend source | |-- mobile/ # Flutter application source | |-- config.py # Global runtime constants |-- main.py # Desktop application entry point |-- requirements.txt ``` ## 安装与部署 ### 先决条件 - Python 3.11 或更高版本 - Node.js 18 LTS 或更高版本 - 安装 ESP32 开发包板的 Arduino IDE 2.x - MongoDB 实例(本地或 Atlas) - 在本地网络上运行的 Mosquitto MQTT 代理 ### 后端与 AI 引擎 ``` git clone https://github.com/VitalGaze/EyeLink-v2.git cd EyeLink-v2 python -m venv .venv source .venv/bin/activate # Windows: .venv\Scripts\activate pip install -r requirements.txt # 复制并配置环境变量 cp .env.example .env # 编辑 .env:设置 MONGO_URI、JWT_SECRET、MQTT_BROKER、OPENROUTER_API_KEY uvicorn backend.main_api:app --host 0.0.0.0 --port 8000 ``` ### 临床仪表板 ``` cd dashboard npm install npm run build # production build npm run dev # development server — http://localhost:5173 ``` 默认管理员凭据在首次运行初始化时设置在 `.env` 文件中。 ### ESP32 固件 1. 在 Arduino IDE 中打开 `firmware/ESP32_Firmware.ino`。 2. 在文件顶部的配置块中设置 `WIFI_SSID`、`WIFI_PASSWORD` 和 `MQTT_BROKER_IP`。 3. 选择开发板:**ESP32 Dev Module**,端口:分配的 COM 端口。 4. 上传。 ## 配置参考 所有运行时参数在 `config.py` 中定义。关键值如下: | 参数 | 默认值 | 描述 | |---|---|---| | `BLINK_THRESHOLD` | 0.25 | EAR 值低于此阈值时帧被判定为闭合 | | `LSTM_WINDOW_FRAMES` | 30 | 馈送至 LSTM 模型的滑动窗口长度 | | `COMMAND_COOLDOWN_SEC` | 2.0 | 接受命令之间的最小间隔 | | `NO_BLINK_ALERT_SEC` | 120 | 触发紧急通知的无活动阈值 | | `CAMERA_INDEX` | 0 | OpenCV 捕获设备索引 | | `SERIAL_PORT` | COM7 | Arduino 串口(仅限旧版 v1.0 硬件) | | `MQTT_QOS` | 1 | MQTT 服务质量等级 | ## 眨眼命令协议 | 眨眼序列 | 动作 | |---|---| | 1 次眨眼 | 导航 — 下一项 | | 2 次眨眼 | 确认 — 选择当前项 | | 3 次及以上眨眼 | 导航 — 上一项 / 返回 | 检测窗口:0.8 秒。命令后冷却时间:2.0 秒。 ## 团队 | 姓名 | 角色 | |---|---| | Youssef Mahmoud Saber | 团队负责人,系统集成 | | Hisham Rabe Abdrahman | 人工智能与深度学习 | | Mohamed Walaa Ahmed | 云后端与物联网基础设施 | | Marez Rafaat Lotfy | 前端开发与 UI/UX | **学术导师:** Dr. Noha Hussein Aly Emam Youssef ## 学术背景与竞赛目标 EyeLink v2.0 作为毕业设计开发,旨在部分满足 Elsewedy University of Technology (SUT) 计算机科学学士学位要求。 本系统将提交至以下竞赛评估: - **ITC-EGYPT 2026** — 开罗信息技术竞赛 - **ARIIF 2026** — 防空研究与创新论坛 竞赛提交的预期性能阈值:分类准确率高于 97%,端到端命令延迟低于 150 毫秒。 ## 许可证 本项目在 Elsew University of Technology 的监督下用于学术和研究目的。开发团队及机构保留所有权利。如需许可查询,请联系团队负责人。 *Elsewedy University of Technology — 计算机科学学院 — 软件工程系 — 2025/2026*
标签:ALS, Apex, DLL 劫持, Face Mesh, LSTM, MediaPipe, ONNX Runtime, TTS 语音合成, 人机介面, 低功耗, 低延迟, 低成本, 医疗辅助, 单片微控制器, 即时通讯, 多模态交互, 大语言模型, 实时系统, 居家自动化, 开源架构, 摄像头, 无障碍技术, 智慧家庭, 智能家居, 机器学习, 深度学习, 物联网, 环境控制, 眨眼识别, 眼部控制, 神经网路, 自然语言生成, 行动障碍, 视讯分析, 计算机视觉, 误判率, 辅助沟通, 辅助科技, 边缘到云, 边缘计算, 逆向工具, 锁闭症候群