Skip to content

Проект машинного обучения для анализа электрокардиограмм (ЭКГ) с использованием сиамских нейронных сетей для обучения с малым количеством примеров (few-shot learning). Этот проект реализует подход глубокого обучения для анализа сигналов ЭКГ и обнаружения сердечных аномалий.

License

Notifications You must be signed in to change notification settings

vovanshil95/ML-ECG-Research

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ML-ECG-Research

Проект машинного обучения для анализа электрокардиограмм (ЭКГ) с использованием сиамских нейронных сетей для обучения с малым количеством примеров (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

🛠️ Установка

  1. Клонируйте репозиторий:
git clone <url-репозитория>
cd ML-ECG-Research
  1. Создайте виртуальное окружение (рекомендуется):
python -m venv venv
source venv/bin/activate  # В Windows: venv\Scripts\activate
  1. Установите зависимости:
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])

🎯 Использование

Обучение новой модели

  1. Убедитесь, что набор данных PTB-XL доступен в директории data/
  2. Запустите основной скрипт обучения:
cd src
python main.py

Использование предобученной модели

  1. Установите load_model = True в config.py
  2. Установите load_from на путь к вашей предобученной модели
  3. Запустите основной скрипт:
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


Примечание: Это исследовательский проект. Результаты могут варьироваться в зависимости от конкретных данных ЭКГ и случая использования. Всегда проверяйте результаты в клинических условиях перед медицинским применением.

About

Проект машинного обучения для анализа электрокардиограмм (ЭКГ) с использованием сиамских нейронных сетей для обучения с малым количеством примеров (few-shot learning). Этот проект реализует подход глубокого обучения для анализа сигналов ЭКГ и обнаружения сердечных аномалий.

Topics

Resources

License

Stars

Watchers

Forks