基于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分类到临床可解释性部署,已经训练好

相关推荐
AndrewHZ18 小时前
【LLM技术全景】规模定律与模型演进:为什么模型越大越强?
人工智能·gpt·深度学习·语言模型·llm·openai·规模定律
手写码匠19 小时前
从零实现 Prompt 工程引擎:结构化提示、自动优化与多轮自省体系
人工智能·深度学习·算法·aigc
哈伦201919 小时前
第十二章 深度学习基础 案例:MLP实现银行单据手写数字识别
人工智能·深度学习·图像识别
lqqjuly19 小时前
MLA — 多头潜在注意力深度解析
深度学习·神经网络·算法
Black蜡笔小新19 小时前
企业AI算力工作站DLTM深度学习推理工作站零代码私有化重塑企业AI落地新模式
人工智能·深度学习
啦啦啦_999920 小时前
4. Transformer_4_输出部分
人工智能·深度学习·transformer
CV-deeplearning20 小时前
李沐论文精读合集:67 篇深度学习经典论文逐段精读,从 AlexNet 到 Sora,B 站播放百万级的 AI 自学圣经
gpt·大模型·transformer·李沐·论文精读·ai学习路线
DogDaoDao21 小时前
【GitHub】VoxCPM2 实战全解析:原理、部署与效果对比
深度学习·大模型·github·音频·语音模型·tss·文本生成语音
不考研当牛马1 天前
Django 框架 深度学习
python·深度学习·django
春日见1 天前
决策规划控制面经汇总
人工智能·深度学习·算法·机器学习·自动驾驶