Решение для хакатона AI-challenge трек Медицина. Задачей было разработать алгоритм анализа ЭКГ-сигналов для диагностики сердечных патологий, в частности, определения наличия или отсутствия признаков инфаркта миокарда у пациента (бинарная классификация), с последующий локализацией заболевания (multi-label classification).
Решение: Wavelet преобразование. Сегментация ударов сердца через R-пики. ResNet1D для классификации заболевания по матрице (12, 500)
preprocessing_beat_examples.ipynb - ноутбук, где показана работа пайплайна извлечения циклов удара сердца. Используется в решении на платформе. wavelet_preprocessing_examples.ipynb - ноутбук, где наглядно показана работа пайплайна для создания вейвлет-скалограмм. Использовалась в прошлых решениях.
./preprocessing_with_beats/* - реализация пайплайна извлечения циклов удара сердца, который используется в решении на платформе. ./preprocessing_CWT_DWT/* - реализация прошлого пайплайна для создания вейвлет-скалограмм.
./transforming_test/, ./transforming_train/ - директории с преобразованными данными, создается после использования transforming.ipynb
./transformed_df.csv, ./transformed_test_df.csv, ./train_annotations.csv, ./val_annotations - датафреймы, которые создаются после использования transforming.ipynb
./saved_models/ - директория с логами обучения разных моделей. Их удобно посмотреть при помощи TensorBoard.
resnet1d.py - архитектура используемой модели.
transforming.ipynb - ноутбук для трансформации данных и создания аннотаций для обучения модели. model_training.ipynb - ноутбук для тренировки модели и предсказания тестового датасета. catboost.ipynb - ноутбук для тренировки катбуста и предсказания тестового датасета.
Для воспроизведения решения из платформы нужно запустить эти ноутбуки в таком порядке: transforming, model_training, catboost