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

相关推荐
Lihua奏1 天前
从单核到多核:CPU为什么不能再只靠提频变快
深度学习
拾年2751 天前
大模型的"聪明"从哪来?聊聊 AI 数据集的那些事儿
人工智能·深度学习·机器学习
饼干哥哥6 天前
开源Skills|搭建亚马逊动态关键词库系统,每天抓SSS级机会词
人工智能·深度学习·数据分析
武子康7 天前
调查研究-191 SenseVoice 不只是 ASR:把语音从“转文字“升级成“理解状态“
人工智能·深度学习·openai
武子康9 天前
调查研究-189 Kronos 调研:金融 K 线基础模型,是真突破,还是量化圈的新玩具?
人工智能·深度学习·openai
xiao5kou4chang6kai414 天前
MATLAB机器学习、深度学习--从数据预处理到模型训练
深度学习·机器学习·matlab·数据预处理
renhongxia114 天前
世界模型作为AGI落地底层底座的作用
人工智能·深度学习·生成对抗网络·自然语言处理·知识图谱·agi
计算机科研狗@OUC14 天前
(cvpr26) AIMDepth: Asymmetric Image-Event Mamba for Monocular Depth Estimation
人工智能·深度学习·计算机视觉
β添砖java14 天前
深度学习(22)网络中的网络NiN
人工智能·深度学习
Kobebryant-Manba15 天前
深度学习时候d2l报错和使用问题
人工智能·深度学习