1. 项目背景与核心价值心电信号ECG作为人体最重要的生理指标之一不仅反映心脏活动状态近年来的研究表明其与情绪状态存在显著相关性。传统情绪识别主要依赖面部表情或语音分析但这些方法易受主观伪装影响。而ECG信号作为自主神经系统活动的直接体现为情绪识别提供了更客观的生理依据。这个项目的创新点在于首次将ResNet-18架构应用于ECG情绪分类任务采用短时傅里叶变换STFT将1D ECG信号转换为2D时频图在自建数据集上实现了愤怒、悲伤、快乐和平静四种情绪的自动分类关键发现情绪变化会导致ECG信号的RR间期、T波幅度等特征发生规律性改变这些微变化通过深度学习模型可以有效捕捉。2. 数据处理与特征工程2.1 数据采集规范我们使用Biopac MP150系统采集了120名受试者男女各半年龄20-35岁的ECG数据采样率1kHz。情绪诱发采用标准化方法愤怒观看冲突性视频片段快乐喜剧电影精选悲伤悲剧电影片段平静自然风景视频每段ECG记录持续5分钟实验前后用PANAS量表验证情绪状态。2.2 信号预处理流程% 带通滤波 (0.5-40Hz) [b,a] butter(4, [0.5 40]/(1000/2)); filtered_ecg filtfilt(b,a,raw_ecg); % 去除基线漂移 windowSize 1000; baseline movmean(filtered_ecg, windowSize); ecg_corrected filtered_ecg - baseline; % R峰检测 [~,locs] findpeaks(ecg_corrected,MinPeakHeight,0.5,MinPeakDistance,200);2.3 时频图转换采用STFT将1D信号转为2D时频图窗函数汉明窗窗长256个采样点重叠128个采样点频率分辨率3.9Hzfigure spectrogram(ecg_segment, hamming(256), 128, 256, 1000, yaxis) set(gca,xtick,[],ytick,[]) saveas(gcf,spectrogram.png)3. 深度学习模型构建3.1 ResNet-18架构改造原始ResNet-18输入层调整为接收单通道时频图输出层改为4分类layers [ imageInputLayer([64 64 1]) % 初始卷积层 convolution2dLayer(7,64,Stride,2,Padding,same) batchNormalizationLayer reluLayer maxPooling2dLayer(3,Stride,2,Padding,same) % 残差块组 residualBlock(64,64,1) residualBlock(64,64,1) residualBlock(64,128,2) residualBlock(128,128,1) residualBlock(128,256,2) residualBlock(256,256,1) residualBlock(256,512,2) residualBlock(512,512,1) % 分类层 globalAveragePooling2dLayer fullyConnectedLayer(4) softmaxLayer classificationLayer];3.2 模型训练策略优化器Adam (初始学习率0.001)批量大小32迭代次数50数据增强随机水平翻转±5%尺度变化类别权重处理样本不均衡4. 实验结果与分析4.1 性能指标对比方法准确率精确率召回率F1分数SVM68.2%67.5%68.1%67.8%LSTM72.4%71.9%72.2%72.0%本文方法83.7%84.1%83.5%83.8%4.2 混淆矩阵分析快乐情绪最容易识别准确率89%愤怒与悲伤易混淆错误率18%这与自主神经反应模式的理论一致。5. 工程实现要点5.1 实时处理方案% 实时情绪检测流程 while true ecg_segment getLatestECG(5); % 获取5秒数据 spec createSpectrogram(ecg_segment); emotion classify(net, spec); updateDashboard(emotion); pause(0.1) end5.2 模型轻量化部署使用TensorRT加速推理量化到FP16精度在Jetson Nano上实现15fps处理速度6. 常见问题解决R峰检测失败症状漏检或误检高峰解决方案动态调整MinPeakHeight阈值threshold 0.4 * max(ecg_segment);过拟合处理现象训练准确率95%但验证集仅60%应对增加Dropout层(rate0.5)早停机制跨设备泛化性差对策采用z-score标准化代替固定阈值ecg_normalized (ecg - mean(ecg))/std(ecg);7. 应用场景扩展该技术已在三个领域成功应用远程心理治疗实时监测患者情绪波动智能车载系统检测驾驶员愤怒状态触发安全机制教育评估分析学生学习时的专注度变化实际部署中发现不同人种的ECG情绪特征存在差异建议针对目标人群进行微调训练。我在医疗级设备上测试时将采样率提升到2kHz后愤怒状态的识别准确率提高了6.2个百分点。