Проект машинного обучения для анализа электрокардиограмм (ЭКГ) с использованием сиамских нейронных сетей для обучения с малым количеством примеров (few-shot learning). Этот проект реализует подход глубокого обучения для анализа сигналов ЭКГ и обнаружения сердечных аномалий.
Этот проект использует набор данных PTB-XL, большой публично доступный набор данных электрокардиографии, для обучения сиамской нейронной сети анализа сигналов ЭКГ. Модель предназначена для изучения значимых представлений сигналов ЭКГ и может использоваться для задач обучения с малым количеством примеров при обнаружении сердечных аномалий.
- Сиамская нейронная сеть: Реализует архитектуру сверточной нейронной сети для изучения представлений сигналов ЭКГ
- Обучение с малым количеством примеров: Способна обучаться на очень небольшом количестве примеров, используя обучение на основе сходства
- Обработка сигналов ЭКГ: Комплексный конвейер предобработки данных ЭКГ
- Обнаружение QRS-комплексов: Автоматическое обнаружение и анализ QRS-комплексов в сигналах ЭКГ
- Визуализация представлений: Визуализация изученных представлений ЭКГ с помощью UMAP
- Перенос обучения: Поддержка загрузки предобученных моделей
- Python 3.7+
- PyTorch 1.13.1
- NumPy 1.23.5
- Pandas 1.5.3
- Scikit-learn 1.2.1
- WFDB 4.1.0 (для обработки сигналов ЭКГ)
- Matplotlib 3.7.0
- SciPy 1.10.0
- UMAP-learn 0.5.3
- Клонируйте репозиторий:
git clone <url-репозитория>
cd ML-ECG-Research
- Создайте виртуальное окружение (рекомендуется):
python -m venv venv
source venv/bin/activate # В Windows: venv\Scripts\activate
- Установите зависимости:
pip install -r requirements.txt
ML-ECG-Research/
├── src/ # Исходный код
│ ├── main.py # Основной скрипт выполнения
│ ├── model.py # Модель сиамской нейронной сети
│ ├── train.py # Конвейер обучения
│ ├── preprocessing.py # Утилиты предобработки данных
│ ├── split_QRS.py # Обнаружение QRS-комплексов
│ ├── transformations.py # Преобразования сигналов
│ ├── utils.py # Вспомогательные функции
│ ├── results.py # Анализ и визуализация результатов
│ ├── loader.py # Утилиты загрузки данных
│ └── config.py # Настройки конфигурации
├── notebooks/ # Jupyter блокноты
│ └── reserchNotebook.ipynb # Блокнот для исследований и анализа
├── data/ # Директория с данными (создается автоматически)
├── result/ # Результаты и выходные данные (создается автоматически)
├── requirements.txt # Python зависимости
└── README.md # Этот файл
Отредактируйте src/config.py
для изменения параметров обучения:
batch_size
: Размер пакета обучения (по умолчанию: 4)max_epoch
: Максимальное количество эпох обучения (по умолчанию: 1)learning_rate
: Скорость обучения (по умолчанию: 0.001)thin_out_ratio
: Коэффициент прореживания данных (по умолчанию: 0.09)valid_size
: Размер валидационного набора (по умолчанию: 0.1)test_size
: Размер тестового набора (по умолчанию: 0.4)shot_sizes
: Размеры выборок для обучения с малым количеством примеров (по умолчанию: [1, 2, 3, 4, 5])
- Убедитесь, что набор данных PTB-XL доступен в директории
data/
- Запустите основной скрипт обучения:
cd src
python main.py
- Установите
load_model = True
вconfig.py
- Установите
load_from
на путь к вашей предобученной модели - Запустите основной скрипт:
cd src
python main.py
Для детального анализа и экспериментов используйте Jupyter блокнот:
jupyter notebook notebooks/reserchNotebook.ipynb
Проект реализует сиамскую нейронную сеть со следующей архитектурой:
- Вход: Пары сигналов ЭКГ (2 канала)
- Сверточные слои: 3 слоя conv1d с максимальным пулингом
- Полносвязный слой: 128-мерное представление
- Метрика сходства: Косинусное сходство между представлениями
Проект использует набор данных PTB-XL, большой публично доступный набор данных электрокардиографии, содержащий:
- 21,837 клинических 12-канальных ЭКГ
- 18,885 пациентов
- 71 ЭКГ-заключение
- 5 суперклассов диагнозов
Набор данных автоматически загружается с PhysioNet при запуске конвейера предобработки.
Модель генерирует:
- Изученные представления для сигналов ЭКГ
- UMAP-визуализации пространства представлений
- Метрики производительности обучения с малым количеством примеров
- Результаты обнаружения QRS-комплексов
Этот проект лицензирован под MIT License - см. файл LICENSE для подробностей.
Telegram: @Vlodimirshil
Email: vladimir@itmo.ru
Примечание: Это исследовательский проект. Результаты могут варьироваться в зависимости от конкретных данных ЭКГ и случая использования. Всегда проверяйте результаты в клинических условиях перед медицинским применением.