Construire Kinetiq, un moteur de vérification d'exercice pour la kiné : la valeur est la preuve filtrée par confiance, facturable en RTM, au-dessus du modèle de posture.
Physical TherapyDigital HealthHealthcare AI

N'importe quel modèle de posture enregistrera 15 bons squats sur un genou qui s'effondre. J'ai construit l'IA qui attrape la répétition 9.

Ashutosh SinghalAshutosh Singhal8 juillet 202613 min

J'ai construit la première version de cette démo pour prouver qu'un modèle de posture pouvait compter des squats, et en moins d'un jour j'avais prouvé la mauvaise chose. Je lui ai soumis une patiente synthétique post-LCA que j'ai appelée Maria, 62 ans, huit semaines après une reconstruction du genou, quinze squats au poids du corps prescrits. La bibliothèque de posture gratuite a fait exactement ce que font les bibliothèques de posture gratuites. Elle a enregistré quinze répétitions, les a toutes comptées, et est passée à autre chose. Quinze sur quinze. Une séance impeccable.

Le problème, c'était la répétition 9. À la répétition 9, le genou de Maria s'effondre vers l'intérieur et elle ralentit pour compenser, le mouvement exact qu'un kinésithérapeute surveille après une reconstruction du LCA parce que c'est ainsi que les gens redéchirent le greffon. Le modèle de posture a vu un squat. Il n'a pas vu un risque de récidive de blessure, parce que voir cela n'est pas ce à quoi sert un modèle de posture. La répétition qu'il aurait dû signaler est celle qu'il a comptée.

C'est à ce moment-là que le vrai produit m'est devenu clair. Je traitais l'estimation de posture comme la partie difficile. Ce n'est plus la partie difficile. C'est gratuit.

L'estimation de posture est gratuite, alors j'ai arrêté d'essayer de lui faire concurrence

J'ai passé la première semaine à essayer de construire un meilleur suiveur de points clés, et ce fut la semaine la plus gaspillée du projet. BlazePose et MoveNet tournent déjà sur un téléphone, à 30 images par seconde, et vous donnent un squelette de 33 points clés pour rien. Chaque plateforme de kinésithérapie et chaque application de bien-être en entreprise a déjà cela ou peut l'intégrer demain. Concurrencer là-dessus, c'est concurrencer pour offrir gratuitement quelque chose qui est déjà donné gratuitement.

Ce que personne ne vous tend, c'est la couche après les points clés. Prendre un flux de posture brut et le transformer en quelque chose sur lequel un clinicien peut agir et qu'un payeur remboursera. C'est la couche que j'ai décidé de faire construire à Kinetiq, de bout en bout, et la thèse à laquelle je n'ai cessé de revenir est celle-ci.

L'estimation de posture est gratuite. La valeur, c'est le cerveau au-dessus, et la preuve facturable.

