1. 心音信号分类项目概述
去年在医疗AI领域摸爬滚打时,偶然接触到心音信号(Phonocardiogram, PCG)分类这个细分方向。不同于常规的ECG分析,PCG信号蕴含着心脏瓣膜开闭、血流动力学等独特信息,但公开可用的成熟方案却少得可怜。经过两个月的反复试错,终于搭建出一套从原始信号处理到分类模型部署的完整pipeline,过程中那些"血泪教训"和最终可复现的代码,今天就来个彻底大公开。
这个项目最核心的价值在于:提供了一套开箱即用的PCG处理方案,包含信号去噪、特征提取、数据增强等关键环节的优化实现。针对PCG信号特有的低频干扰、个体差异大等问题,我们融合了传统数字信号处理技巧和深度学习方案,在PhysioNet Challenge 2016数据集上实现了93.2%的AUC成绩。更重要的是,所有代码都经过工业级封装,GitHub仓库里连Dockerfile都准备好了,五分钟就能跑起完整实验。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心挑战与技术选型
2.1 PCG信号的独特性
心音信号与ECG的最大区别在于其非平稳特性。一次完整的心动周期包含S1(二尖瓣关闭)、收缩期、S2(主动脉瓣关闭)、舒张期四个阶段,每个阶段的声学特征差异极大。我们采集的原始信号往往存在三类典型噪声:
- 体动伪影(0.5-2Hz的高幅度干扰)
- 呼吸噪声(0.1-0.3Hz的基线漂移)
- 电子设备噪声(50/60Hz工频干扰)
python复制# 典型PCG信号频谱特征示例
import pywt
coefficients, _ = pywt.cwt(raw_signal, scales=np.arange(1,128), wavelet='mexh')
plt.imshow(abs(coefficients), aspect='auto')
注意:直接用STFT处理PCG效果往往不佳,时频分辨率难以兼顾。我们最终选用的是连续小波变换(CWT),墨西哥帽小波在时频域的适应性表现最佳。
2.2 数据处理流水线设计
整个预处理流程分为四级降噪:
- 硬件级滤波:先过4阶巴特沃斯带通滤波器(25-400Hz),这个范围覆盖了S1/S2的主要能量区
- 自适应陷波:用LMS算法动态消除工频干扰
- 形态学滤波:对信号
