## 系統架構總覽 ### 功能簡圖 ```mermaid graph LR A[視覺輸入] --> D[行為分析] B[聽覺輸入] --> D C[遊戲狀態] --> D D --> E[AI建議] ``` ---- ### 功能方塊圖 ![image](https://hackmd.io/_uploads/H1LXlTqGex.png) --- ### 檔案架構 ![Untitled 3_0](https://hackmd.io/_uploads/rkyE-aqzel.png) --- ### 輸入與輸出 :::info #### 輸入 <div style="text-align: left; font-size: 36px;"> 📹 視覺:人臉表情、肢體動作、撲克牌 🎤 聽覺:語音特徵、壓力指標 🎴 遊戲:手牌組合、歷史記錄 </div> ::: :::success #### 輸出 <div style="text-align: left; font-size: 36px;"> 📊 分析:自信度評分、虛張聲勢機率 💡 建議:即時策略推薦 </div> ::: --- ## MediaPipe 人臉與肢體分析 --- ### MediaPipe 簡介 ### 什麼是 MediaPipe? :::info <div style="text-align: center; font-size: 36px;"> Google 開發的機器學習框架 專注於即時感知管線 支援多種平台部署 </div> <div style="text-align: center; font-size: 36px;"> 核心優勢: ⚡ 即時性能(30+ FPS) 🎯 高準確度 💻 CPU 低負載 </div> ::: ---- ### Face Mesh - 468個關鍵點 ![face_mesh](https://hackmd.io/_uploads/H1TqAT9zxg.jpg) --- #### 關鍵區域 :::info <div style="text-align: left; font-size: 22px;"> 眼部:32個點(每隻眼睛16個點) 左眼:33, 7, 163, 144, 145, 153, 154, 155, 133, 173, 157, 158, 159, 160, 161, 246 右眼:362, 398, 384, 385, 386, 387, 388, 466, 263, 249, 390, 373, 374, 380, 381, 382 嘴部:40個點 外唇輪廓:61, 146, 91, 181, 84, 17, 314, 405, 320, 307, 375, 321, 308, 324, 318, 402, 317, 14, 87, 178, 88, 95 內唇輪廓:78, 191, 80, 81, 82, 13, 312, 311, 310, 415, 318, 324, 308 眉毛:10個點(每邊5個點) 左眉:46, 53, 52, 65, 55 右眉:285, 295, 282, 283, 276 </div> ::: --- ### 眼睛分析-1 <div style="text-align: left; font-size: 24px;"> left_eye_points = [33, 160, 158, 133, 153, 144] # 左眼關鍵點 right_eye_points = [362, 385, 387, 263, 373, 380] # 右眼關鍵點 </div> ![face_mesh_eyes](https://hackmd.io/_uploads/B1EcsCcfll.jpg) ---- ### 眼睛分析-2 :::info <div style="text-align: center; font-size: 26px;"> <strong>👁️ EAR (Eye Aspect Ratio) - 眼睛縱橫比</strong> </div> <div style="text-align: left; font-size: 22px;"> 定義: EAR = 眼睛垂直開合程度的數值 計算方式: EAR = 眼睛高度(平均) / 眼睛寬度 EAR範圍: ![image](https://hackmd.io/_uploads/HkGi3Aczlx.png) </div> ```python= # 使用 MediaPipe 的關鍵點 上眼瞼位置 = landmark[159].y # y 座標 下眼瞼位置 = landmark[145].y # y 座標 ``` <div style="text-align: center; font-size: 22px;"> 瞇眼 (EAR < 0.02) → 壓力 +30% 😣 睜大 (EAR > 0.045) → 壓力 +20% 😳 正常 (0.02~0.045) → 壓力 -10% 😌 </div> ::: --- ### 嘴巴分析-1 <div style="text-align: left; font-size: 24px;"> mouth_points = [13, 14, 78, 308, 82, 312] # 上下唇關鍵點 </div> ![face_mesh_mouth](https://hackmd.io/_uploads/ByNDzyoMle.jpg) ---- ### 嘴巴分析-2 :::info <div style="text-align: center; font-size: 26px;"> <strong>👄 MAR (Mouth Aspect Ratio) - 嘴巴縱橫比</strong> </div> <div style="text-align: left; font-size: 22px;"> 定義: MAR = 嘴巴垂直開合程度的數值 計算方式:MAR = 嘴巴高度 / 嘴巴寬度 MAR範圍: * 0.01-0.03:抿嘴狀態 * 0.03-0.08:正常狀態 * 0.08-0.15:張嘴狀態 </div> ```python= # 使用 MediaPipe 的關鍵點 上唇中心 = landmark[13].y # y 座標 下唇中心 = landmark[14].y # y 座標 ``` <div style="text-align: center; font-size: 22px;"> 抿嘴 (MAR < 0.03) → 壓力 +20% 😬 張嘴 (MAR > 0.08) → 壓力 +10% 😮 正常 (0.03~0.08) → 壓力不變 😐 </div> ::: ---- ### Pose Detection - 33個身體關鍵點 ![image](https://hackmd.io/_uploads/SJjfdJsMlx.png) --- ## 上半身重要節點 ```python= POSE_LANDMARKS = { 0: "鼻子", 11: "左肩", 12: "右肩", 13: "左肘", 14: "右肘", 15: "左腕", 16: "右腕", 23: "左髖", 24: "右髖" } ``` ### 肢體語言分析 肩膀角度:身體傾斜程度 手臂活動:緊張程度 身體重心:專注度 --- ### 音訊分析技術 #### 聲音特徵擷取: :::info #### 基本特徵 1. **音量 (RMS)** $$RMS = \sqrt{\frac{1}{N}\sum_{i=1}^{N}x_i^2}$$ 2. **基頻 (Pitch)** * 使用自相關函數 * 人聲範圍:80-400 Hz 3. **頻譜特徵** * MFCC (梅爾頻率倒譜係數) * 頻譜質心 ::: --- #### 壓力檢測原理 :::info #### 聲音壓力指標 | 特徵 | 正常狀態 | 壓力狀態 | | -------- | ---------- | ---------- | | 音調變化 | <50Hz | >100Hz | | 音量起伏 | 穩定 | 波動大 | | 語速 | 120-150字/分 | >180字/分 | | 顫抖度 | <0.1 | >0.3 | ::: --- #### 頻譜抓取 ![image](https://hackmd.io/_uploads/BylRIohMge.png) --- ## YOLOv8 撲克牌辨識 ### 核心優勢 🚀 速度快(即時檢測) 🎯 準確度高 📦 易於部署 ```mermaid graph TD A[輸入影像 640x640] --> B[Backbone] B --> C[CSPDarknet] C --> D[Neck] D --> E[PANet] E --> F[Head] F --> G[檢測輸出] ``` --- ### 關鍵組件 * ackbone: 特徵提取 * Neck: 特徵融合 * Head: 預測輸出 ![messageImage_1748784561545](https://hackmd.io/_uploads/rkpa9shfgg.jpg) --- #### 電腦效能不好,多個模組一起跑只有0.4FPS,且會互相影響,目前只能算是POC ![image](https://hackmd.io/_uploads/rJeon1jGgg.png) #### 停用一些模組FPS會比較好 ![messageImage_1748796656542](https://hackmd.io/_uploads/SJ3koj2zgl.jpg) --- ![2025-06-04 15_53_33-](https://hackmd.io/_uploads/r1KJh_TMll.jpg)