人工智能 (AI) 应用:一个异常肺呼吸声辅助诊断系统

关键词:深度学习、肺癌、多标签、轻量级模型设计、异常肺音、音频分类

近年来,流感对人类的危害不断增加,COVID-19疾病的迅速传播加剧了这一问题,导致大多数患者因呼吸系统异常而死亡。在这次流行病爆发之前,呼吸系统疾病已经成为社会主要死亡原因之一,包括“五大”呼吸系统疾病:哮喘、慢性阻塞性肺病(COPD)、急性下呼吸道感染、肺癌和结核病。COPD在全球致命疾病中排名第三,每年夺去320万人的生命,占所有慢性呼吸系统疾病死亡的81.7%。

随着肺部疾病的关注度日益增加,这些疾病的早期诊断也成为关注的焦点。通过听诊监测呼吸音是评估患者呼吸健康的传统方法,医生通常使用听诊器作为诊断肺部疾病和异常的临床工具。听诊器的主要目的是在给定时间框架内识别呼吸音的变化,如喘鸣、啰音和喘息

  • 啰音是短暂、爆炸性、非音乐性的声音,通常出现在有实质性肺部疾病的患者中,如肺炎、间质性肺纤维化(PF)和肺水肿。
  • 喘鸣是与气道疾病如哮喘和慢性阻塞性肺病(COPD)相关的异常呼吸音,其特征是高音调,持续时间超过80毫秒。喘鸣被描述为一种连续的哨声和嘶嘶声,叠加在正常呼吸上。喘鸣是由气道狭窄引起的,导致气流受。
  • 喘息是一种类似于喘鸣的连续气道声音,其特征是嘶嘶声和音乐般的音质。这种声音主要在吸气时听到,但有时也可能出现于呼气或两个阶段。与喘鸣不同,喘息是由喉部或支气管树的气流湍流引起的,通常与上呼吸道阻塞有关。

这些不同类型的呼吸音在诊断各种肺和气道疾病中起着至关重要的作用。使用听诊器听肺音是一种传统技术,也是专家对呼吸系统疾病的初步评估中最受欢迎的诊断方法。听诊的优点包括是一种非侵入性诊断方法和有效的辅助诊断工具,有助于诊断和区分各种呼吸系统疾病。然而,这种诊断方法也有局限性,如下所述:

  • 主观性强不同医生对呼吸音的解读存在差异,这取决于他们的经验、知识水平和听力能力。即使是经验丰富的医生,也可能对某些呼吸音产生不同的解读。这种主观性会导致诊断结果的不一致性,影响治疗方案的确定。
  • 易混淆不同异常呼吸音之间存在相似性,例如:哮喘的喘鸣音和声带功能障碍的喘鸣音: 这两种声音都表现为连续、高音调的哨声,波形呈正弦波,在时域上具有周期性。肺炎的爆裂音和肺纤维化的爆裂音: 这两种声音都表现为短暂、爆炸性、非音乐性的声音。这种相似性容易导致医生在初步诊断阶段产生混淆,难以准确区分不同的呼吸音,从而影响诊断结果和治疗方案的制定。
  • 效率低使用听诊器诊断需要医生花费大量时间和精力,尤其对于经验不足的医生来说,需要更长的时间才能准确识别和区分不同的呼吸音。在疫情或紧急情况下,需要快速评估大量患者的呼吸状况,传统方法难以满足这种需求。
  • 受环境因素影响周围环境噪音、患者的体位和呼吸状态等因素都会影响医生对呼吸音的判断。

1 方法

1.1 相关技术

1.1.1 可学习频谱前端模块

传统方法使用人工设计的特征变换,例如短时傅里叶变换(STFT)、梅尔频率倒谱系数(MFCC)和常数Q变换(CQT)等。这些变换存在固定的特征偏差,无法保证在所有任务中都获得最佳性能。

可学习频谱前端模块通过学习滤波器来提取特征,可以更好地适应不同的任务,并避免固定的特征偏差。

常见的可学习频谱前端模块包括:

  • 基于Mel滤波器组的滤波器学习: 将滤波器初始化在Mel尺度上,并与其他网络组件一起学习。
  • 基于原始波形的滤波器学习: 直接从原始波形中学习卷积滤波器,例如SincNET和EfficientLeaf。
  • 基于Gabor滤波器的滤波器学习: 使用Gabor滤波器,结合正弦信号和高斯核,实现时间-频率局部化。

1.1.2 深度学习架构

随着深度学习技术的发展,许多深度学习模型被应用于呼吸音识别任务,并取得了较好的性能。常见的深度学习架构包括:

  • 卷积神经网络(CNN): 用于提取时频特征,例如ResNet、CNN6和MobileNetV2等。
  • 循环神经网络(RNN): 用于处理序列数据,例如LSTM和GRU等。
  • 注意力机制: 用于捕捉时频特征之间的关系,例如Transformer和CSRA等。

