精度模式
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:模式值的枚举
结论
精度模式提供了一种强大的方式来平衡测量准确度和设备性能以及用户体验。通过理解放松和严格模式之间的权衡,您可以针对不同使用案例和设备能力优化您的应用程序。自动模式切换功能确保在各种条件下可靠运行,同时保持最佳可能的准确度。