$$\rightleftharpoonup{xx}$$
$$\longleftharp{xx}$$,
$$\longrightharp{xx}$$,
Déclaration éthique
Cette étude s’est entièrement appuyée sur des données publiques d’ECG anonymisées téléchargées depuis PhysioNet. Tous les ensembles de données utilisés dans cette étude ont été initialement collectés avec le consentement des sujets et avec l’approbation éthique des détenteurs des données concernés. Cette recherche n’a nécessité aucune collecte de données, aucun travail expérimental avec des sujets humains ou animaux, ni informations d’identité personnelle des patients. Par conséquent, aucune nouvelle révision éthique n’a été demandée.
Méthodologie
La Figure 2 illustre le flux de travail de l’architecture proposée.
Collecte de données
Les données ECG sont collectées à partir de la base de données PhysioNet, un dépôt populaire de signaux physiologiques. Plusieurs ensembles de données sont récupérés à partir de la base de données. Ces ensembles de données sont fusionnés en un seul ensemble de données principal qui comprend différentes classes de signaux ECG.
Ensembles de données utilisés
Cette étude a utilisé plusieurs ensembles de données ECG disponibles publiquement pour développer et évaluer un modèle d’apprentissage profond pour la classification des arythmies. La sélection de ces ensembles de données a été réalisée avec soin, en tenant compte de leur diversité en termes de démographie des patients et de la variété des types d’arythmies, afin de garantir que le modèle proposé fonctionne bien dans différentsscénarios 9. Pour cette étude, seules les données Lead-I provenant de la base de données des arythmies du MIT-BIH, de la base de données des arythmies supraventriculaires du MIT-BIH, de la base de données des arythmies 12-dérivations INCART de St. Petersburg et de la base de données Holter pour la mort subite cardiaque ont été combinées. Ces ensembles de données sont connus pour leurs enregistrements ECG annotés de haute qualité qui couvrent un large éventail de classes d’arythmies.
Les ensembles de données combinés ci-dessus incluent la démographie des patients, les dispositifs d’enregistrement, les fréquences d’échantillonnage et les contextes. La variabilité mentionnée ci-dessus dans le modèle améliore sa généralisation en l’exposant à une large gamme de morphologies ECG, de bruit et de rythmes.
Description des ensembles de données
Base de données des arythmies du MIT-BIH
Le jeu de données sur les arythmies du MIT-BIH contient 48 enregistrements ECG de trente minutes, numérotés de 100 à 234. Chaque enregistrement contient des signaux ECG à deux canaux numérisés à 360 échantillons par seconde. Les données sont stockées aux formats .dat, .hea et .atr.
Base de données sur les arythmies supraventriculaires du MIT-BIH
Il s’agit d’un sous-ensemble spécifique des bases de données MIT-BIH. La base de données des arythmies supraventriculaires du MIT-BIH comprend 78 enregistrements ECG complets, allant de 30 minutes à plusieurs heures, numérotés 801 à 811. Chaque enregistrement inclut des signaux ECG à deux canaux, convertis en format numérique à 128 échantillons par seconde.
La base de données d’arythmies 12 dérivations INCART de Saint-Pétersbourg
Cette base de données comprend 75 enregistrements annotés prélevés sur 32 moniteurs Holter. Chaque enregistrement dure 30 minutes et comprend 12 leads standards, chacun échantillonné à 257 Hz. La puissance du signal varie entre 250 et 1100 unités de convertisseur analogique-numérique par millivolt.
Base de données Holter pour décès cardiaque imprévu
Ce jeu de données fait partie des nombreux enregistrements Holter en accès libre qui capturent les occurrences factuelles de tachycardie ventriculaire (TV) et de fibrillation ventriculaire (FV). Les deux peuvent entraîner une mort cardiaque imprévue. Chaque disque dure 24 heures et est échantillonné à 250 Hz.
Prétraitement des données
Dans cette étude, quatre bases de données publiques ECG avec des taux d’échantillonnage différents ont été utilisées : MIT-BIH Arythmie (360 Hz), MIT-BIH Supraventriculaire Arrythmie (128 Hz), St. Petersburg INCART 12-dérivation (257 Hz) et Holter pour mort subite cardiaque (250 Hz). Pour garantir que toutes les données étaient cohérentes et pouvaient être combinées lors de l’entraînement du modèle, tous les signaux ECG ont été rééchantillonnés à un taux commun de 360 Hz, qui correspond à la base de données d’arythmies du MIT-BIH et est couramment utilisé comme norme dans la recherche ECG. Le rééchantillonnage était effectué par interpolation limitée par bande ; initialement, les signaux ECG étaient filtrés en passe-bas pour éviter l’aliasing, puis un noyau de reconstruction basé sur le SINC a été utilisé pour l’interpolation, suivi d’un rééchantillonnage final à 360 Hz. Après rééchantillonnage, chaque signal a été divisé en fenêtres de 180 échantillons, soit environ 0,5 s de données, garantissant que tous les ensembles de données aient la même résolution temporelle. Cette standardisation a permis de combiner des signaux provenant de différentes bases de données pour l’entraînement et les tests, aidant le modèle à apprendre des motifs cohérents au fil du temps.
Le prétraitement impliquait plusieurs étapes importantes pour garantir la qualité des données d’entrée :
Segmentation des données :
Après rééchantillonnage, chaque signal ECG était divisé en fenêtres de longueur fixe de 180 échantillons. Cela correspond à environ 0,5 s de durée du signal à une fréquence d’échantillonnage de 360 Hz. Cette recherche utilisait une fenêtre coulissante fixe, non chevauchante, pour la segmentation. Chaque fenêtre a recueilli une séquence continue d’échantillons ECG. L’étude a choisi une fenêtre de 180 échantillons car un intervalle de 0,5 s suffit à capturer un cycle cardiaque complet ou ses principales parties : l’onde P, le complexe QRS et l’onde T, pour les fréquences cardiaques typiques chez les adultes. Une étiquette de classe était attribuée à chaque segment en fonction de l’annotation au centre du segment. Ainsi, l’étiquette du segment correspondait à la forme principale du battement de cœur dans cette fenêtre. La méthode de la fenêtre coulissante a appliqué cette fonction de segmentation :

