## 系統架構總覽
### 功能簡圖
```mermaid
graph LR
A[視覺輸入] --> D[行為分析]
B[聽覺輸入] --> D
C[遊戲狀態] --> D
D --> E[AI建議]
```
----
### 功能方塊圖

---
### 檔案架構

---
### 輸入與輸出
:::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個關鍵點

---
#### 關鍵區域
:::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>

----
### 眼睛分析-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範圍:

</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>

----
### 嘴巴分析-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個身體關鍵點

---
## 上半身重要節點
```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 |
:::
---
#### 頻譜抓取

---
## 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: 預測輸出

---
#### 電腦效能不好,多個模組一起跑只有0.4FPS,且會互相影響,目前只能算是POC

#### 停用一些模組FPS會比較好

---
