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

相关推荐
RWKV元始智能6 小时前
RWKV超并发项目教程,RWKV-LM训练提速40%
人工智能·rnn·深度学习·自然语言处理·开源
@insist1237 小时前
信息安全工程师考点精讲:身份认证核心原理与分类体系(上篇)
大数据·网络·分类·信息安全工程师·软件水平考试
AI技术增长8 小时前
Pytorch图像去噪实战(六):CBDNet真实噪声去噪实战,解决合成噪声模型落地效果差的问题
pytorch·深度学习·机器学习
小糖学代码9 小时前
LLM系列:2.pytorch入门:8.神经网络的损失函数(criterion)
人工智能·深度学习·神经网络
Jmayday9 小时前
Pytorch:RNN理论基础
pytorch·rnn·深度学习
AI周红伟11 小时前
周红伟:GPT-Image-2深度解析:从技术原理到实战教程,为什么它能让整个AI圈炸锅?
人工智能·gpt·深度学习·机器学习·语言模型·openclaw
端平入洛12 小时前
梯度是什么:PyTorch 自动求导详解
人工智能·深度学习
时序之心12 小时前
上海交大、东北大学:时序分类与感知领域的两项前沿突破
人工智能·分类·时间序列
nap-joker12 小时前
不完全多模分类的推断时间动态模式选择
人工智能·分类·数据挖掘·不完整模态·插补-丢弃困境
Uopiasd1234oo12 小时前
上下文引导模块改进YOLOv26局部与全局特征融合能力双重提升
深度学习·yolo·机器学习