où si est l’échantillon ECG au moment i.
Normalisation :
Normalisation des données ECG segmentées avec un ajustement Min-Max pour s’assurer que toutes les caractéristiques avaient des valeurs comprises entre 0 et1 10.

Cette étape aide à accélérer la convergence du modèle pendant l’entraînement.
Équilibrage des classes avec SMOTE
Les battements normaux (N) dépassaient largement les classes anormales de battements cardiaques dans l’ensemble de données ECG, qui montraient un déséquilibre de classe significatif. Après segmentation, normalisation et division par train-test, le jeu de données d’entraînement a été soumis à la technique de suréchantillonnage synthétique des minorités (SMOTE) pour résoudre ce problème.
Un espace de caractéristiques de dimension 180 a été utilisé pour représenter chaque segment ECG, composé de 180 échantillons normalisés. SMOTE utilisait la distance euclidienne pour déterminer les k plus proches voisins (k = 5) de chaque échantillon minoritaire au sein de sa propre classe. SMOTE était appliqué uniquement aux données d’entraînement, qui étaient divisées en 70 % d’ensembles d’entraînement et 30 % d’ensembles de test à l’aide d’échantillonnage stratifié. Ainsi, aucun échantillon artificiel n’a été ajouté à l’ensemble de tests, garantissant que les résultats du test n’étaient pas influencés par le suréchantillonnage. Les données de test sont restées inchangées, conservant leur distribution de classes initiale, et n’ont été utilisées que pour évaluer le modèle de manière équitable. En conséquence, les résultats de haute performance de cette étude démontrent la véritable capacité du modèle à généraliser, non pas due à un surajustement ou à des scores gonflés liés à l’ajout d’échantillons supplémentaires.
Répartition des essais :
Après prétraitement et filtrage des classes, l’ensemble de données a été divisé en sous-ensembles d’entraînement et de test avec une répartition de 70 % à 30 % grâce à un échantillonnage aléatoire stratifié. Cette stratification est basée sur les étiquettes de classes afin de garantir que les proportions relatives de chaque classe de battements de cœur sont maintenues dans les ensembles d’entraînement et de test.
La division a été réalisée à l’aide d’une graine aléatoire pour la reproductibilité. Chaque segment ECG apparaissait exclusivement dans le set d’entraînement ou dans le set de test. Pour éviter les biais et les déviations des données, chaque étape de prétraitement pouvant affecter la distribution des données (à savoir, l’équilibrage des classes via SMOTE) n’était effectuée qu’après scindation et uniquement sur les données d’entraînement.
À cet égard, en maintenant les proportions de classes, en utilisant la stratification aléatoire et en séparant strictement les échantillons en ensembles d’entraînement et de test, le processus de découpage réduit la probabilité de biais dans les échantillons, permettant aux métriques de performance de refléter la généralisation du modèle plutôt que les résidus spécifiques aux données.
Découpe des ensembles de données et distribution des classes
Le jeu de données final a été divisé en ensembles d’entraînement et de test, avec 70 % pour l’entraînement et 30 % pour les tests. Après l’application de SMOTE, le déséquilibre de classe a été réduit, garantissant que chaque type d’arythmie était bien représenté à la fois dans les ensembles d’entraînement et de test. Un total de 3 966 620 segments ECG ont été utilisés pour la formation, tandis que 112 575 segments ECG ont été utilisés pour les tests. Le grand volume de données, combiné à la variété des types d’arythmies, a permis la création d’un modèle identifiant efficacement différents types d’arythmies dans les signaux ECG réels. Cette étude utilise des modèles d’apprentissage profond pour classer les arythmies de l’ECG. Les cinq types de battements cardiaques, à savoir Normal (N), Bloc de branche du faisceau gauche (L), Bloc de branche du faisceau droit (R), Battement prématuré de l’Atrie (A) et Contraction ventriculaire prématurée (V), ont été choisis conformément aux annotations standardisées du battement fournies dans la base de données des arythmies du MIT-BIH ainsi qu’aux directives AAMI pour l’annotation du battement ECG. Les cinq annotations de battement mentionnées ici englobent toutes des affections cardiaques importantes qui relèvent de la large catégorie des arythmies et présentent des caractéristiques d’onde distinctives dans les signaux ECG autour des ondes P, QRS et T.
De plus, ces classes comptent parmi les plus fréquentes et sont systématiquement étiquetées dans les bases de données publiques d’ECG, ce qui facilite la vérification de leur efficacité comparée à d’autres approches de classification du rythme cardiaque basées sur l’ECG. Les ensembles de données ont été répartis selon une méthode inter-patients. Cette configuration garantissait que les segments ECG d’un seul patient n’apparaissaient pas simultanément dans les ensembles d’entraînement et de test. Une fois cette division effectuée, SMOTE n’a été appliqué qu’à l’ensemble d’entraînement. L’ensemble de test est resté exempt d’échantillons synthétiques et de fenêtres temporelles répétées. Tout cela aide à éviter le chevauchement au niveau des segments et favorise une véritable généralisation lorsqu’on traite des patients non vus auparavant.
Répartition des classes avant et après SMOTE :
Le jeu de données original présentait un déséquilibre significatif entre les classes, avec un grand nombre de battements normaux (N) et moins d’échantillons pour les classes anormales. Avant l’utilisation de SMOTE, les données d’entraînement comptaient environ 133 320 segments Normal (N), 8 075 Bloc de branche gauche (L), 10 431 Bloc de branche droite (R), 4 489 Battements prématurés auriculaires (A) et 60 682 segments de contraction ventriculaire prématurée (V). Pour corriger ce déséquilibre, SMOTE a été appliqué uniquement à l’ensemble d’entraînement, augmentant le nombre d’échantillons dans les classes minoritaires pour correspondre à la classe majoritaire. Après l’augmentation, chaque classe comptait 793 324 segments, ce qui a totalisé 3 966 620 segments ECG pour la formation. L’ensemble test, qui comptait 112 575 segments, a conservé sa distribution de classes initiale et n’a pas été suréchantillonné. Cette approche garantissait une évaluation juste et impartiale des performances du modèle.
Formation et inférence
a examiné l’efficacité computationnelle en vérifiant les performances d’entraînement et d’inférence sur un GPU NVIDIA RTX 3050 avec 6 Go de mémoire. Le processus de formation durait environ 3,2 heures sur 60 époques. La latence d’inférence était en moyenne de 0,45 ms pour chaque segment de 180 échantillons, ce qui permet une utilisation en temps réel. L’utilisation de la mémoire sur le GPU a atteint un pic de 4,2 Go, et le modèle ne dispose que de 1,8 million de paramètres, ce qui le rend léger comparé à la plupart des systèmes ECG basés sur transformateurs.
Le processus d’entraînement et d’inférence comprend les étapes suivantes :
Configuration de la formation : Paramètres d’entraînement, tels que le taux d’apprentissage, la taille du lot et les époques, sont définis.
Entraînement du modèle : Le modèle CNN-Transformer est entraîné sur les données d’entraînement.
Validation : Après l’entraînement, la précision et la perte de validation du modèle sont vérifiées. Si les performances sont bonnes, le modèle est sauvegardé. Si les performances sont faibles, le pipeline se répète avec différents paramètres d’entraînement, en revenant à l’étape de réglage des paramètres.
Architecture du modèle
L’ensemble du système CNN-Transformateur comprend quatre parties principales : extraction convolutive des caractéristiques, une couche de projection, l’encodeur du transformateur, et enfin la tête de classification. Le bloc convolutionnel commence par une couche convolutionnelle unidimensionnelle avec 32 filtres, une taille de noyau de 3, une foulée de 1 et un bourrage de 1, suivi d’un ReLU. Cela réduit les choses avec le max-pooling, taille du noyau 2, pour réduire la résolution temporelle du signal. Après cette première couche de convolution, il y en a une autre avec 64 filtres, même taille de noyau 3, foulée 1, bourrage 1, ReLU à nouveau, et un autre max-pooling de taille 2. La sortie de tout cela est aplatie, passée à travers une couche de projection linéaire qui associe les caractéristiques à un espace d’immersion de dimension 128, qui alimente ensuite le transformateur18,19.
Le bloc transformateur comporte deux couches d’encodeur, chacune avec une auto-attention multi-têtes utilisant 4 têtes pour capter les dépendances à longue portée dans le signal ECG. Dans chaque couche, il existe un réseau feedforward positionnel avec une taille cachée de 256 et un coup de débranchement de 0,5 pour aider au surappoint. La normalisation des couches a lieu après chaque sous-couche, ce qui stabilise l’entraînement.
Pour la tête de classification, c’est une couche entièrement connectée qui descend de 128 à 64, suivie de ReLU et de nouveau de 0,5. Ensuite, la couche de sortie contient cinq neurones pour les classes d’arythmies, avec Softmax pour obtenir les probabilités.
Blocs de réseaux neuronaux convolutionnels 1D (CNN) :
Le bloc CNN se compose de deux couches convolutionnelles 1D, chacune suivie d’une activation ReLU et d’une couche de pooling max. Ces couches aident à identifier les relations spatiales au sein du signal ECG d’entrée. Pour améliorer l’extraction des caractéristiques, des fonctions d’activation supplémentaires de ReLU sont appliquées après chaque étape de transformation dans les couches CNN.
Première couche convolutionnelle : Cette couche utilise 32 filtres, chacun de taille 3, sur le signal d’entrée. Le processus peut s’écrire ainsi :

