基于Swin Transformer的MIT-BIH心电信号分类系统:创新设计与优异性能

基于Swin Transformer的MIT-BIH心电信号分类系统:创新设计与优异性能

项目概述

这是一个基于深度学习的心电信号(ECG)自动分类系统,专门用于MIT-BIH心律失常数据库的心拍分类任务。项目实现了从数据预处理、模型训练到可视化推理的完整流程,为心律失常的自动诊断提供了高效的技术解决方案。

数据集背景

MIT-BIH心律失常数据库是国际上最权威的心电信号基准数据库之一,包含了从长期Holter记录中提取的48条半小时双通道心电图记录。本项目将该数据集应用于五类心拍分类任务:

  • A:房性早搏
  • L:左束支传导阻滞
  • N:正常心拍
  • R:右束支传导阻滞
  • V :室性早搏

数据集划分:训练集1917个样本,验证集820个样本,覆盖5个类别,确保了模型训练的充分性和评估的可靠性。

核心创新点

1. 先进的视觉Transformer架构

项目创新性地采用Swin Transformer作为主干网络,取代了传统的CNN架构。Swin Transformer通过层次化的窗口注意力机制,能够捕捉心电信号中的长程依赖关系,特别适合处理心电图这类具有时序局部特征和全局结构的数据。

python 复制代码
# 模型构建代码(utils.py)
def create_model(num, weights):
    net = m.swin_t(weights=weights)  # 使用Swin Transformer Tiny
    net.head = nn.Linear(net.head.in_features, num)  # 自定义分类头
    return net

优势

  • 更强的特征表示能力,适合复杂的ECG模式识别
  • 可解释性更强,注意力机制可可视化特征重要性
  • 参数效率更高,在较小数据集上表现优异

2. 全面的评估指标体系

项目超越了传统仅关注准确率的评估方式,实现了多维度的性能评估

python 复制代码
# 混淆矩阵计算各类指标(utils.py)
def summary(self):  # 计算各项指标
    dict['accuracy'] = acc
    dict['mean precision'] = p / self.num_classes
    dict['mean recall'] = r / self.num_classes
    dict['mean specificity'] = s / self.num_classes
    dict['mean f1 score'] = f / self.num_classes
    return dict

评估指标包括:

  • 每个类别的精确率(Precision)、召回率(Recall)、特异度(Specificity)、F1分数
  • 宏观平均的各项指标
  • ROC曲线和AUC面积
  • PR曲线(精确率-召回率曲线)






3. 创新的损失函数设计

采用Focal Loss替代标准交叉熵损失,有效解决类别不平衡问题:

python 复制代码
class FocalLoss(nn.Module):
    def __init__(self, alpha=0.25, gamma=2.0, reduction='mean'):
        super(FocalLoss, self).__init__()
        self.alpha = alpha
        self.gamma = gamma
        self.reduction = reduction
    
    def forward(self, inputs, targets):
        ce_loss = F.cross_entropy(inputs, targets, reduction='none')
        pt = torch.exp(-ce_loss)
        focal_loss = self.alpha * (1-pt)**self.gamma * ce_loss

优势

  • 自动调整困难样本的权重
  • 改善少数类别的学习效果
  • 提高模型在类别不平衡数据上的泛化能力

4. 完善的训练监控与可视化

项目实现了端到端的训练监控系统

  • 实时训练指标跟踪:每个epoch记录所有评估指标
  • 学习率动态调整:余弦退火学习率调度
  • 训练过程可视化:损失曲线、准确率曲线、学习率衰减曲线
  • 数据集分布分析:训练集和验证集的类别分布直方图
  • 混淆矩阵可视化 :训练集和验证集的详细分类性能

5. 用户友好的推理界面

基于PyQt5开发了图形化推理系统

python 复制代码
# GUI界面设计(infer_QT.py)
class MainWindow(QMainWindow):
    def __init__(self, model, class_indices_path):
        super().__init__()
        self.model = ImageClassifier(model, class_indices_path)
        # 包含图像显示、结果展示、概率输出等功能

功能特点

  • 支持多种图像格式(PNG, JPG, JPEG, BMP)
  • 显示前3个最可能的预测类别及其置信度
  • 实时状态反馈和错误处理
  • 现代化UI设计,操作直观简单

训练结果分析

根据提供的训练日志(train_log_results.json),模型在30个epoch的训练中表现出色:

性能表现

  • 最终验证集准确率:95.61%
  • 最佳验证集准确率:95.61%(epoch 29)
  • 各类别平均性能
    • 平均精确率:95.22%
    • 平均召回率:94.87%
    • 平均特异度:98.91%
    • 平均F1分数:95.02%

