给听诊器装上「会算的耳朵」:心肺音 AI 边缘部署
有工程师在后台问:模型在电脑上跑得好好的,一烧进听诊器就卡,先砍模型还是换芯片?这个问题被问过很多次。先说结论:心肺音 AI 的胜负,不在模型精度,在 512 KB 内存和几毫安电流之间。模型不是越小越好,是"刚好装得下、还听得清"。
我手里这只电子听诊器,外壳和普通听诊器差不多,拆开是典型配置:80 MHz 级 MCU、512 KB SRAM、2 MB Flash、16 位 ADC 按 4 kHz 采一通道。实验室里那个"98 分"的模型,一进这个预算表,就开始自己付电费了。
先算一笔账:4 kHz 就够
心肺音不是音乐。心音的主要能量集中在 20–600 Hz,肺音高一些,约 50–2000 Hz;按奈奎斯特,采样率高于 4 kHz 就能覆盖 2 kHz 上限。用 44.1 kHz 采心肺音,多出来的高频里主要是环境噪声和麦克风自噪。
数据率的账很直观:单通道 16 bit、4 kHz,就是 64 kbit/s,也就是 8 KB/s;1 分钟 480 KB,10 分钟 4.8 MB。同样 10 分钟的 44.1 kHz/16 bit 录音是 52.9 MB,差 11 倍。这 11 倍不只是存储,还是传输时间、射频开机时长和电。
拿手机录一段心音喂模型,模型学的其实是手机麦克风;换只听诊器,准确率就掉。
模型不是越小越好,是乘加越少越好
边缘端真正吃紧的是乘加次数,不是参数量。一个参数很少、但每层都在全分辨率长序列上卷积的模型,照样跑不动。
一维卷积第一层用大核扫原始波形,能抓到周期结构,但乘加数高;改成深度可分离卷积,公开论文口径可把乘加数降到约 1/8–1/9。另一条路是先分帧、抽包络,把 4 kHz 降到几十 Hz 再进小网络,代价是丢了帧内相位。
算一笔硬账:80 MHz 的 Cortex-M4F,按每周期 1 次 INT8 乘加估算,上限是 80 MMAC/s;一个 20 MMAC 的模型,单次推理理论下限 0.25 s,按 30% 利用率算约 0.8 s,还没算前后处理和蓝牙。参数量是给别人看的,乘加数才是给电池看的。
INT8 省下的 4 倍,亏在哪
FP32 权重每个 4 字节,INT8 每个 1 字节,模型体积、Flash 读取带宽、SRAM 占用理论都降到 1/4;在带 DSP 的 MCU 上,INT8 还有 2–4 倍的乘加加速。这是边缘部署性价比最高的动作,也最容易"静默掉点"。
公开文献与厂商材料报告,INT8 量化后精度损失在 1 个百分点以内,但这是行业口径,必须用自家校准集复测。掉点通常不发生在正常心音上,而发生在低信噪比、杂音、摩擦音这些少数类:量化噪声把本来就很小的病理成分埋掉了。工程上要用每通道缩放,并拿一批含噪声的校准集做量化后复测。
卡住的是内存和电
算力可以等,内存不能借。推理时每层的输入输出缓冲、权重、栈都要落在 SRAM 里;权重放 Flash 能省 SRAM,但每次读取都要花时间和电。
电池这边更直接。CR2032 标称 220 mAh、3 V,能量约 0.66 Wh;负载 10 mW 时理论续航约 66 h,20 mW 就只剩 33 h。BLE 连续传 64 kbit/s 的音频,射频占空比和协议开销都不低;很多"智能听诊器"不是算不动,是传不起。反过来,本地推理把 8 KB/s 的流变成"每 2 秒一个结果",射频可以大部分时间睡觉。
边缘端的预算表上,毫安比参数量更硬。
数据与麦克风:换只听诊器就崩
心肺音模型的泛化,一半输在数据,一半输在麦克风。公开数据集能让你把网络跑通,但救不了"换一只听诊器就崩"——不同麦克风的频响、贴肤压力、腔体结构,都会改变同一颗心脏的声音。
PhysioNet/CinC Challenge 2016 心音训练集约 3,240 段录音、1,296 名受试者;ICBHI 2017 肺音数据集约 920 段录音、126 名受试者、6,898 个呼吸周期。(公开数据集口径,引用前复核版本。)两个集子加起来仍以成人为主,儿科、基层嘈杂环境、不同体位覆盖有限。
工程上先在公开集预训练,再用自家设备录几百条微调,并按设备、按点位做留一验证。反例:同一只听诊器录 200 条,随机切分,准确率 97%;换一只同型号新机,掉到 80%——它把这只麦克风的音色当成了特征。
耳端、手机、云端:选数据离开病人多远
不是所有场景都要把模型塞进听诊器。耳端胜在离线、低延迟、隐私;手机或网关胜在算力大一百倍、能显示波形、能升级;云端胜在能跑大模型和多模态,但要走网络、要传音频、要过合规。
一段 4 kHz/16 bit 音频是 64 kbit/s,BLE 有效吞吐通常只有几百 kbit/s,连续传会挤占连接间隔和功耗;本地推理只在出结果时发几十字节。本地延迟是采完 2 秒、算 0.1–1 秒,云端还要叠加网络往返和排队。音频属于敏感个人信息,能不离开设备就不离开。
部署形态不是技术偏好,是"数据愿意离开病人多远"。
验收:五项,缺一不可
医院不看你的 F1,看它凌晨三点会不会误报。边缘端验收要把采集、推理、提示当成一个端到端产品来验。
建议阈值:从贴上去到出结果不超过 1 s;连续工作 8 h,外壳温升在人手可长期接触的范围内;断网可用、重连后补传;用摩擦音、环境谈话、走路噪声做负样本,记录每小时误报次数;与医生听诊做双盲对照,至少 200 例、覆盖正常与至少两类异常。
任一项不过,先改产品,别改 PPT。模型的上限是准确率,产品的下限是误报率。
回到开头:先砍模型还是先换芯片?先看 RAM、电池和"数据愿不愿意离开病人"这三笔账,再谈模型结构,顺序就不会错。