Разработка AI-системы анализа ЭКГ
AI-анализ ЭКГ — одна из наиболее зрелых областей медицинского AI. Stanford AliveCor AlgoRhythm, AstraZeneca AI ECG — коммерческие продукты с FDA clearance. Но custom-разработка оправдана при специфических клинических задачах или интеграционных требованиях.
Клинические задачи ЭКГ AI
Классификация аритмий
Deep 1D CNN на 12-канальном или однокальном ЭКГ:
- Фибрилляция предсердий (AF): sensitivity 98.3%, specificity 97.5% (Stanford 2019)
- Трепетание предсердий
- Желудочковая тахикардия/фибрилляция (VT/VF) — жизнеугрожающие
- AV-блокады (I, II степени Mobiтц I/II, полная)
- Блокады ножек пучка Гиса (LBBB, RBBB)
- WPW-синдром
- Наджелудочковые тахикардии
Детекция инфаркта миокарда (ОКС)
STEMI: элевация ST — хорошо ловится правилами. NSTEMI/НСТЭМИПН: субтильные изменения, высокий пропуск у неопытных врачей. CNN+Transformer на raw ECG waveforms превосходит STEMI-criteria только подход.
Гипертрофия и структурные изменения
ЭКГ как скрининг на гипертрофию ЛЖ, дилатационную кардиомиопатию, амилоидоз — состояния с характерными паттернами на ЭКГ, но для которых стандарт — ЭхоКГ. AI ЭКГ = дешёвый и повсеместный предскрининг.
Электролитные нарушения
Гипо/гиперкалиемия, гипо/гиперкальциемия дают характерные ЭКГ-паттерны. AI предсказывает уровень K⁺ из ЭКГ с MAE ~0.3 ммоль/л — потенциально полезно для мониторинга без частых анализов крови.
Архитектура модели
Предобработка сигнала
Стандартизация: 500 Hz sampling, 12 leads, 10-секундная запись = 5000 точек × 12 leads. Baseline wander removal (butterworth HPF 0.5Hz), powerline noise removal (notch 50/60Hz), R-peak detection для ритма.
Deep 1D CNN
import torch
import torch.nn as nn
class ECGNet(nn.Module):
def __init__(self, num_classes=20):
super().__init__()
# Multi-lead feature extraction
self.lead_encoder = nn.Sequential(
nn.Conv1d(12, 64, kernel_size=7, stride=2, padding=3),
nn.BatchNorm1d(64), nn.ReLU(),
nn.Conv1d(64, 128, kernel_size=5, stride=2, padding=2),
nn.BatchNorm1d(128), nn.ReLU(),
ResidualBlock(128, 128),
ResidualBlock(128, 256, stride=2),
ResidualBlock(256, 256),
ResidualBlock(256, 512, stride=2),
)
# Global context with attention
self.attention = nn.MultiheadAttention(512, num_heads=8, batch_first=True)
self.classifier = nn.Linear(512, num_classes)
def forward(self, x): # x: [batch, 12, 5000]
features = self.lead_encoder(x) # [batch, 512, T]
features = features.transpose(1, 2) # [batch, T, 512]
attended, _ = self.attention(features, features, features)
pooled = attended.mean(dim=1)
return self.classifier(pooled)
Датасеты
- PTB-XL: 21,799 12-lead ЭКГ от 18,869 пациентов, 71 statement (ESC классификация)
- PhysioNet 2020/2021: 88,253 записей, 27 классов, из нескольких глобальных источников
- CPSC 2018: китайский датасет, 6877 ЭКГ, 9 классов
- Georgia 12-Lead Challenge: 10,344 ЭКГ, 27 классов
Особенности для production
Noise robustness
Реальные ЭКГ с движением пациента, отошедшими электродами. Аугментация при обучении: добавление артефактов движения, baseline drift, электрических помех. Adversarial training повышает robustness.
Long-term Holter analysis
24/48/72-часовая запись → анализ event detection (все аритмические эпизоды) + summary статистика. Автоматический отчёт: количество эпизодов AF, паузы > N секунд, ST-изменения, HRV анализ.
Point-of-care (портативные ЭКГ)
AliveCor KardiaMobile, Apple Watch, patch-мониторы — однокальный ЭКГ. Адаптация модели под single-lead vs. 12-lead. Необходима специальная архитектура, т.к. single lead несёт меньше информации.
Клиническая валидация: проспективное исследование с исходами (диагноз кардиолога vs. AI) обязательно для медицинского применения. Срок разработки: 4–6 месяцев до валидации, ещё 6–12 месяцев на клиническую study.