预训练模型的使用可以弥补训练样本不足的问题,并提高模型性能。轻量级模型的设计可以降低模型复杂度,方便部署到便携式设备上。

1.2 数据集

本研究使用了在国际生物医学健康信息学会议(ICBHI 2017)上组织好的呼吸音数据库。ICBHI数据集包含6,898个呼吸周期,总计约5.5小时,并正式分为训练集(60%)和测试集(40%)。值得注意的是,在训练集和测试集的分割中,两个数据集之间的患者数据不重叠。每个呼吸周期被标记为以下四类之一:正常、啰音、喘鸣或啰音&喘鸣。训练集包含来自79名患者的539个记录,包括1,215个啰音周期、501个喘鸣周期、363个啰音&喘鸣周期和2,063个正常呼吸周期。类似地,测试集包括来自49名患者的381个记录,总计649个啰音周期、385个喘鸣周期、143个啰音&喘鸣周期和1,579个正常呼吸周期。

链接:

https://github.com/Maheswara1/ICBHI-Respiratory-Challenge-2017-dataset.

1.3 实验流程

  • 数据收集和划分:将数据集按照患者进行划分,分为训练集、验证集和测试集。
  • 特征提取:使用可学习的频谱前端模块或直接将音频信号转换为特征谱图。
  • 数据增强:使用随机改变音频的速度和音调等方法进行数据增强。
  • 模型设计:选择轻量级模型进行训练,并对分类器结构进行调整优化。
  • 多标签学习:将类别标签转换为多标签形式,并使用二分类交叉熵损失函数进行训练。
  • 多头注意力机制:在分类器中使用多头注意力机制,提高模型对时频特征的提取能力。
  • 模型评估:使用Score、Specificity和Sensitivity等指标评估模型性能。

1.4 数据预处理

1.4.1 采样率统一:将所有音频录音的采样率统一为16 kHz,方便后续处理和模型训练。

1.4.2 时长统一:由于每个患者的呼吸周期时长不同,使用循环填充将所有呼吸周期的时长扩展到8秒,保证模型输入的一致性。

1.4.3 特征提取

  • 可学习的频谱前端模块: 如果使用可学习的频谱前端模块,则直接提取特征。
  • 梅尔谱图: 将音频信号转换为梅尔谱图,使用64个Mel滤波器,窗口大小为1024,步长为512,最小频率为50 Hz,最大频率为2000 Hz。梅尔谱图的尺寸为(64, 256)。

1.4.4 数据增强

  • 随机改变速度和音调: 如果使用可学习的频谱前端模块,则对音频信号进行随机改变速度和音调,增加数据多样性。
  • 时间掩码和频率掩码: 对梅尔谱图进行时间掩码和频率掩码,模拟真实世界中的噪声和干扰,提高模型的鲁棒性。

1.4.5 标签转换:将类别标签转换为多标签形式,例如将“爆裂音&喘鸣音”转换为“爆裂音”和“喘鸣音”。

1.5 Multi-breath模型

1.5.1 特征提取器

  • 可学习的频谱前端模块: 可以使用EfficientLeaf等可学习频谱前端模块,学习滤波器并提取音频特征。
  • 梅尔谱图: 将音频信号转换为梅尔谱图,提取时间-频率特征。

1.5.2 多标签学习

  • 将类别标签转换为多标签形式,每个呼吸周期可以同时属于多个类别。
  • 使用二分类交叉熵损失函数进行训练,每个类别单独计算损失。

1.5.3 多头注意力机制

  • 类特定注意力机制: 针对每个类别,学习不同的注意力权重,突出显示与该类别相关的特征。
  • 全局平均池化(GAP)和全局最大池化(GMP): 对特征图进行全局平均池化和全局最大池化,提取全局特征。
  • 多头注意力机制: 使用多个注意力头,每个注意力头使用不同的温度参数,捕捉不同粒度的特征。
  • 最终特征: 将类特定注意力机制和全局特征进行融合,得到最终的特征表示。

1.5.4 分类器

使用Softmax函数对最终特征进行分类,得到每个类别的预测概率。

2 结论

2.1 不同模型的比较

上表格展示了不同模型在测试集上的性能比较,包括CNN14、ResNet22、CNN6和MobileNetV2等。结果表明,CNN14模型性能最好,但参数量较大。CNN6模型在参数量和性能之间取得了较好的平衡,是本研究的首选模型。

2.2 多标签学习方法的比较