où yi est la sortie, wj représente les poids du filtre, xi+j est le segment d’entrée, b est le terme de polarisation, et σ représente la fonction d’activation (ReLU). La carte de caractéristiques résultante passe par une couche d’activation ReLU pour ajouter la non-linéarité :

Couche de pooling : Après chaque opération convolutionnelle, une étape de max-pooling est appliquée pour réduire de moitié les dimensions spatiales. Ce processus est défini comme suit :

Cela permet de conserver les caractéristiques les plus significatives tout en réduisant la charge de calcul.
Deuxième couche convolutionnelle : Cette couche utilise 64 filtres de taille 3 x 3 pour traiter les cartes de caractéristiques de la couche précédente, permettant au modèle de détecter des motifs plus complexes. Après la convolution, une fonction d’activation ReLU est appliquée pour introduire la non-linéarité dans le modèle.

Cette étape garantit que le modèle capture des motifs détaillés à partir du signal ECG.
Couches d’activation supplémentaires : L’activation de ReLU est appliquée après chaque étape suivant le processus de convolution pour aider le réseau à mieux capturer des motifs complexes, garantissant que le modèle se concentre sur des activations positives.
Processus d’aplatissement : Après la deuxième opération de max-pooling, les feature maps sont aplaties en un seul vecteur pour l’entrée du bloc transformateur.
Blocs de transformateurs :
Le bloc transformateur se compose de deux couches d’auto-attention multi-têtes, qui aident le modèle à comprendre les relations entre différentes parties du signal ECG au fil du temps. L’auto-attention multi-têtes fonctionne en examinant chaque paire d’éléments dans une séquence. Pour une suite avec requête Q, clé K et valeur V, l’attention est calculée comme suit :