Alors j'ai jeté le suiveur et construit le moteur d'interprétation à la place. Il prend le flux de points clés (synthétique pour trois de mes patients de test, et pour un quatrième, extrait hors ligne d'un clip réel de squat capturé afin de prouver que le pipeline tourne sur des images réelles), le lisse avec un filtre 1-Euro, le soumet à un filtrage de confiance, segmente les répétitions par auto-similarité temporelle, et calcule les caractéristiques sur lesquelles un clinicien raisonne réellement : angle articulaire et amplitude de mouvement, un indice de valgus du genou, un ratio de tempo descente-remontée, la fluidité du mouvement comme Log Dimensionless Jerk, et un indice de symétrie gauche-droite. Du NumPy brut, testé unitairement. Aucun modèle dans le chemin de notation. Vous pouvez construire le tout sur veriprajna.com/fr/demos/verification-biomecanique-ia-des-exercices-et-preuve-rtm et le voir noter une séance.

Quand j'ai refait passer Maria dans ce moteur, la répétition 9 est revenue comme elle aurait dû le faire la première fois.

Tableau Kinetiq par répétition pour Maria, répétition 9 signalée VALGUS DU GENOU avec un indice de valgus de 0,054 au-dessus du seuil de 0,03 et un tempo de 1,4 au-dessus de 1,25, signalée comme risque de récidive de blessure tandis que les répétitions environnantes sont notées bonnes
Répétition 9, celle que le compteur brut a appelée bonne : le moteur renvoie un indice de valgus du genou de 0,054 (égal ou supérieur au seuil de 0,03) et un tempo de 1,4 (au-dessus de 1,25), un drapeau de risque de récidive de blessure, pas une quinzième bonne répétition.

Le moteur ne se contente pas de dire « mauvaise répétition ». Il écrit la clause qu'il a vérifiée : valgus 0,054 égal ou supérieur à 0,03, tempo 1,4 au-dessus de 1,25. Un clinicien peut contre-interroger cela. On ne peut pas contre-interroger une boîte noire, et après une chirurgie du LCA, on en a très envie.

La répétition que j'étais tenté de falsifier

Je me souviens exactement où j'ai été gourmand, et c'était la répétition 12. À la répétition 12 de la séance de Maria, le point clé de la hanche tombe sous le seuil de visibilité. La confiance du suiveur sur cette articulation tombe trop bas pour qu'on puisse s'y fier. Pendant quelques images, le moteur ne sait tout simplement pas où se trouve sa hanche.

Le geste tentant, celui qui fait mieux paraître votre benchmark, c'est d'interpoler. Deviner la position de la hanche à partir des images autour, calculer un angle quand même, noter la répétition, garder le chiffre propre. J'ai écrit cette interpolation. Elle fonctionnait. Et puis j'ai lu la littérature sur la précision monoculaire et je l'ai supprimée.

L'erreur d'angle du genou à caméra unique présente une erreur absolue moyenne de 9,3 à 21,9 degrés (Nature Scientific Reports, 2025). C'est le plafond honnête de ce type de mesure. Si je fabrique une position de hanche sur une image à faible confiance puis que j'en rapporte un angle articulaire, je ne mesure pas un genou, je génère un chiffre à l'apparence plausible et je l'appelle clinique. Pour une entreprise nommée Veriprajna, qui signifie vraie sagesse, ce n'était pas un choix difficile.

Tableau Kinetiq montrant la répétition 12 comme NON NOTÉE avec la raison LHIP non visible, le point clé de la hanche sous le seuil de visibilité, et aucun angle fabriqué pour cette répétition
Répétition 12 : le point clé de la hanche tombe sous le seuil de visibilité, donc le verdict est « non notée, hanche non visible ». Le squelette s'estompe en gris et aucun angle n'est inventé pour cette image.

Alors le moteur s'abstient. Il dit, à l'écran, « répétition non notée, hanche non visible ». Il grise le squelette. Il ne fait pas semblant.

Nous ne devinons jamais les angles articulaires à partir de points clés à faible confiance.

J'ai mis cette phrase à l'écran parce que je voulais que la discipline soit visible, pas enfouie dans un fichier de configuration. Parmi les répétitions occultées de mon jeu étiqueté, trois sur trois se sont abstenues et zéro angle n'a été fabriqué, et ce n'est pas une affirmation que j'avance, c'est un invariant testé unitairement. Une répétition occultée qui serait quand même notée serait, par définition, un angle fabriqué. Le test le détecterait. Refuser de répondre est une fonctionnalité que j'ai dû défendre contre mes propres instincts.

Pourquoi le même squat réussit-il pour un patient et échoue-t-il pour le suivant ?

J'ai failli livrer un seuil global unique, et une kinésithérapeute à qui j'ai montré une version précoce m'en a dissuadé en environ trente secondes. Son argument était simple. Un squat à 80 degrés chez une femme huit semaines post-LCA, c'est un bon progrès. Le même squat à 80 degrés chez une cliente bien-être de 30 ans en bonne santé, c'est une répétition paresseuse. Si votre moteur les note de la même façon, il ne comprend pas la rééducation, il comprend la géométrie.

Alors le moteur de règles est devenu adaptatif à la population. Les seuils sont indexés sur le profil du patient : tranche d'âge, condition, semaine de récupération. Maria, post-LCA semaine 8, reçoit une cible de flexion de 75 degrés. Jordan, un athlète de bien-être en entreprise de 30 ans aux genoux sains, en reçoit une de 95. J'ai intégré un contrôle dans la démo pour rendre le point incontestable : basculez le menu déroulant de profil, gardez exactement le même mouvement, et regardez le verdict changer.

Kinetiq montrant Jordan, profil athlète bien-être, le même squat d'environ 80 degrés noté profondeur insuffisante (le verdict « trop superficiel » à l'écran) parce que la flexion est sous la cible de 95 degrés, alors que le profil post-LCA de Maria l'avait noté bon
La même profondeur d'environ 80 degrés qui a été notée bonne pour Maria (cible 75 degrés) est notée profondeur insuffisante pour Jordan (cible 95 degrés), affichée à l'écran comme le verdict trop superficiel. Un mouvement, deux verdicts, parce que les seuils s'adaptent au patient.

La première fois que j'ai basculé ce menu déroulant devant quelqu'un et que toute la colonne de verdicts a changé sous un mouvement qui n'avait pas bougé, je les ai vus comprendre. Le même mouvement obtient un verdict différent selon le profil, et c'est du jugement clinique, pas un bug. C'est aussi la partie de la thèse qui ne vieillit pas. Quand l'estimation de posture sera parfaite, et elle le sera, le capteur ne pourra toujours pas vous dire que 80 degrés signifie une chose pour un genou en convalescence et autre chose pour un genou sain. Cette compréhension vit dans la couche au-dessus.

