Bag of Tricks for Electrocardiogram Classification with Deep Neural Networks (Computing in Cardiology 2020)
Official Pytorch implementation of DSAIL_SNU team (6th place) | Paper
Classification of 12-lead ECGs - PhysioNet Challenge 2020 | Challege
Recent algorithmic advances in electrocardiogram (ECG) classification are largely contributed to deep learning. However, these methods are still based on a relatively straightforward application of deep neural networks (DNNs), which leaves incredible room for improvement. In this paper, as part of the PhysioNet / Computing in Cardiology Challenge 2020, we developed an 18-layer residual convolutional neural network to classify clinical cardiac abnormalities from 12-lead ECG recordings. We focused on examining a collection of data pre-processing, model architecture, training, and post-training procedure refinements for DNN-based ECG classification. We showed that by combining these refinements, we can improve the classification performance significantly. Our team, DSAIL_SNU, obtained a 0.695 challenge score using 10-fold cross-validation, and a 0.420 challenge score on the full test data, placing us 6th in the official ranking.
The Challenge provides a training database with data files and a description of the contents and structure of these files.
Download the training data into the data
folder from these links:
- CPSC2018 training set, 6,877 recordings: link
- China 12-Lead ECG Challenge Database (unused CPSC2018 data), 3,453 recordings: link
- St Petersburg INCART 12-lead Arrhythmia Database, 74 recordings: link
- PTB Diagnostic ECG Database, 516 recordings: link
- PTB-XL electrocardiography Database, 21,837 recordings:link
- Georgia 12-Lead ECG Challenge Database, 10,344 recordings: link
We follow the Challenge Submission instructions.
Build a Docker image and run the code using the following steps:
docker build -t image .
docker run --gpus device=0 --ipc=host -it -v ~/data:/physionet/data -v ~/models:/physionet/models -v ~/outputs:/physionet/outputs image bash
python train_model.py data models
python driver.py models data outputs