Ici, dk est la dimensionnalité des vecteurs clés, assurant l’invariance d’échelle.
Couches feedforward : Chaque sortie d’auto-attention passe par un réseau feedforward entièrement connecté avec activation ReLU, suivie de la normalisation des couches. Cette étape affine les caractéristiques temporelles extraites :

où W1 et b1 sont les poids et les biais de la couche d’avance.
Représentation par lots : Le transformateur fonctionne sur des séquences en configuration batch-first, assurant la compatibilité avec le format d’entrée du bloc CNN.
Couches entièrement connectées (denses) :
Après traitement via le bloc transformateur, la séquence de sortie est aplatie puis envoyée à travers deux couches entièrement connectées pour effectuer la classification. La première couche entièrement connectée transforme le vecteur d’entrée en un espace de caractéristiques de 128 dimensions, le remodelant au passage.

où W est la matrice de poids, x est le vecteur d’entrée, et b est le vecteur de polarisation. Une couche d’activation ReLU est appliquée :

Une couche de déchure avec un taux de 0,5 suit pour éviter le sur-ajustement.
Deuxième couche entièrement connectée : La couche finale associe les caractéristiques de dimension 128 au nombre de classes de battements de cœur (par exemple, 5 classes pour la détection des arythmies). La sortie passe par une fonction log-SoftMax pour calculer les probabilités logaritaires : exp(xi)
Modèle hybride CNN-transformateur
Le modèle présenté est un modèle hybride d’apprentissage profond qui combine les forces des CNN et des transformateurs pour utiliser à la fois des représentations spatiales et temporelles. Cette architecture est spécialement adaptée pour traiter des données complexes et de longue séquence telles que des signaux physiologiques.