训练动态

  1. 快速收敛:模型在epoch 5时验证准确率已达到91.22%
  2. 稳定提升:从epoch 5到epoch 29,准确率从91.22%稳步提升至95.61%
  3. 无过拟合:训练和验证性能同步提升,表明模型具有良好的泛化能力

各类别详细表现

  • L类(左束支传导阻滞):表现最优,召回率达100%
  • R类(右束支传导阻滞):精确率和F1分数接近100%
  • A类(房性早搏):相对最具挑战性,但仍有91.47%的召回率
  • N类(正常心拍)V类(室性早搏):均表现出色,各项指标超过95%

技术架构优势

1. 模块化设计

  • utils.py:工具函数集中管理
  • train.py:训练流程完整实现
  • infer_QT.py:推理界面独立封装
  • 高内聚低耦合,便于维护和扩展

2. 可配置性

通过argparse支持丰富的训练参数配置:

python 复制代码
parser.add_argument("--pretrained", default=True, type=bool)       # 预训练权重
parser.add_argument("--batch-size", default=16, type=int)         # 批次大小
parser.add_argument("--epochs", default=30, type=int)             # 训练轮数
parser.add_argument("--optim", default='Adam', type=str)          # 优化器选择
parser.add_argument('--lr', default=0.0001, type=float)          # 初始学习率

3. 实验可复现性

  • 自动保存所有训练配置和结果
  • 生成详细的训练日志(JSON格式)
  • 保存最佳和最终模型权重
  • 可视化结果自动导出

4. 计算效率

  • 总参数量:约1885.6万
  • 可训练参数量:约2752.3万
  • FLOPs:约2.98亿
  • 支持GPU加速训练

应用价值

  1. 临床辅助诊断:为医生提供快速、准确的心律失常初筛工具
  2. 远程医疗:可集成到移动医疗设备中,实现实时心电监测
  3. 医学研究:为心律失常研究提供可复现的基准模型
  4. 教育工具:帮助医学生理解心电图分类原理

总结

本项目成功地将前沿的视觉Transformer技术应用于心电图分类任务,通过创新的模型设计、全面的评估体系和用户友好的界面,构建了一个高效、准确、可靠的心电信号自动分类系统。在MIT-BIH数据库上的优异表现验证了该方法的有效性,为心律失常的自动诊断提供了有力的技术支撑。

项目亮点总结

  • ✅ 采用先进的Swin Transformer架构
  • ✅ 实现多维度的综合性能评估
  • ✅ 解决类别不平衡的Focal Loss设计
  • ✅ 完整的训练监控和可视化系统
  • ✅ 用户友好的图形化推理界面
  • ✅ 在MIT-BIH数据库上达到95.61%的准确率

这个项目不仅展示了深度学习在医疗图像分析中的强大能力,也为类似的时间序列分类任务提供了可借鉴的技术框架和实施范例。

下载地址:基于Swin Transformer与多模态融合的MIT-BIH心电智能诊断系统:从ECG分类到临床可解释性部署,已经训练好

相关推荐
Rabbit_QL3 小时前
【激活函数】Sigmoid 与 Softmax 的关系:从二分类到多分类的统一视角
人工智能·深度学习·分类
LDG_AGI3 小时前
【搜索引擎】Elasticsearch(一):索引创建、数据插入、请求示例
人工智能·深度学习·算法·elasticsearch·机器学习·搜索引擎·推荐算法
童话名剑3 小时前
YOLOv9 (学习笔记)
人工智能·深度学习
学技术的大胜嗷3 小时前
YOLO 训练报错排查:解决 ultralytics 同名包冲突(本地源码 与 环境中的包)
人工智能·深度学习·机器学习
简简单单做算法1 天前
基于GA遗传优化的Transformer-LSTM网络模型的时间序列预测算法matlab性能仿真
深度学习·matlab·lstm·transformer·时间序列预测·ga遗传优化·电池剩余寿命预测
龙文浩_1 天前
AI中NLP的文本张量表示方法在自然语言处理中的演进与应用
人工智能·pytorch·深度学习·神经网络·自然语言处理
极光代码工作室1 天前
基于BERT的新闻文本分类系统
深度学习·nlp·bert·文本分类
XINVRY-FPGA1 天前
XC7VX690T-2FFG1157I Xilinx AMD Virtex-7 FPGA
arm开发·人工智能·嵌入式硬件·深度学习·fpga开发·硬件工程·fpga
AI视觉网奇1 天前
生成GeoGebra
人工智能·深度学习