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 -dWindows 用户先安装 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 的传统输出。
INGEST_TOKEN=与服务器相同的值 python3 capture_mac.py \
--server http://focus-eye-server:18080 --device 0 --fps 5首次启动需要允许终端访问摄像头。页面显示画面后,面对显示器点击“校准屏幕方向”,再看向常用桌面工作区域点击“校准工作区域”。
服务器运行在同一台 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 商业许可。