精確度模式
INFO
注意: 精確度模式目前僅適用於網頁 SDK(JavaScript、React、Vue)。
精確度模式允許您控制測量準確度和設備性能要求的權衡。Vitals™ SDK 提供兩種精確度模式:放鬆和嚴格,每個模式都針對不同的使用案例和設備能力進行優化。
概述
精確度模式會影響生命體徵測量過程的幾個方面:
- 數據收集持續時間:掃描期間收集數據的時間長度
- 人臉檢測要求:幀率和檢測頻率要求
- 感興趣區域 (ROI):分析哪些面部和身體區域
- 數據解析度:像素數據類型和採樣率
- 自動模式切換:基於設備性能的動態調整
INFO
服務器版本和遺留模式: 如果未設置精確度模式,SDK 會回退到遺留模式,該模式連接到 V1 服務器 (NyanCat 後端)。如果將精確度模式設置為放鬆或嚴格,則使用 V2 服務器 (CrimsonLion 後端)。
精確度模式類型
遺留模式
遺留模式是未明確設置精確度模式時的回退模式。它使用默認設置以實現向後兼容,並連接到 V1 服務器。
關鍵特點:
- 標準數據收集和分析持續時間
- 默認幀率要求
- 分析基本面部區域
- 較低解析度的像素數據
- 與舊版 SDK 兼容
適用於:
- 尚未更新為指定精確度模式的現有應用
- 基本兼容性需求
- 當不需要特定精確度調整時
放鬆模式
放鬆模式優先考慮低端設備的兼容性和性能。它使用更寬鬆的掃描條件,適用於:
- 處理能力有限的移動電話
- 光照條件變化的環境
- 不需要高精度的快速評估
- 電池受限的設備
關鍵特點:
- 較長的數據收集持續時間(25 秒)
- 較短的數據分析持續時間(5 秒)
- 較低的最小幀率要求(10-15 FPS)
- 較少的面部區域被分析
- 較低解析度的像素數據
- 對次優條件更寬容
嚴格模式
嚴格模式通過要求最佳掃描條件來最大化測量準確度。它提供最高精度的測量,但對設備要求更高:
- 高性能設備(平板電腦、桌面電腦)
- 良好控制的環境
- 醫療或研究應用
- 當需要最大準確度時
關鍵特點:
- 較短的數據收集持續時間(18 秒)
- 較長的數據分析持續時間(10 秒)
- 較高的最小幀率要求(25 FPS)
- 更多面部區域被分析(臉部、胸部、臉頰、下巴、眉心)
- 較高解析度的像素數據
- 需要穩定、最佳條件
使用方法
設定精確度模式
在創建生命體徵相機時設定精確度模式。如果未指定精確度模式,SDK 將回退到使用 V1 服務器的遺留模式。
typescript
import { createVitalSignCamera, PrecisionMode } from 'ts-vital-sign-camera';
const camera = createVitalSignCamera({
isActive: true,
sdkCredentials: {
apiKey: "your-api-key",
userId: "your-user-id"
},
userInfo: {
age: 30,
gender: Gender.Male
},
precisionMode: PrecisionMode.relaxed // 或 PrecisionMode.strict,或省略以使用遺留模式
});動態模式切換
您可以在運行時更改精確度模式:
typescript
// 切換到嚴格模式以獲得更高準確度
camera.precisionMode = PrecisionMode.strict;
// 切換到放鬆模式以獲得更好性能
camera.precisionMode = PrecisionMode.relaxed;自動模式調整
SDK 會在設備性能不足時自動從嚴格模式切換到放鬆模式:
typescript
camera.onPrecisionModeWillUpdate = (event) => {
console.log(`精確度模式將從 ${event.currentMode} 更改為 ${event.newMode}`);
console.log(`原因:${event.reason}`);
// 允許或延遲自動切換
if (event.reason === 'lowFrameRate') {
// 詢問用戶確認或延遲切換
event.response('wait'); // 等待更好條件
// 或 event.response('proceed'); // 繼續切換
}
};
camera.onPrecisionModeUpdated = (event) => {
console.log(`精確度模式已從 ${event.previousMode} 更改為 ${event.currentMode}`);
console.log(`原因:${event.reason}`);
// 更新 UI 以反映新模式
updateUIMode(event.currentMode);
};性能注意事項
設備要求
| 設備類型 | 推薦模式 | 最小幀率 | 支持解析度 |
|---|---|---|---|
| 移動電話 | 放鬆 | 10 FPS | 480x360 |
| 平板電腦 | 放鬆/嚴格 | 15-25 FPS | 1280x720 |
| 桌面電腦 | 嚴格 | 25 FPS | 1920x1080 |
電池影響
- 放鬆模式:較低功耗,適用於電池供電設備
- 嚴格模式:較高功耗,由於增加的處理和高解析度
網路使用
- 放鬆模式:較小的數據負載,更快的傳輸
- 嚴格模式:較大的數據負載,由於較高解析度的像素數據
最佳實踐
選擇正確模式
從放鬆模式開始以獲得廣泛兼容性
在以下情況使用嚴格模式:
- 設備性能允許時
- 需要最大準確度時
- 環境條件最佳時
- 用戶保持靜止且光照良好
監控性能並允許自動切換
提供用戶控制以根據偏好手動調整模式
遺留模式(未設置精確度模式時)使用 V1 服務器以實現向後兼容,但與 V2 相比可能功能有限
處理模式更改
typescript
function handlePrecisionModeChange(newMode: PrecisionMode) {
// 更新 UI 指示器
updateModeIndicator(newMode);
// 根據模式調整掃描說明
if (newMode === PrecisionMode.strict) {
showStrictModeInstructions();
} else {
showRelaxedModeInstructions();
}
// 記錄分析
analytics.track('precision_mode_changed', { mode: newMode });
}錯誤處理
typescript
camera.onError = (error) => {
if (error.message.includes('frame rate')) {
// 幀率對於當前模式來說太低
console.log('考慮切換到放鬆模式以獲得更好兼容性');
// 可選自動切換到放鬆模式
if (camera.precisionMode === PrecisionMode.strict) {
camera.precisionMode = PrecisionMode.relaxed;
}
}
};故障排除
常見問題
嚴格模式的幀率太低
- 解決方案:切換到放鬆模式或改善光照/相機設置
- 自動切換應該處理這個問題,但手動干預可能需要
放鬆模式下的測量結果不一致
- 解決方案:如果設備能力允許,請嘗試嚴格模式
- 檢查環境條件(光照、運動、距離)
嚴格模式下的應用性能下降
- 解決方案:切換到放鬆模式或優化設備設置
- 考慮移動設備的電池壽命影響
性能監控
監控關鍵指標以確定最佳模式:
typescript
camera.onVideoFrameProcessed = (event) => {
const frameRate = event.frameInfo?.frameRate;
const mode = camera.precisionMode;
// 記錄性能指標
console.log(`幀率:${frameRate} FPS,模式:${mode}`);
// 如果性能邊緣,則發出警報
if (mode === PrecisionMode.strict && frameRate < 25) {
console.warn('幀率低於嚴格模式要求');
}
};API 參考
PrecisionMode 枚舉
typescript
enum PrecisionMode {
relaxed = 'relaxed', // 更寬容,更好性能
strict = 'strict' // 更高準確度,更嚴格要求
}事件
onPrecisionModeWillUpdate:在自動模式更改之前觸發(允許干預)onPrecisionModeUpdated:在模式更改後觸發(用於 UI 更新)
屬性
precisionMode:當前精確度模式(獲取/設置)PrecisionMode:模式值的枚舉
結論
精確度模式提供了一種強大的方式來平衡測量準確度和設備性能以及用戶體驗。通過理解放鬆和嚴格模式之間的權衡,您可以針對不同使用案例和設備能力優化您的應用程序。自動模式切換功能確保在各種條件下可靠運行,同時保持最佳可能的準確度。