上表格展示了多标签学习方法在不同模型上的性能比较。结果表明,多标签学习方法在CNN6模型上取得了最大的性能提升,说明多标签学习可以缓解类别不平衡和数据多样性不足的问题,提高模型的性能。

2.3 多头注意力机制的比较

上表格展示了多头注意力机制在不同模型上的性能比较。

结果表明,大多数模型在引入多头注意力机制后,性能都有所提升,并且模型参数量有所降低。MobileNetV2模型由于特征维度较低,引入多头注意力机制后性能略有下降。

2.4 可学习频谱前端模块的比较

上表格展示了可学习频谱前端模块与本研究设计模型的性能比较。

结果表明,CNN14模型结合可学习频谱前端模块后,性能没有明显提升。CNN6模型结合可学习频谱前端模块后,性能与传统的梅尔谱图特征提取方法相当。这说明可学习频谱前端模块的有效性取决于模型的复杂度,需要根据实际情况进行调整。

2.5 与现有方法的比较

上表格展示了Multi-breath模型与其他方法的性能比较,包括基于Transformer的模型和基于CNN的模型。

结果表明,Multi-breath模型在CNN6架构上取得了最优性能,并且在轻量级模型方面优于其他方法。Multi-breath模型在ICBHI 2017数据集上的Score达到59.2%,超过了现有的轻量级模型方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/47345.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SCI一区级 | Matlab实现GJO-CNN-LSTM-Multihead-Attention多变量时间序列预测

SCI一区级 | Matlab实现GJO-CNN-LSTM-Mutilhead-Attention多变量时间序列预测 目录 SCI一区级 | Matlab实现GJO-CNN-LSTM-Mutilhead-Attention多变量时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现GJO-CNN-LSTM-Mutilhead-Attention金豺优化算…

MongoDB自学笔记(三)

一、前文回顾 上一篇文章中我们学习了更新操作&#xff0c;以及讲解了部分的更新操作符&#xff0c;今天我们继续学习剩余的更新操作符。 二、更新操作符 1、$rename 语法&#xff1a;{ $rename: { < field1 >: < newName1 >, < field2 >: < newName2…

力扣刷题之978.最长湍流子数组

题干要求&#xff1a; 给定一个整数数组 arr &#xff0c;返回 arr 的 最大湍流子数组的长度 。 如果比较符号在子数组中的每个相邻元素对之间翻转&#xff0c;则该子数组是 湍流子数组 。 更正式地来说&#xff0c;当 arr 的子数组 A[i], A[i1], ..., A[j] 满足仅满足下列条…

FPGA笔试

半加器和全加器的区别&#xff1a; 1、半加器不考虑输入的进位&#xff0c;称之为半加。 2、全加器反之&#xff0c;考虑进位。 SRAM/DRAM优缺点对比_sram和dram的主要区别及优缺点-CSDN博客 消除竞争冒险的方法 ①滤波电容&#xff1a;因为尖峰脉冲很窄&#xff0c;用很小的…

棱镜七彩上榜《嘶吼2024网络安全产业图谱》两大领域

7月16日&#xff0c;嘶吼安全产业研究院正式发布《嘶吼2024网络安全产业图谱》&#xff0c;棱镜七彩凭借在软件供应链安全领域出色的技术能力和优异的市场表现&#xff0c;上榜软件成分分析&#xff08;SCA&#xff09;、源代码安全两项细分领域。 据悉&#xff0c;本次《嘶吼2…

成为CMake砖家(2): macOS创建CMake本地文档的app

大家好&#xff0c;我是白鱼。 使用 CMake 的小伙伴&#xff0c; 有的是在 Windows 上&#xff0c; 还有的是在 macOS 上。之前咱们讲了 windows 上查看 cmake 本地 html 文档的方式&#xff0c; 这篇讲讲 macOS 上查看 cmake 本地 html 文档的方法。 1. 问题描述 当使用 CMa…

防火墙--带宽管理

目录 核心思想 带宽限制 带宽保证 连接数的限制 如何实现 接口带宽 队列调度 配置位置 在接口处配置 带宽策略配置位置 带宽通道 配置地方 接口带宽、带宽策略和带宽通道联系 配置顺序 带块通道在那里配置 选项解释 引用方式 策略独占 策略共享 重标记DSCP优先…

软件游戏缺失concrt140.dll的解决方法,轻松搞定dll丢失问题

为了解决concrt140.dll文件缺失的问题&#xff0c;首先需要了解concrt140.dll文件的具体情况。只有在充分了解的基础上&#xff0c;才能采取有效的解决措施。下面&#xff0c;将详细介绍concrt140.dll文件及其解决方案。 一、了解concrt140.dll是什么 concrt140.dll 是微软的一…

