Stage de recherche · 4 mois

Lecture automatique de vidéos de capsule endoscopique

Stage de fin de M1 à l'Institut des systèmes et de la robotique de l'Université de Coimbra, au Portugal. J'y ai conçu une chaîne de traitement qui parcourt une vidéo de capsule endoscopique et signale chaque lésion suspecte, avec son instant, une capture annotée, sa catégorie clinique et sa position dans le tube digestif.

  • ISR · Université de Coimbra
  • Juin – septembre 2026
  • Stage de M1
Une capsule filme le tube digestif ; un modèle analyse la vidéo et situe chaque lésion

Chiffres clés

Tous mesurés sur des vidéos de patients que les modèles n'ont jamais vues.

  • 71 %des lésions retrouvées, pour environ une fausse alerte par minute
  • 85 %au réglage large, environ deux fausses alertes par minute
  • 13 / 13patients porteurs de lésions signalés
  • 64 / 67lésions placées dans la bonne région anatomique
  • 0,90AUROC du saignement sur un jeu de données externe
  • 21 minpour analyser 48 min de vidéo, sans carte graphique

Contexte

L'examen

La capsule endoscopique est l'examen de référence de l'intestin grêle. Le patient avale une capsule de la taille d'une grosse gélule, qui filme le tube digestif pendant huit à douze heures. Le médecin relit ensuite 50 000 à 100 000 images : entre trente minutes et deux heures de lecture, pendant lesquelles une lésion visible sur quelques images seulement peut passer inaperçue.

L'objectif

Un pipeline qui prend une vidéo complète et produit, pour chaque anomalie suspecte : son instant, une capture annotée, sa catégorie clinique et sa localisation — estomac, intestin grêle ou côlon, puis position dans le grêle en pourcentage du temps de transit. Savoir où se trouve une lésion compte autant que savoir ce qu'elle est : le choix de l'intervention en dépend.

Le cadre

Le stage s'est déroulé à l'Institut des systèmes et de la robotique (ISR) de l'Université de Coimbra, dans le groupe du professeur Hélder Araújo, qui travaille sur la vision par ordinateur et ses applications médicales. C'était un projet individuel de recherche et développement, mené en anglais dans un laboratoire très international.

Un sujet recadré

Le sujet initial visait la trajectoire de la capsule en centimètres. Aucune donnée publique ne permet de la vérifier : une caméra seule ne donne pas l'échelle, et la capsule avance, s'arrête et recule au gré du péristaltisme. J'ai donc proposé une localisation anatomique, qui garde l'objectif clinique tout en restant mesurable.

Des moyens modestes

Uniquement des jeux de données publics et anonymisés (Kvasir-Capsule, Capsule Vision 2024, WCEbleedGen), un ordinateur portable sans carte graphique pour le traitement vidéo, et le quota gratuit de GPU de Kaggle pour les entraînements.

Le pipeline

De la vidéo brute au rapport, en six étapes.

Architecture du pipeline : deux branches partagent les mêmes images, l'une détecte et nomme les lésions, l'autre situe la capsule
  1. Échantillonnage de la vidéo

    La vidéo est lue avec OpenCV à 2 images par seconde : un enregistrement de 40 minutes donne environ 4 800 images à analyser.

  2. Détection des lésions

    Un réseau EfficientNet-B3 affiné sur 12 classes : huit types de lésions, la muqueuse normale, les vues dégradées (bulles, débris) et les deux repères anatomiques. La probabilité de lésion d'une image est la somme des huit classes de lésions.

  3. Regroupement en endroits à vérifier

    Les images signalées à moins de deux secondes d'écart forment un épisode, dont la catégorie clinique est votée par ses images ; les épisodes contigus forment une zone. Le médecin reçoit ainsi un endroit à vérifier, pas cinquante images.

  4. Explication visuelle

    Grad-CAM localise la région de l'image qui a déclenché l'alerte ; elle est encadrée sur la capture jointe à chaque événement.

  5. Localisation anatomique

    Un second réseau, MobileNetV3-Small, reconnaît le pylore et la valve iléo-cæcale. Ces deux franchissements découpent la vidéo en estomac, intestin grêle et côlon ; la position d'une lésion dans le grêle est le temps écoulé depuis le pylore, divisé par la durée totale du transit.

    Position de trois lésions en pourcentage du transit dans l'intestin grêle, sur une vidéo de 18 minutes
  6. Rapport

    Un fichier JSON par vidéo liste les événements avec tous leurs champs, accompagné d'une frise chronologique. Chaque décision des modèles est enregistrée image par image, ce qui permet de rejouer n'importe quelle règle sans relancer des heures de calcul.

Une évaluation honnête

Construire le pipeline n'était pas le plus difficile : il fallait surtout prouver ce qu'il vaut. Un modèle évalué sur des images d'un patient qu'il a vu à l'entraînement paraît bien meilleur qu'il ne l'est : les études qui annoncent plus de 95 % mélangent les images d'un même patient, alors qu'avec une séparation par patient les meilleurs résultats publiés sur ce jeu de données plafonnent à 0,35 de macro-F1.

  • Validation croisée par patient : quatre modèles, chacun entraîné sans les vidéos de son groupe ; chaque vidéo n'est jugée que par un modèle qui ne l'a jamais vue.
  • Vidéos tenues à l'écart : cinq vidéos mesurées une seule fois, à la fin, avec des seuils figés auparavant.
  • Critères fixés avant de mesurer : un changement n'est adopté que s'il atteint un seuil décidé à l'avance.
  • Audit des données : un contrôle par empreintes perceptuelles, robuste au recadrage, vérifie chaque jeu externe avant usage. Il a écarté 38 592 images dupliquées entre deux jeux publics.
  • Pipeline réel contre mesure : les décisions du pipeline complet sont comparées image par image à celles qui ont été mesurées, sur les 16 vidéos.