Les agents conseillent, le code décide

J'ai bel et bien laissé un agent IA me mettre dans l'embarras une fois, et c'est la raison pour laquelle l'architecture a l'allure qu'elle a. Tout le monde à qui je présentais le projet voulait la capacité à la mode : un agent qui lit la séance et rédige la note clinique, un agent qui surveille la tendance et escalade. Très bien. J'ai branché un Clinical Scribe et un Longitudinal Monitor sur une autre patiente, Eleanor, 70 ans, après prothèse de genou, dont l'amplitude de mouvement décline discrètement à travers son historique de séances.

Le premier brouillon que le scribe a rédigé était fluide et confiant et contenait un chiffre d'amplitude de mouvement qui n'était pas dans les preuves. Il avait arrondi, ou lissé, ou simplement inventé un nombre qui se lisait bien. Si je lui avais fait confiance, j'aurais livré une note clinique avec une mesure fabriquée dedans. C'est tout le mode de défaillance qui consiste à mettre un modèle de langage dans une boucle médicale, et je venais de le voir se produire sur mon propre écran.

Le correctif a été de rendre les agents structurellement incapables de le faire. Chaque chiffre qu'un agent introduit est vérifié contre les preuves déterministes. Tout nombre qui n'est pas dans la sortie du moteur est rejeté, et le gabarit déterministe est affiché à la place. Les deux agents s'abstiennent entièrement quand il n'y a pas de clé API. Ils interprètent et ils communiquent. Ils ne décident pas.

Panneau Kinetiq AI Scribe et Longitudinal Monitor pour Eleanor, tous deux étiquetés « contrôle d'ancrage », le moniteur signalant une tendance décroissante de l'amplitude de mouvement à travers l'historique des séances et escaladant pour revue par le clinicien
Le Longitudinal Monitor sur l'historique synthétique de séances d'Eleanor : il détecte la tendance décroissante de l'amplitude de mouvement et rédige l'escalade proactive vers le clinicien. Les deux agents sont soumis à un contrôle d'ancrage contre le moteur déterministe, de sorte que tout chiffre absent des preuves est rejeté avant d'atteindre la note.
Les agents conseillent, le code décide.

Cette phrase est la décision de conception porteuse de toute la démo. Le noyau de confiance, chaque verdict par répétition et la détermination de facturation, est du code simple testé unitairement sans aucun modèle de langage à proximité. Les agents siègent au-dessus, bornés et soumis au contrôle d'ancrage, faisant la seule chose dans laquelle ils sont vraiment bons : transformer des chiffres vérifiés en prose prête pour le clinicien. Dès qu'un agent obtient un vote sur le verdict, vous avez perdu l'auditabilité qui était tout l'enjeu.

Ce qu'un payeur rembourse réellement, c'est un reçu, pas un décompte de répétitions

La raison commerciale pour laquelle j'ai construit tout cela est une chose que j'ai apprise en lisant les règles de facturation des CMS, ce qui n'est pas la façon dont je m'attendais à passer un mois. Les cliniciens peuvent facturer le Suivi Thérapeutique à Distance (RTM) sous les codes CPT 98975-98981, plus les codes 2026 98979 et 98985, et le seuil d'éligibilité 2026 est tombé à aussi peu que 2 jours et 10 minutes de données (recherche Veriprajna WP29, 2026). Mais les CMS ne remboursent pas des coordonnées brutes. Ils exigent des données recueillies par un appareil liées à une décision de traitement. Un tas de points clés n'est pas facturable. Une détermination documentée et auditable l'est.

Cet écart n'est pas petit, parce que le problème sous-jacent n'est pas petit. L'observance des exercices de kinésithérapie à domicile tourne autour de 35 %, et 65 % des patients abandonnent leur programme au cours du premier mois (recherche Veriprajna WP29, 2026). L'auto-déclaration surestime la conformité, si bien que le clinicien facture et soigne souvent sur des données auxquelles il ne peut pas se fier. Côté employeur, les troubles musculo-squelettiques coûtent environ 3 591 dollars par employé et par an, on estime que 36 % des chirurgies musculo-squelettiques sont considérées comme inutiles (90 milliards de dollars), et plus de la moitié des employés résistent à partager des données de santé par souci de confidentialité (recherche Veriprajna WP29, 2026). Des données d'exercice vérifiées, respectueuses de la vie privée et facturables, c'est ce qui manque à tout le monde dans cette chaîne.