L’équation représente la représentation en entrée, où N = nombre d’échantillons, T = nombre d’écarts de temps, d = dimension de caractéristique par pas de temps.

Cette équation désigne les plongements positionnels, où pos = position dans la séquence ; i = indice de dimension d’enracinement.
Module CNN – Extraction locale des caractéristiques
Les CNN apprennent efficacement les dépendances locales et les schémas morphologiques tels que les pics, pentes ou pics dans les données séquentielles. La couche convolutionnelle utilise
des noyaux d’étendue
spatiale sur un tenseur
d’entrée . Chaque canal de sortie m est déterminé par :

= nombre de canaux d’entrée ; K = taille du noyau ; W = poids de filtre ; b = biais
Fonction ReLU
Dans ce cas,
représente le poids apprenable et
est le biais pour le canal mA, une activation non linéaire, comme l’Unité Linéaire Rectifiée (ReLU), est appliquée :

Pooling et compression des fonctionnalités
Les couches de pooling réduisent la dimension spatiale ou temporelle des cartes de caractéristiques, préservant des éléments importants et réduisant le calcul. Dans le pooling maximal avec taille
de fenêtre et foulée s, la caractéristique regroupée à l’emplacement
est :

Longueur de sortie après mise en commun

Où
est la longueur d’entrée ; stride définit une taille de pas pour faire glisser la fenêtre de pooling. Cette formule calcule la longueur de sortie d’une carte de caractéristiques après une opération de mise en commun (par exemple, le pooling maximal). Il calcule à quel point la feature map est réduite en fonction de la longueur d’entrée, de la taille du pool et de la foulée. Transforme des cartes de caractéristiques multidimensionnelles en un vecteur pour des couches entièrement connectées.
Encodeur transformateur – capture des dépendances à longue portée
Les transformers utilisent l’auto-attention pour apprendre les dépendances temporelles à longue portée dans les séquences17.
Attention scalaire à échelle

Q, K, V sont des matrices de requête, de clé et de valeur calculées par projection apprise ;
est la dimension clé utilisée pour mettre à l’échelle le produit scalaire.
Attention multi-tête

