Skip to content

Repository files navigation

Focus Eye

C920 单人工位行为识别:拿起手机、手机使用、喝水、在岗、离岗和最长连续专注。

架构

  • macOS 或 Windows 采集端从 C920 读取 720p 画面并通过 HTTP 发送 JPEG。
  • 服务器用 YOLO26 ONNX 模型检测人物、手机、杯子和水瓶,MediaPipe 估算头部方向。
  • ONNX Runtime 负责 CPU 推理;YOLO26 的实际帧率取决于服务器硬件,需要在目标机器上重新测试。
  • FastAPI 提供状态机、SQLite 统计和可视化仪表盘。
  • 原始视频默认不落盘。

服务器启动

macOS 或 Linux:

cp .env.example .env
# 修改 .env 中的 INGEST_TOKEN
docker compose pull
docker compose up -d

Windows 用户先安装 Docker Desktop,然后在 PowerShell 中执行:

Copy-Item .env.example .env
# 修改 .env 中的 INGEST_TOKEN
docker compose pull
docker compose up -d

仪表盘默认地址:http://服务器地址:18080

服务器镜像已经包含 yolo26n.onnx,无需单独下载模型。镜像地址:

ghcr.io/nothing-129/focus-eye:latest

模型来源、导出命令和 SHA-256 记录在 models/README.md。程序同时兼容 YOLO26 默认的端到端输出和 end2end=False 的传统输出。

Mac 采集

INGEST_TOKEN=与服务器相同的值 python3 capture_mac.py \
  --server http://focus-eye-server:18080 --device 0 --fps 5

首次启动需要允许终端访问摄像头。页面显示画面后,面对显示器点击“校准屏幕方向”,再看向常用桌面工作区域点击“校准工作区域”。

Windows 采集

服务器运行在同一台 Windows 电脑时,在 PowerShell 中执行:

$env:INGEST_TOKEN="与服务器相同的值"
.\focus-eye-capture-windows-x64.exe --server http://127.0.0.1:18080 --device 0 --fps 5

服务器在局域网中的其他电脑上时,将 --server 改成服务器地址。无法打开摄像头时,请在 Windows 的“隐私和安全性 → 摄像头”中允许桌面应用访问摄像头,并尝试 --device 1--device 2

GitHub Actions 会在 Windows x64 环境生成单文件 EXE。也可以在 Windows 上自行构建:

py -3.11 -m venv .venv
.\.venv\Scripts\python -m pip install -r requirements-capture-windows.txt
.\.venv\Scripts\python -m PyInstaller --clean --onefile --name focus-eye-capture-windows-x64 capture_windows.py

构建结果位于 dist\focus-eye-capture-windows-x64.exe。页面显示画面后,同样需要校准屏幕方向和工作区域。

许可证

本项目采用 GNU Affero General Public License v3.0 开源。仓库和服务器镜像包含的 YOLO26 模型由 Ultralytics 按 AGPL-3.0 提供;不遵守 AGPL-3.0 的商业使用需要取得适用的 Ultralytics 商业许可。

About

Cross-platform workstation focus and behavior detection with YOLO26, MediaPipe, and FastAPI

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages