1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
| class IMSCognitiveLoadAssessment: """ IMS 认知负荷评估模块 基于飞行员研究发现的非接触式实现 """ def __init__(self): self.features = { 'rppg_hrv': { 'source': 'DMS摄像头 rPPG', 'features': ['Mean_NN', 'RMSSD', 'W'], 'equivalent_to': 'ECG HRV', 'accuracy_loss': '约5-10%(rPPG vs ECG)', }, 'pupil_diameter': { 'source': 'DMS摄像头', 'features': ['avg_pupil_diameter', 'pupil_variability'], 'equivalent_to': '眼动仪瞳孔', 'accuracy_loss': '约3-5%(摄像头 vs 眼动仪)', }, 'blink_pattern': { 'source': 'DMS摄像头', 'features': ['blink_rate', 'blink_duration', 'ELA'], 'equivalent_to': '无直接对应(补充特征)', 'accuracy_loss': '无损失', }, 'head_motion': { 'source': 'DMS摄像头 3D pose', 'features': ['motion_frequency', 'micro_tremor'], 'equivalent_to': '无直接对应', 'accuracy_loss': '无损失', }, 'steering_grip': { 'source': '方向盘传感器', 'features': ['grip_force', 'force_variability'], 'equivalent_to': '无直接对应', 'accuracy_loss': '无损失', }, } def assess_cognitive_load(self, sensor_data: dict) -> dict: """ 评估认知负荷等级 Returns: { 'load_level': 'low' | 'moderate' | 'overload', 'confidence': float, 'risk': str, 'recommendation': str, } """ hrv = sensor_data.get('hrv_features', {}) pupil = sensor_data.get('pupil_features', {}) blink = sensor_data.get('blink_features', {}) hrv_score = self._compute_hrv_score(hrv) pupil_score = self._compute_pupil_score(pupil) blink_score = self._compute_blink_score(blink) total_score = (0.35 * hrv_score + 0.30 * pupil_score + 0.20 * blink_score + 0.15 * sensor_data.get('head_motion_score', 0)) if total_score < 0.3: return { 'load_level': 'low', 'confidence': 0.75, 'risk': '高速催眠风险', 'recommendation': '建议增加交互或播放音乐', } elif total_score < 0.7: return { 'load_level': 'moderate', 'confidence': 0.80, 'risk': '正常', 'recommendation': '继续驾驶', } else: return { 'load_level': 'overload', 'confidence': 0.78, 'risk': '认知过载,事故风险增加', 'recommendation': '简化HUD + 降低音频 + 建议休息', }
|