Chaque tête calcule l’attention indépendamment ; les sorties sont concaténées et transformées linéairement.
sont des matrices de projection apprises pour chaque tête.
est le poids de projection final après la concaténation18,19.
Prédiction finale et défaite
Les couches entièrement connectées associent des caractéristiques aux logits, qui sont ensuite transformées en prédictions à l’aide de fonctions d’activation. Après quelques couches convolutionnelles et de pooling,
est aplati en un vecteur
Une couche entièrement connexe calcule les logits : Une couche entièrement connectée calcule alors les logites de classe :

Activation Sigmoid/Softmax :

La fonction d’activation associe la sortie brute « z » du modèle aux probabilités. Le sigmoïde est appliqué à la classification binaire, et le softmax aux problèmes multi-classes pour la distribution des probabilités entre classes. z est la sortie linéaire (par exemple, dernière couche : z = Wx + b). La sortie ŷ est comprise entre (0, 1), ce qui signifie uneprobabilité 20.
Processus de formation
La formation était réalisée sur un système avec les spécifications matérielles suivantes :
Processeur : AMD Ryzen 7 7840HS
RAM CPU : 16 Go
RAM GPU : 6 Go NVIDIA GeForce RTX 3050
Les modèles ont été entraînés à l’aide de l’optimiseur Adam, qui adapte le taux d’apprentissage pendant l’entraînement en fonction des premier et deuxième moments du gradient. La règle de mise à jour pour Adam est donnée par :

Dans cette configuration, mt et vt représentent les estimations du premier et du second moment, α est le taux d’apprentissage, et ε est une petite constante utilisée pour éviter la division par zéro. Les modèles ont été entraînés pendant 60 époques, avec des arrêts précoces pour éviter le surappoint. Un lot de 1024 était utilisé, et les données d’entraînement étaient chargées dans les modèles à l’aide du DataLoader de PyTorch. Le dropout et la normalisation par lots ont été intégrés pour régulariser le modèle et accélérer la convergence. Le dropout est une méthode de régularisation qui désactive aléatoirement un pourcentage p des neurones pendant l’entraînement, ce qui aide à réduire le sur-ajustement. Mathématiquement, soit zi l’activation duième neurone. Pendant la phase d’entraînement, l’activation modifiée z' est calculée comme suit :

où p est le taux d’abandon scolaire (par exemple, p = 0,5 pour un abandon de 50 %). Lors de l’inférence, aucune coupure n’est appliquée et le réseau complet est utilisé.
La convergence dans les réseaux de neurones est un problème qui impacte significativement les systèmes de classification existants dans le secteur de la santé, surtout lorsque les diagnostics sont incohérents en raison d’une convergence insuffisante. Des recherches récentes sur les approches d’optimisation en temps prédéfini et la convergence à un temps fixe ont montré qu’il est encore possible d’entraîner des modèles convergent dans un nombre fixe d’itérations pour tous les états initiaux. Les modèles futurs basés sur celui-ci peuvent inclure une optimisation en temps prédéfini.
Normalisation par lots :
La normalisation par lots stabilise et accélère l’entraînement en normalisant les entrées de chaque couche. Étant donné un mini-lot d’activations x = {x 1, x2, . . ., xN}, la sortie normalisée par lots xi .se calcule comme suit :


où μB et σB2 sont la moyenne et la variance du lot, ε est une petite constante pour la stabilité numérique, et γ et β sont des paramètres apprenables qui scalent et déplacent les valeurs normalisées. La normalisation par lots aide à réduire le décalage interne des covariables et permet l’utilisation de taux d’apprentissage plus élevés. Ces techniques, combinées à l’optimiseur Adam, assurent un entraînement robuste en atténuant le surapprentissage et en améliorant la vitesse deconvergence 21,22.
La figure 3 montre la perte de validation et la précision de validation sur des époques lors de l’entraînement d’un modèle d’apprentissage automatique. La précision de la validation (ligne bleue, axe Y droit) commence relativement faible (environ 97,5 %) et augmente rapidement au cours des dix premières époques. Elle continue de s’améliorer et atteint des niveaux d’environ 99,7 % à 99,8 % après environ 20 époques. Cela indique que le modèle apprend et applique bien les connaissances sur l’ensemble de validation. La perte de validation (ligne rouge, axe Y gauche) commence élevée, puis chute brutalement jusqu’à presque zéro dans les premières époques (environ 2 à 3). Après cela, il reste quasiment à zéro pour le reste del’entraînement de 23,24.