SmartPipe新增功能:自动识别含间隙的低质量模型与自动处理超过180度的圆弧管路

自2022年12月SmartPipe上市以来&#xff0c;我一直在不断迭代和升级其轴线识别算法。对于客户反馈的无法自动转换的模型&#xff0c;我都视若珍宝&#xff0c;将其视为提升算法性能的绝佳机会。经过一年半的积累&#xff0c;SmartPipe的测试模型从最初的10个逐步迭代到近100个。…

使用MySQL WorkBench导出SQL脚本

参考: 在MySQL workbench 中导出sql脚本文件_mysql workbench自动保存的脚本在哪-CSDN博客 需要注意的是: 选择高级选项 这里不勾选&#xff0c;这样生成的INSERT是逐条的。将每个ROW合并为一个INSERT语句。 这里选择dump structure and data

画册制作攻略,助你成为视觉传达大师

在数字时代&#xff0c;画册作为一种传统而又充满魅力的视觉传达工具&#xff0c;依旧在各个领域扮演着重要角色。无论是在企业宣传、个人作品展示&#xff0c;还是艺术创作中&#xff0c;一本精美的画册都能让你的作品更具吸引力。那么&#xff0c;如何制作出一本引人入胜的画…

STM32使用Wifi连接阿里云

目录 1 实现功能 2 器件 3 AT指令 4 阿里云配置 4.1 打开阿里云 4.2 创建产品 4.3 添加设备 5 STM32配置 5.1 基础参数 5.2 功能定义 6 STM32代码 本文主要是记述一下&#xff0c;如何使用阿里云物联网平台&#xff0c;创建一个简单的远程控制小灯示例。 完整工程&a…

深度学习入门——误差反向传播

要正确理解误差反向传播法&#xff0c;我个人认为有两种方法&#xff1a;一种是基于数学式&#xff1b;另一种是基于计算图&#xff08;computational graph&#xff09; 前者是比较常见的方法&#xff0c;机器学习相关的图书中多数都是以数学式为中心展开论述的。因为这种方法…

老司机减分宝典助手-学法减分扣分题目及答案 #经验分享#经验分享#职场发展

学法减分其实就是把我们驾驶证上面的分数一分一分地找回来&#xff0c;为什么说是一分一分地找回来呢&#xff1f;因为必须先把违章处理完才可以&#xff0c;无论这辆车是不是你的&#xff0c;无论这辆车挂靠在谁的公司名下或者是单位名下&#xff0c;你都可以把这个分找回来&a…

电源模块企业该如何解决测试中的痛点问题?

根据研究发现&#xff0c;超过76%的企业在进行测试时会对产品质量、可靠性和测试速度这三项核心指标尤为重视。但是随着近几年的发展&#xff0c;目前的测试方法和措施对于这三项指标的测试远远无法达到企业的预期。被测产品的整体质量参差不齐、测试数据的可靠性以及测试的速度…

N7翻译实战

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊# 前言## 前言 本周完成项目实战用于训练一个简单的序列到序列&#xff08;seq2seq&#xff09;模型以实现英语到法语的翻译。数据预处理、模型构建、训练以及可…

浅谈C嘎嘎类与对象

本篇文章与大家浅谈一下C嘎嘎的类与对象知识点 类的定义 关键字&#xff1a;class 语法格式&#xff1a; class 类名 { }&#xff1b;//这里的分号不能少 此外&#xff0c;class有三个属性分别是private、public、protected&#xff0c;这三个属性是干啥的&#xff0c;相…

【Python与GUI开发】事件处理与打包分发

文章目录 前言 一、高级事件处理 1.自定义事件 2.拖放操作 3.复杂控件的事件处理 二、打包和分发 Tkinter 应用 1.PyInstaller 2.cx_Freeze 3.spec 文件 4.分发注意事项 三、实战示例&#xff1a;文件浏览器 总结 前言 在前面的讨论中&#xff0c;我们深入理解了 T…

Docker基本讲解及演示

Docker安装教程 Docker安装教程 1、Docker介绍 Docker是一个开源的应用容器引擎&#xff0c;允许开发者将应用程序及其依赖项打包成一个轻量级、可移植的容器&#xff0c;然后发布到任何支持 Docker 的环境中运行&#xff0c;无论是开发机、测试机还是生产环境。 Docker基于…

PCIe驱动开发(3)— 驱动设备文件的创建与操作

PCIe驱动开发&#xff08;3&#xff09;— 驱动设备文件的创建与操作 一、前言 在 Linux 中一切皆为文件&#xff0c;驱动加载成功以后会在“/dev”目录下生成一个相应的文件&#xff0c;应用程序通过对这个名为“/dev/xxx” (xxx 是具体的驱动文件名字)的文件进行相应的操作即…