YOLO-1D ECG Delineation Weights (LUDB, single-lead, fold 0 / seed 2)
Pre-trained checkpoint of YOLO-1D, a 1-D anchor-free YOLO-style detector, for ECG wave delineation on the
Lobachevsky University Electrocardiography Database (LUDB).
The model takes one ECG lead (10 s at 500 Hz, z-scored) and returns the P, QRS and T waves as intervals
[onset, offset] with a confidence score.
This is the single-lead model reported in the paper . The code, training configs and the full evaluation pipeline live in the source repository:
Source code: https://github.com/BystrovGladkov/YOLO_1d (branch
EKG)
These weights correspond to the run experiments/final/fold0_seed2/train1/ of that repository.
Files
| File | Description |
|---|---|
best.pt |
PyTorch checkpoint (torch.save dict with keys model, ema, epoch). Selected by the best mean F1 of the six fiducial points on the validation split (epoch 176 of 250). Inference uses the EMA weights. 1.08 M parameters, 8.5 MB. |
args.yaml |
Full resolved TrainingSettings of the run (architecture, augmentations, optimizer, etc.). Needed to build the model before loading best.pt. |
thresholds.json |
Per-class confidence thresholds (P = 0.30, QRS = 0.20, T = 0.25) tuned on the validation split and used for the test metrics below. |
metrics.json |
Complete test metrics of this run (overall, per rhythm group, with/without boundary points, detection mAP). |
splits/folds.csv |
Fold number of every LUDB record (all 5 folds). |
splits/fold_0/{train,val,test}.txt |
The exact example lists (<record>_<lead>) used for this checkpoint. |
LICENSE, NOTICE.txt |
Apache License 2.0 and attribution notice. |
SHA-256 of best.pt: 31d9d1ffb32e159585cf56e5d90f0dc76ced54981c6249c814319cd177e403fb
LUDB split used for this checkpoint
LUDB contains 200 12-lead records (10 s, 500 Hz) with expert annotations of P, QRS and T boundaries.
The split is patient-level (one record = one subject; all 12 leads of a record go to the same split) and was
generated by data/make_splits.py of the source repository with the following protocol:
- 5-fold cross-validation,
seed = 2026, folds stratified by rhythm group (sinus175 records,af_flutter15,paced10). Every record is in the test set of exactly one fold. - For fold k: test = records of fold k; of the remaining records, ~10 % per rhythm group (at least one record per group) go to validation (early stopping, checkpoint selection, confidence-threshold tuning); the rest is train.
- The unit of training is a single lead. 24 of the 2400 leads (7 records: 7, 8, 34, 95, 104, 111, 116) were excluded because of defective annotations inside the annotated zone (an unpaired wave boundary), leaving 2376 lead examples.
This checkpoint was trained on fold 0:
| Split | Records | Lead examples | sinus / af_flutter / paced |
|---|---|---|---|
| train | 144 | 1713 | 126 / 11 / 7 |
| val | 16 | 186 | 14 / 1 / 1 |
| test | 40 | 477 | 35 / 3 / 2 |
Record IDs:
- test (40): 11, 16, 17, 19, 30, 34, 36, 40, 42, 44, 45, 50, 58, 78, 79, 88, 91, 100, 107, 113, 117, 123, 127, 129, 134, 135, 139, 142, 144, 146, 154, 167, 176, 181, 183, 184, 187, 191, 194, 196
- val (16): 6, 7, 33, 35, 54, 55, 57, 70, 80, 85, 111, 118, 132, 138, 151, 169
- train (144): all remaining records (see
splits/fold_0/train.txt).
Do not evaluate this checkpoint on the records listed as train or val above; they were seen during training or used for model selection.
Model and training summary
| Setting | Value |
|---|---|
| Architecture | YOLO-1D nano: DarkNet-style 1-D backbone (CSP blocks, SPP, PSA attention), FPN neck, anchor-free head with Distribution Focal Loss (16 bins) |
| Backbone strides | preset B β head strides 8 / 16 / 32 |
| Input | 1 channel Γ 5000 samples (10 s at 500 Hz), z-scored per lead, zero-padded to 5120 inside the transforms |
| Classes | 0 = P, 1 = QRS, 2 = T |
| Loss weights | box 7.5, cls 0.5, DFL 1.5; task-aligned assigner |
| Optimizer | SGD, momentum 0.937, weight decay 5e-4, lr 0.01 β 1e-4, 3 warm-up epochs, batch 32 |
| Epochs | 250 (early-stopping patience 40); best epoch 176 |
| EMA | decay 0.999, tau 200 |
| Augmentations | 16 ECG-specific augmentations (white / EMG / powerline / baseline-wander noise, real MIT-BIH NSTDB noise, time scaling, HRV warp, window warp, amplitude and per-wave scaling, inversion, step, time masking, mosaic, record splicing, band-pass filter); random edge masking of the unannotated record borders |
| Post-processing | 1-D NMS with IoU 0.2, per-class confidence thresholds from thresholds.json |
| Training seed | 2 |
Full details are in args.yaml.
Metrics
Evaluation protocol: per-lead detection β intervals; each predicted boundary is matched one-to-one to the nearest
reference boundary within Β±150 ms (ANSI/AAMI EC57). Se / PPV / F1 are computed per fiducial point;
m Β± Ο is the mean Β± standard deviation of the signed error (prediction β reference) in ms over matched pairs;
FP/lead is the number of unmatched predictions per lead. Fiducials adjacent to the masked record edges
(onset of the first and offset of the last wave of a lead) are excluded (exclude_boundary_points: true).
Test split of fold 0 (40 records, 477 leads) β this checkpoint
| Fiducial | Se, % | PPV, % | F1, % | m Β± Ο, ms | FP/lead |
|---|---|---|---|---|---|
| P onset | 98.55 | 97.20 | 97.87 | 1.3 Β± 14.1 | 0.193 |
| P offset | 98.56 | 97.22 | 97.88 | 1.1 Β± 11.9 | 0.193 |
| QRS onset | 100.00 | 99.89 | 99.95 | 0.2 Β± 6.6 | 0.008 |
| QRS offset | 100.00 | 99.89 | 99.95 | β0.1 Β± 8.7 | 0.008 |
| T onset | 99.27 | 99.38 | 99.33 | β1.8 Β± 22.4 | 0.048 |
| T offset | 99.30 | 99.40 | 99.35 | β1.8 Β± 21.6 | 0.046 |
| Mean over 6 points | 99.05 | Ο = 14.2, |m| = 7.9 |
Usage
Installation, a ready-to-run inference example and the evaluation procedure are described in the source
repository: https://github.com/BystrovGladkov/YOLO_1d (branch EKG, sections Installation and
Quick Start β Run ECG Pipeline).
In short: clone the repository, put best.pt from this release at
experiments/final/fold0_seed2/train1/best.pt (the matching args.yaml is already tracked there), and follow
the Quick Start snippet. Inputs are single leads sampled at 500 Hz, at most 5000 samples long and
z-scored; outputs are [onset, offset, confidence, class] in samples (1 sample = 2 ms), classes
0 = P, 1 = QRS, 2 = T.
The checkpoint can also be loaded without the repository's Trainer: build the model from args.yaml and load
checkpoint["ema"]["ema_model_state_dict"] (or checkpoint["model"] for the raw, non-EMA weights).
Intended use and limitations
- Research use: ECG delineation (P, QRS, T on- and offsets) on 500 Hz single-lead signals, trained and evaluated on LUDB only. The model was not validated on other databases, sampling rates or clinical populations.
- Not a medical device. Not intended for clinical diagnosis.
Dataset attribution
- LUDB β Kalyakulina A.I., Yusipov I.I., Moskalenko V.A., Nikolskiy A.V., Kosonogov K.A., Osipov G.V., Zolotykh N.Yu., Ivanchenko M.V. LUDB: A New Open-Access Validation Tool for Electrocardiogram Delineation Algorithms. IEEE Access, 2020, 8, 186181β186190. Distributed via PhysioNet under the Open Data Commons Attribution License (ODC-BY) v1.0. The data are not included in this release.
- MIT-BIH Noise Stress Test Database (Moody G.B., Muldrow W.K., Mark R.G., 1984; PhysioNet, ODC-BY v1.0) β
records
bw,ma,emwere used only as a training augmentation.
License
The weights and the accompanying files are released under the Apache License 2.0 (see LICENSE and
NOTICE.txt), the same license as the source code.
Copyright (c) 2026 P.G. Demidov Yaroslavl State University. Developed by Gladkov A. N., Bystrov L. Y., and Kuzmin E. V. (Department of Theoretical Computer Sciences).
Citation
If you use these weights, the architecture or the processing pipelines, please cite the paper (currently submitted to Trudy ISP RAN / Proc. ISP RAS):
@article{Gladkov2027,
title = {Neural Network YOLO-1D for Useful Signals Detection on Eddy Current Rail Defectograms},
author = {Gladkov, Artemy N. and Bystrov, Leonid Y. and Kuzmin, Egor V.},
journal = {Trudy ISP RAN/Proc. ISP RAS},
year = {2027},
note = {Submitted}
}
and the source repository: https://github.com/BystrovGladkov/YOLO_1d