Donc la dernière chose que le moteur fait par séance, c'est décider : facturable, besoin d'une revue clinicienne, ou données d'appareil insuffisantes, et il exporte un rapport de séance de forme FHIR. Observations par répétition, la clause de seuil vérifiée pour chacune, la synthèse de séance, la détermination RTM, et les champs de documentation que demandent les CMS. Je dis de forme FHIR, jamais validé FHIR, parce que c'est du JSON structuré qui reflète les formes de champs Observation et DocumentReference, pas une charge utile envoyée à un dossier patient en direct. Je l'émets. Je ne prétends pas le poster (POST).

La séance de Maria, avec le drapeau de valgus de la répétition 9, ne se facture pas automatiquement. Elle est d'abord acheminée vers un clinicien, parce qu'un signal de récidive de blessure doit être vu par un humain avant de devenir une facturation. C'est la nuance honnête sur laquelle j'ai insisté : facturable ne veut pas dire tout-va-bien, cela veut dire assez bien documenté pour qu'on puisse s'en porter garant.

Résumé du benchmark Kinetiq : 100 % d'accord de verdict sur 25 cas clairs, 100 % sur 10 cas limites à moins d'un sigma d'un seuil, 3 sur 3 répétitions occultées abstenues avec 0 angle fabriqué, et 3 séances sur 4 auto-facturables avec 1 acheminée en revue
Le benchmark sur le jeu synthétique étiqueté fixe : 100 % d'accord de verdict sur 25 cas clairs et sur 10 cas limites (à environ un sigma d'un seuil), 3 sur 3 répétitions occultées abstenues avec 0 angle fabriqué, et sur 4 séances, 3 auto-facturables et 1 acheminée en revue.

Les chiffres sur ce panneau sont ceux qui m'importent, et je veux être précis sur leur portée. La vérité terrain ici, c'est le verdict impliqué par les paramètres physiques plantés versus les seuils de profil, calculé indépendamment du moteur, puis les répétitions sont rendues en points clés avec un bruit de mesure ajouté après que les étiquettes sont fixées, pour que le moteur doive récupérer le verdict à travers le bruit. Sur ce jeu, l'accord est de 100 % sur 25 cas clairs et de 100 % sur 10 cas limites situés à environ un écart-type d'un seuil. C'est un résultat de discrimination sur un jeu synthétique étiqueté, pas une garantie en monde ouvert, et les cas limites sont ceux qui basculeraient sous un seuillage naïf, ce qui est exactement pourquoi je les rapporte séparément. Ce sont des mesures durables : précision de tâche, débit d'automatisation, et honnêteté. Elles ne vieillissent pas quand le modèle de posture s'améliore, parce qu'aucune d'elles n'est un taux d'erreur de modèle de posture.

La question qui me reste

Je suis entré dans cela en pensant construire un produit de vision par ordinateur, et j'en sors convaincu d'avoir construit un produit de responsabilité qui commence par hasard avec une caméra. Le travail intéressant n'a jamais été d'obtenir les points clés. C'était de décider ce que le système a le droit de revendiquer, quand il doit s'abstenir, quels seuils s'appliquent, et ce qu'un clinicien peut mettre derrière sa licence. Si vous voulez voir le moteur noter un genou qui s'effondre, refuser une répétition occultée, et exporter le reçu, il tourne sans clé sur veriprajna.com/fr/demos/verification-biomecanique-ia-des-exercices-et-preuve-rtm.

Et si vous préférez le regarder plutôt que de lire ma description, voici le tout qui tourne de bout en bout.

La question que je continue de retourner, et celle sur laquelle j'aimerais vraiment que d'autres bâtisseurs débattent avec moi, est celle-ci. À mesure que les capteurs s'approchent asymptotiquement de la perfection, la tentation sera de laisser le modèle décider davantage, parce qu'il se trompera si rarement. Mais être rarement dans l'erreur est exactement la condition sous laquelle un chiffre fabriqué fait le plus de dégâts, parce que vous avez arrêté de vérifier. Alors où, dans vos propres systèmes, est la ligne que vous refusez de laisser le modèle franchir, et pouvez-vous pointer le code qui l'applique ?

Recherche associée

Développez votre IA en toute confiance.

Collaborez avec une équipe forte d'une solide expérience dans la conception de la prochaine génération d'IA d'entreprise. Nous vous aidons à concevoir, développer et déployer une stratégie d'IA digne de confiance.

Veriprajna société de conseil en Deep Tech est spécialisée dans la conception de systèmes d'IA critiques pour la sûreté destinés aux secteurs de la santé, de la finance et de la réglementation. Nos architectures sont validées au regard de protocoles établis et accompagnées d'une documentation de conformité complète.