Validation croisée par patient : chaque groupe est testé par le modèle qui ne l'a pas vu
La contrainte principale : certaines lésions n'existent que chez un ou deux patients

Résultats

Mesurés une seule fois sur les vidéos tenues à l'écart, avec une tolérance de ± 5 secondes.

Lésions retrouvées sur les 5 vidéos tenues à l'écart : règle initiale, système final, puis réglage large
Détections correctes du pipeline final, chacune sur une vidéo jamais vue par son modèle : catégorie prédite, boîte Grad-CAM et position

Détecter

56 des 79 épisodes de lésion retrouvés (71 %) pour 1,2 fausse alerte par minute, contre 66 % pour la règle initiale à charge égale. Au réglage large : 67 sur 79 (85 %).

Nommer

53 des 56 lésions retrouvées reçoivent la bonne catégorie clinique parmi cinq : vasculaire, inflammatoire, lymphangiectasie, corps étranger, polype.

Situer

64 lésions sur 67 placées dans la bonne région, avec une erreur médiane de 0,8 point sur la position dans le grêle. Une segmentation qui impose l'ordre anatomique, mesurée à part, ramène l'erreur au pylore de 13 à 5 secondes.

Le saignement

Presque toutes les images de sang frais du jeu de données viennent d'un seul patient : impossible à apprendre en validation croisée. Des images externes, auditées, ont été ajoutées ; sur 2 151 images d'un autre jeu jamais vues, l'AUROC atteint 0,90.

Catégorie clinique attribuée aux épisodes de lésion : 127 sur 164 bien nommés (77 %)
Probabilité de chaque section au fil d'une vidéo : franchissements estimés (rouge) et annotés (pointillés)
Test externe du saignement sur WCEbleedGen : AUROC de chaque modèle

Limites

Un outil médical se juge autant sur ses limites que sur ses résultats. Celles-ci sont écrites noir sur blanc dans le rapport.

  • Trois lésions sur dix sont manquées au réglage par défaut, quand les logiciels cliniques annoncent plus de 90 % de détection.
  • Trop d'alertes pour un usage clinique : une alerte par minute donnerait des centaines d'endroits à vérifier sur un examen complet. Il faudrait les classer par priorité.
  • Une seule caméra, un seul hôpital : rien n'est validé sur un autre modèle de capsule.
  • Des annotations incomplètes : une partie des « fausses alertes » sont de vraies lésions jamais annotées, ce qui rend les chiffres pessimistes.

Et ensuite

Intégrer la segmentation par ordre anatomique au pipeline, valider sur les 22 examens du jeu Galar filmés avec la même caméra dans un autre hôpital, et faire annoter complètement quelques vidéos par un médecin.

Sur une vidéo entière, beaucoup d'événements tombent hors des lésions annotées : c'est la principale limite

Outils

41 modules Python (environ 6 200 lignes), 10 notebooks d'entraînement et plus de 60 commits.

PyTorch · torchvision

Réseaux EfficientNet-B3 et MobileNetV3-Small, entraînement, inférence, poids pré-entraînés sur ImageNet.

PyTorch 2.9

OpenCV

Décodage et échantillonnage des vidéos, dessin des captures annotées, essais d'homographie.

OpenCV 4.13

Grad-CAM

Carte d'activation qui situe dans l'image la région à l'origine de la décision.

scikit-learn

Classifieur de section, distance à la muqueuse normale (k-NN), AUROC et autres mesures.

scikit-learn 1.6

NumPy · pandas

Caches des sorties des modèles, rejeu des règles de décision, tableaux de résultats.

Kaggle (GPU Tesla T4)

Entraînements sur le quota gratuit : environ 3 heures de GPU pour les modèles finaux, 13 minutes par modèle.

Une démarche pilotée par la mesure

Le projet a avancé par itérations courtes, chacune conclue par une mesure. Plusieurs idées séduisantes ont été abandonnées parce qu'elles n'atteignaient pas leur critère : c'est ce qui rend les chiffres finaux crédibles.

Adopté

  • Affinage du détecteur en validation croisée par patient : davantage de lésions retrouvées et moins de fausses alertes.
  • Catégories cliniques regroupées plutôt que dix classes fines que personne ne nomme de façon fiable sur données publiques.
  • Données externes de saignement, après audit : aucun recul sur les vidéos de réglage.

Écarté, chiffres à l'appui

  • Modèle de fondation générique DINOv2 : AUROC de 0,70 contre 0,92 pour le classifieur maison.
  • Détecteurs de bulles : ils faisaient perdre des lésions.
  • Lissage temporel des probabilités : aucun gain à détection égale.
  • Progression de la capsule par homographie : impossible à valider sans vérité terrain.
Calendrier du stage, de juin à fin septembre 2026

Rapport

Le détail de chaque mesure, des choix écartés et du protocole d'évaluation.

Images endoscopiques : jeu de données public Kvasir-Capsule (licence CC BY 4.0).