基於 YOLO Pose Estimation 的即時打架偵測系統
中文版本 | English Version
- 學校: 臺北市立士林高級商業職業學校
- 類型: 高職專題製作
- 技術: 電腦視覺 + 深度學習
- 開發語言: Python
- ✅ 即時人體姿態偵測 - 使用 YOLOv8n Pose 模型
- ✅ 打架行為識別 - 基於手臂重疊度算法
- ✅ 視覺化介面 - 骨架顯示 + 即時狀態
- ✅ 警報系統 - 聲音提醒 + 視覺警示
- ✅ 效能監控 - FPS 顯示 + 統計資料
- 姿態擷取: 偵測人體 17 個關鍵點
- 互動分析: 計算多人間手臂重疊程度
- 行為判定: 超過閾值觸發警報
- 持續追蹤: 3 秒警報持續時間
- 作業系統: Windows 10/11, macOS, Linux
- Python: 3.8 或以上版本
- 硬體: 支援攝像頭的電腦
# 安裝必要套件
pip install ultralytics opencv-python numpy pygamepip install ultralytics opencv-python numpy pygame# 開啟執行檔
fight_detection_system.exeq: 退出系統r: 重置統計數據
- 距離閾值: 手臂關鍵點距離 < 50 像素
- 重疊數量: 至少 2 個關鍵點重疊
- 平均距離: 手臂平均距離 < 80 像素
- 即時影像: 攝像頭畫面 + 骨架覆蓋
- 狀態欄: 偵測狀態、FPS、人數統計
- 警報區: 紅色閃爍提醒
- 統計資料: 運行時間、總警報次數
- 🟢 綠色骨架: 正常狀態
- 🔴 紅色警示: 偵測到打架
- 📊 半透明面板: 系統資訊顯示
YOLOv8n Pose → 姿態估計 → 特徵提取 → 行為分析 → 警報觸發
- 影像輸入 → 攝像頭擷取
- 姿態偵測 → YOLO 模型推論
- 特徵計算 → 關鍵點距離分析
- 行為判定 → 重疊度評估
- 結果輸出 → 視覺化 + 警報
- 影像縮放 (640px 寬度)
- 緩衝區管理 (減少延遲)
- 多執行緒音效播放
- FPS 平滑計算
A: 檢查攝像頭是否被其他程式佔用。
A: 確認系統音量設定,或檢查 pygame 是否正確安裝。
- CPU: AMD Ryzen 5 3600
- RAM: 8GB DDR4
- 攝像頭: 720p @ 30fps
- FPS: 6~7
- Email: [email protected]
- GitHub: @slhs1121505
本專題採用 MIT 授權條款 - 詳見 LICENSE 檔案
- YOLOv8n: Ultralytics 團隊提供的輕量化姿態估計模型
- OpenCV: 強大的電腦視覺函式庫
- 指導老師: 專業指導與建議
- 同學們: 測試與回饋支持
⭐ 如果這個專題對你有幫助,請給個 Star!
README.md 由 Claude Sonnet 4 協助撰寫