Instructions to use hellothisisaswin/ecg-ptbxl-classification with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Keras
How to use hellothisisaswin/ecg-ptbxl-classification with Keras:
# Available backend options are: "jax", "torch", "tensorflow". import os os.environ["KERAS_BACKEND"] = "jax" import keras model = keras.saving.load_model("hf://hellothisisaswin/ecg-ptbxl-classification") - Notebooks
- Google Colab
- Kaggle
Commit ·
1e1abc0
0
Parent(s):
Duplicate from Steenslid/ecg-ptbxl-classification
Browse filesCo-authored-by: Edvard Vindenes Steenslid <Steenslid@users.noreply.huggingface.co>
- .gitattributes +38 -0
- README.md +45 -0
- ecg_cnn_final.keras +3 -0
- ecg_model.keras +3 -0
- normalisation_params.npz +3 -0
- thresholds.json +7 -0
.gitattributes
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
*.7z filter=lfs diff=lfs merge=lfs -text
|
| 2 |
+
*.arrow filter=lfs diff=lfs merge=lfs -text
|
| 3 |
+
*.bin filter=lfs diff=lfs merge=lfs -text
|
| 4 |
+
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
| 5 |
+
*.ckpt filter=lfs diff=lfs merge=lfs -text
|
| 6 |
+
*.ftz filter=lfs diff=lfs merge=lfs -text
|
| 7 |
+
*.gz filter=lfs diff=lfs merge=lfs -text
|
| 8 |
+
*.h5 filter=lfs diff=lfs merge=lfs -text
|
| 9 |
+
*.joblib filter=lfs diff=lfs merge=lfs -text
|
| 10 |
+
*.lfs.* filter=lfs diff=lfs merge=lfs -text
|
| 11 |
+
*.mlmodel filter=lfs diff=lfs merge=lfs -text
|
| 12 |
+
*.model filter=lfs diff=lfs merge=lfs -text
|
| 13 |
+
*.msgpack filter=lfs diff=lfs merge=lfs -text
|
| 14 |
+
*.npy filter=lfs diff=lfs merge=lfs -text
|
| 15 |
+
*.npz filter=lfs diff=lfs merge=lfs -text
|
| 16 |
+
*.onnx filter=lfs diff=lfs merge=lfs -text
|
| 17 |
+
*.ot filter=lfs diff=lfs merge=lfs -text
|
| 18 |
+
*.parquet filter=lfs diff=lfs merge=lfs -text
|
| 19 |
+
*.pb filter=lfs diff=lfs merge=lfs -text
|
| 20 |
+
*.pickle filter=lfs diff=lfs merge=lfs -text
|
| 21 |
+
*.pkl filter=lfs diff=lfs merge=lfs -text
|
| 22 |
+
*.pt filter=lfs diff=lfs merge=lfs -text
|
| 23 |
+
*.pth filter=lfs diff=lfs merge=lfs -text
|
| 24 |
+
*.rar filter=lfs diff=lfs merge=lfs -text
|
| 25 |
+
*.safetensors filter=lfs diff=lfs merge=lfs -text
|
| 26 |
+
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
| 27 |
+
*.tar.* filter=lfs diff=lfs merge=lfs -text
|
| 28 |
+
*.tar filter=lfs diff=lfs merge=lfs -text
|
| 29 |
+
*.tflite filter=lfs diff=lfs merge=lfs -text
|
| 30 |
+
*.tgz filter=lfs diff=lfs merge=lfs -text
|
| 31 |
+
*.wasm filter=lfs diff=lfs merge=lfs -text
|
| 32 |
+
*.xz filter=lfs diff=lfs merge=lfs -text
|
| 33 |
+
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
+
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
+
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 36 |
+
ecg_cnn_final.keras filter=lfs diff=lfs merge=lfs -text
|
| 37 |
+
ecg_lstm_final.keras filter=lfs diff=lfs merge=lfs -text
|
| 38 |
+
ecg_model.keras filter=lfs diff=lfs merge=lfs -text
|
README.md
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
tags:
|
| 3 |
+
- ecg
|
| 4 |
+
- cardiovascular
|
| 5 |
+
- multi-label-classification
|
| 6 |
+
- keras
|
| 7 |
+
- ptb-xl
|
| 8 |
+
datasets:
|
| 9 |
+
- ptb-xl
|
| 10 |
+
license: mit
|
| 11 |
+
---
|
| 12 |
+
|
| 13 |
+
# ECG Cardiovascular Disease Classification
|
| 14 |
+
|
| 15 |
+
Multi-label classification of 5 cardiovascular superclasses
|
| 16 |
+
(NORM, MI, STTC, CD, HYP) from 12-lead ECG recordings, trained on PTB-XL.
|
| 17 |
+
|
| 18 |
+
**Deployed model**: CNN (noaug training variant)
|
| 19 |
+
|
| 20 |
+
## Files
|
| 21 |
+
|
| 22 |
+
- `ecg_model.keras` | trained model
|
| 23 |
+
- `normalisation_params.npz` | per-channel mean and std (z-score, from training fold)
|
| 24 |
+
- `thresholds.json` | per-class decision thresholds optimised on the validation fold
|
| 25 |
+
|
| 26 |
+
## Usage
|
| 27 |
+
|
| 28 |
+
```python
|
| 29 |
+
import keras, numpy as np, json
|
| 30 |
+
from huggingface_hub import hf_hub_download
|
| 31 |
+
|
| 32 |
+
model = keras.saving.load_model(
|
| 33 |
+
hf_hub_download("Steenslid/ecg-ptbxl-classification", "ecg_model.keras"))
|
| 34 |
+
params = np.load(hf_hub_download("Steenslid/ecg-ptbxl-classification", "normalisation_params.npz"))
|
| 35 |
+
with open(hf_hub_download("Steenslid/ecg-ptbxl-classification", "thresholds.json")) as f:
|
| 36 |
+
thresholds = json.load(f)
|
| 37 |
+
|
| 38 |
+
# Input x: (1000, 12) float32 ECG in mV, 100 Hz, standard 12-lead order
|
| 39 |
+
x_norm = (x - params["mean"]) / params["std"]
|
| 40 |
+
probs = model.predict(x_norm[np.newaxis])[0]
|
| 41 |
+
preds = {sc: probs[i] >= thresholds[sc] for i, sc in enumerate(
|
| 42 |
+
["NORM","MI","STTC","CD","HYP"])}
|
| 43 |
+
```
|
| 44 |
+
|
| 45 |
+
**Authors:** Edvard Vindenes Steenslid & Morten Kvamme
|
ecg_cnn_final.keras
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:c38d6456d8f004a56fec3c058ebc49c0aa5300c8b873c1d8957213c0ed1bbd81
|
| 3 |
+
size 7271200
|
ecg_model.keras
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:3f2cdde86cb8fd2627f663ee620ebcc98e2d4f5470a70d07e6127ca3d480e51d
|
| 3 |
+
size 8432243
|
normalisation_params.npz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:9a496322e40c88f8a8657ff18e04dbe2bc1455eba6d041cfe823f5f9d31cfce3
|
| 3 |
+
size 596
|
thresholds.json
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"NORM": 0.44000000000000006,
|
| 3 |
+
"MI": 0.35000000000000003,
|
| 4 |
+
"STTC": 0.33,
|
| 5 |
+
"CD": 0.26000000000000006,
|
| 6 |
+
"HYP": 0.2
|
| 7 |
+
}
|