本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页

基于 TinyML 的心电图分析仪

发布时间:2021-10-16
分享到:

基于 TinyML 的心电图分析仪

发布时间:2021-10-16
分享到:

该方案使用 nRF5340 DK 预测房颤、AV 阻滞 1 和正常心电图,概率>90%。

使用 Edge Impulse 软件开发了一个心电图分析仪,它具有以下功能:

•由Edge Impulse 提供支持的ECG Analyzer 将分析ECG 数据,而无需依赖互联网。

•与物联网设备相比,延迟最低

• 15Kb Rom - ECG Analyzing TinyML 模型可以在任何支持 TinyML 的微控制器上运行。

•该设备将分析心电图模式并分类为正常、心房颤动和一级心脏传导阻滞

库可移植到 nRF5340 DK

关于心电图和心力衰竭状况的基本医学术语:
在详细的技术工作之前,让我们先了解一下基本的医学术语。

在这个项目中,模型将分析 PR 间隔和 R 到 R 波间隔。

房颤案例:

一级心脏传导阻滞:

新方法 :
为了提高模型预测的准确性,我从过滤后的 ECG 数据中创建了一个单独的波形。

新波形:

  • R-R间隔
  • PR间隔

训练数据集:

TinyML 模型的结果:

在 nRF5340 DK 中导入“ECG 库”要遵循的步骤:
ECG 分析器库是一个 C 库,具有所有预定义的信号处理功能,可将滤波后的 ECG 波拆分为 RR 波和 PR 波。

打开 nRF Connect 并打开工具链管理器

安装并打开 nRF Connect SDK IDE v1.5.0

开IDE,我们需要导入现有的“NRF连接SDK项目”。

我选择了“Hello world”项目,因为 nRF5340 DK 将通过数据转发器与“Edge Impulse”通信。

Hello world 项目将通过 COM 端口打印语句/数据,这足以建立 nRF5340 DK 与 Edge Impulse 之间的通信。

选择项目目录选择选项并跟踪到以下路径

用户\ncs\v1.5.0\zephyr\samples\hello_world

跟踪到以下路径;

C:\Users\ncs\v1.5.0\zephyr\boards\arm\nrf5340dk_nrf5340

最终的导入项目配置如下所示。

将“hello world”项目中的 main.c 复制并替换为包含在 Github 链接下方的 main.c 文件中的 ECGlib。

心电模拟模式:
带有 ECG Analyzer 库的 nRF5340 DK 将在模拟模式下工作,可以使用来自任何开源平台或通过 AD8232 传感器的 ECG 数据。数据采集​​应粘贴在 main.c 文件中的“simulated_ecg_data”缓冲区中。干扰时间为5ms。

布尔值应设置为 1。

main.c 文件(第 110 行)中提供了不同的 ECG 条件数据。取消注释必要条件数据缓冲区并构建代码。

从下面的线,我们可以看到正常、心房颤动和 AVblock 1 病例数据缓冲区可用。

插入 nRF5340 DK:
由于它处于 nRF5340 的模拟模式,因此不需要引脚连接。

连接 nRF5340 DK 板后,构建并烧写代码。

闪烁后,在串行终端中可视化数据。我使用 Arduino ide 查看来自 COM 端口 7 的实时数据。

连接到边缘脉冲:
打开命令窗口

输入“edge-impulse-data-forwarder”并确保nRF5340 DK连接到系统。然后它将连接到边缘脉冲。

连接后,为设备命名,我给了 nRF5340 和三个信号名称,分别为“过滤心电图”、“RR 间隔”和“PR 间隔”。

然后我们可以注意到板连接到边缘脉冲。它将在数据采集部分显示设备名称。

由于 ECG Analyzer TinyML 已经创建,我将跳到测试部分。

达到的准确率为 97%。

结果:
使用 Edge Impulse 创建的 TinyML 模型可以轻松写入 nRF5340 DK 板,并在仿真模式 (=ON) 下分析心脏状况。

该方案中所用到的一些代码

如果您对此项目有任何想法、意见或问题,请在下方留言。

加入微信技术交流群

技术交流,职业进阶

关注与非网服务号

获取电子工程师福利

加入电路城 QQ 交流群

与技术大牛交朋友

讨论