# Segmentation de nématodes dans des images de microscopie

Delmas Clément

<figure><img src="image_1.png" /></figure>

## To cite this version:

Delmas Clément. Segmentation de nématodes dans des images de microscopie. Informatique [cs]. 2025. hal-05378527

HAL Id: hal-05378527

https://inria.hal.science/hal-05378527v1

Submitted on 23 Nov 2025

HAL is a multi-disciplinary open access
archive for the deposit and dissemination of sci-
entific research documents, whether they are pub-
lished or not. The documents may come from
teaching and research institutions in France or
abroad, or from public or private research centers.

L'archive ouverte pluridisciplinaire HAL, est
destinée au dépôt et à la diffusion de documents
scientifiques de niveau recherche, publiés ou non,
émanant des établissements d'enseignement et de
recherche français ou étrangers, des laboratoires
publics ou privés.

<figure><img src="image_2.png" /></figure>

Distributed under a Creative Commons Attribution 4.0 International License
Segmentation de nématodes dans des
images de microscopie

Mémoire de stage de fin d'études

Présenté par : Clément Delmas

Encadré par : Nicolas Papadakis (IMB)
et Laure Villate (BioGeCo)

Stage effectué du 01/04/2025 au 30/09/2025

Soutenu le 18/06/2025
Remerciements

Je tiens à exprimer ma profonde gratitude envers toutes les personnes qui ont contribué de près ou de loin à la réalisation de ce mémoire.

Merci tout particulièrement à mes encadrants Nicolas Papadakis et Laure Villate pour leur soutien, leurs conseils avisés et leur disponibilité tout au long de mon stage. Leur expertise m'a été précieuse pour mener à bien ce projet. Je souhaite également remercier chaleureusement Raphaël Durand et Kylian Desier, mes collègues de bureau, pour leurs conseils et les discussions enrichissantes autour de mon projet. Je remercie également l'équipe de l'Institut de Mathématiques de Bordeaux pour leur accueil chaleureux et leur aide technique, ainsi que l'équipe du laboratoire BioGeCo pour leur confiance. Je tiens tout particulièrement à remercier Aure Coudreau, Estelle Ducourtoux et Yannis Clavier pour leur collaboration et leur précieuse contribution aux annotations, qui ont joué un rôle essentiel dans la réussite de ce projet.
# Table des matières

<table><thead><tr><th></th><th></th></tr></thead><tbody><tr><td>1 Introduction</td><td>4</td></tr><tr><td>1.1 Contexte du stage</td><td>4</td></tr><tr><td>1.2 Contexte biologique</td><td>5</td></tr><tr><td>1.3 Problématiques</td><td>7</td></tr><tr><td>1.4 Objectifs du stage</td><td>7</td></tr><tr><td>1.5 Plan du mémoire</td><td>8</td></tr><tr><td>2 État de l'art</td><td>10</td></tr><tr><td>2.1 Comptage par traitement d'image classique</td><td>10</td></tr><tr><td>2.2 Comptage par méthode d'Apprentissage profond</td><td>11</td></tr><tr><td>2.2.1 Introduction au Deep Learning pour la vision par ordinateur</td><td>11</td></tr><tr><td>2.2.2 Architectures pertinentes pour le comptage de nématodes</td><td>12</td></tr><tr><td>2.3 Travaux existants sur la segmentation de nématodes</td><td>18</td></tr><tr><td>2.3.1 Comptage de nématodes à partir de vidéos</td><td>18</td></tr><tr><td>2.3.2 Le modèle WormSwim</td><td>18</td></tr><tr><td>2.3.3 Le modèle YOLOv8 pour la détection et la segmentation</td><td>19</td></tr><tr><td>2.4 Augmentation des données : Intégration des nématodes dans des images de microscopie</td><td>20</td></tr><tr><td>2.4.1 Alpha Blending</td><td>20</td></tr><tr><td>2.4.2 Poisson blending</td><td>20</td></tr><tr><td>3 Matériel et Données</td><td>22</td></tr><tr><td>3.1 Données synthétiques via la méthode Poisson blending</td><td>22</td></tr><tr><td>3.2 Données réelles via annotation par application</td><td>22</td></tr><tr><td>3.2.1 Machine utilisée</td><td>23</td></tr><tr><td>3.2.2 Bibliothèques principales utilisées</td><td>23</td></tr><tr><td>4 Méthodologie</td><td>24</td></tr><tr><td>4.1 Application de comptage automatique</td><td>24</td></tr><tr><td>4.1.1 Fonctionnalités principales</td><td>25</td></tr><tr><td>4.1.2 Ergonomie</td><td>25</td></tr><tr><td>4.1.3 Boucle d'amélioration continue</td><td>25</td></tr><tr><td>4.2 Entrainement des modèles</td><td>26</td></tr><tr><td>4.2.1 Choix du modèle YoloV8 pour la détection des vers</td><td>26</td></tr><tr><td>4.2.2 Données utilisées</td><td>26</td></tr><tr><td>4.2.3 Pipeline d'entraînement du modèle de détection</td><td>33</td></tr><tr><td>4.2.4 Stratégie pour identifier les stades de développement</td><td>38</td></tr></tbody></table>
<table><tr><td><b>5 Résultats et discussion</b></td><td><b>40</b></td></tr><tr><td>5.1 Évaluation quantitative et qualitative des modèles</td><td>40</td></tr><tr><td>5.1.1 Quelle métrique choisir?</td><td>40</td></tr><tr><td>5.1.2 Evolution des résultats des modèles</td><td>41</td></tr><tr><td>5.2 Comparaison du modèle final (avec 200 images réelles) avec un modèle de la litérature</td><td>45</td></tr><tr><td>5.3 Limites observées et améliorations possibles</td><td>48</td></tr><tr><td>5.4 Enjeux environnementaux et sociétaux</td><td>49</td></tr><tr><td><b>6 Conclusion et perspectives</b></td><td><b>50</b></td></tr><tr><td><b>Bibliographie</b></td><td><b>51</b></td></tr><tr><td><b>A Annexes</b></td><td><b>54</b></td></tr><tr><td>A.1 Fonction pour seeder les entrainements des modèles</td><td>54</td></tr><tr><td>A.2 Courbe Précision-Rappel.</td><td>55</td></tr><tr><td>A.3 Posters.</td><td>55</td></tr></table>
# 1

# Introduction

## 1.1 Contexte du stage

Les avancées récentes en intelligence artificielle, et plus particulièrement en vision par ordinateur, ont ouvert la voie à l'automatisation de tâches visuelles complexes dans des domaines variés comme la médecine, l'agriculture ou la biologie. L'intelligence artificielle permet d'automatiser des tâches complexes telles que la classification d'images, la détection d'objets, la segmentation sémantique, d'instance, et même le comptage précis d'éléments dans une scène. En biologie, elle facilite de plus en plus l'analyse d'images en laboratoire, notamment pour l'observation de cellules, de bactéries ou d'autres micro-organismes. Toutefois, certaines images présentent encore des défis majeurs pour les systèmes de vision par ordinateur : objets translucides, formes irrégulières, chevauchements, fond bruité ou faible contraste. C'est notamment le cas des nématodes, qui sont des petits vers filiformes, leur morphologie fine, allongée et partiellement translucide, associée à des positions souvent courbées ou enchevêtrées, complique considérablement leur identification sur des images de microscopie. À cela s'ajoute la présence de débris ou d'artefacts visuellement proches des vers. Ce contexte impose de recourir à des méthodes de segmentation avancées, capables de reconnaître et d'isoler individuellement chaque ver, malgré des conditions visuelles dégradées. Bien que les techniques d'intelligence artificielle ont connu des progrès notables dans le domaine biomédical, peu de travaux se sont intéressés à la segmentation d'instance de nématodes, et encore moins à leur comptage automatisé, qui reste aujourd'hui largement réalisé de manière manuelle en laboratoire.

Ce mémoire s'inscrit dans le cadre de mon stage de Master 2 en Intelligence Artificielle, réalisé à l'Institut de Mathématiques de Bordeaux (IMB), en collaboration avec le laboratoire BioGeCo (Biodiversité, Gènes et Communautés). Il porte sur le développement d'une application pour les biologistes de comptage des nématodes du pin (*Bursaphelenchus xylophilus*) à partir d'images prises à la loupe binoculaire. L'objectif de ce rapport est de présenter les étapes ayant mené à la création des différentes fonctionnalités de l'application, depuis la génération des données jusqu'au comptage automatique des nématodes, en distinguant les différents stades d'évolution des vers.

Ce stage a été réalisé au sein de l'équipe MONC (Modélisation en Oncologie) de l'IMB, dirigée par mon encadrant M. Nicolas Papadakis. Cette équipe est spécialisée dans le développement d'outils numériques pour l'oncologie, s'appuyant notamment sur le traitement d'images médicales et les techniques d'intelligence artificielle. C'est dans ce cadre que j'ai été intégré à l'équipe, bien que mon sujet porte sur une problématique différente : la segmentation de nématodes sur des images de microscopie. La forte expertise en IA présente au sein de l'équipe m'a offert un environnement propice aux échanges scientifiques autour de mon projet. L'équipe organise des réunions toutes les deux semaines, permettant à chacun de faire le point sur l'avancement de ses travaux. En parallèle, j'ai bénéficié d'un suivi hebdomadaire avec mon encadrant, facilité par la
proximité de nos bureaux, ce qui a rendu les échanges faciles, réactifs et efficaces tout au long du stage.

## 1.2 Contexte biologique

Le nématode du pin est un ver microscopique phytopathogène, originaire d'Amérique du Nord. Il a été introduit accidentellement dans plusieurs pays d'Asie (Japon, Chine, Taïwan) dès le début du XXe siècle, avant d'apparaître en Europe en 1999, au Portugal. Depuis, il a envahi une grande partie du territoire portugais ainsi que certaines zones de l'Espagne. Il n'est pas encore présent en France, mais le risque d'introduction est élevé, en particulier dans la région Nouvelle-Aquitaine, qui concentre plus de 800 000 hectares de pins maritimes, soit près de 3/4 de la surface nationale [16]. Transmis par des insectes vecteurs du genre *Monochamus* (cf. figure 1.1), le nématode s'attaque aux tissus conducteurs des arbres, provoquant un dépérissement rapide des conifères. Son impact est doublement préoccupant, à la fois économiquement, en raison des pertes de ressources en bois, et écologiquement, en raison de la dégradation des écosystèmes forestiers et de la perte de biodiversité. Une étude d'impact menée par Soliman et al. [22] estime que, sans mesures de contrôle, les pertes pourraient atteindre 22 milliards d'euros à l'échelle européenne d'ici 2030.

<figure><img src="image_3.png" /><figcaption>FIGURE 1.1 – Photo : insecte vecteur (cf. Poster A.2)</figcaption></figure>

Conformément à la réglementation européenne, *B. xylophilus* est classé comme organisme de quarantaine prioritaire, ce qui implique des mesures de lutte drastiques. En cas de détection, la législation française impose l'abattage systématique de tous les arbres hôtes dans un rayon de 500 mètres autour du foyer [3], ce qui peut entraîner la destruction de larges zones forestières.

Face à cet enjeu, il est essentiel de mieux comprendre le nématode du pin, en particulier sa dynamique biologique (croissance, reproduction, mortalité) dans des environnements variés. C'est dans cette optique que des recherches sont menées depuis 2025 à l'INRAE de Bordeaux, au sein de la plateforme expérimentale EMERGREEN (cf. figure 1.2), située à Villenave d'Ornon. Cette serre confinée a été spécialement conçue pour l'étude des espèces de quarantaine, et est essentiellement dédiée à l'analyse du nématode du pin.

Quel que soit leur objectif, les expérimentations menées dans cette structure passe toujours par une étape de quantification des nématodes dans le bois ou dans d'autres supports. Pour ce faire, les biologistes utilisent un protocole d'extraction standardisé : des copeaux de bois sont prélevés, puis soumis à la méthode de Baermann (cf. figure 1.3 et figure 1.4), qui permet de récupérer les vers présents. Les nématodes extraits sont ensuite placés dans des boîtes de Pétri,
<figure><img src="image_4.png" /><figcaption>FIGURE 1.2 – Photo : serre EMERGREEN de l'INRAE de Bordeaux</figcaption></figure>

avec trois réplicats par extraction. Chaque boîte est comptée visuellement sous loupe binoculaire
à l'aide d'une compteur manuel.

<figure><img src="image_5.png" /><figcaption>FIGURE 1.3 – Schéma : protocole d'extraction des nématodes par la méthode de Baermann</figcaption></figure>

Le comptage manuel des nématodes constitue une tâche particulièrement chronophage, qui nécessite l'intervention de personnel qualifié, en raison de la complexité des images observées (cf. figure 1.5). Cette difficulté s'accentue lorsque les vers sont nombreux, enchevêtrés, translucides, ou mal différenciés des débris présents dans l'image. Cette méthode limite à la fois la productivité et la reproductibilité des analyses, en introduisant aussi une part de subjectivité et d'erreur humaine.

Dans ce contexte, l'automatisation du processus de détection et de comptage des nématodes apparaît comme une solution importante visant à accélérer les observations, à réduire la subjectivité des mesures, et à fournir des résultats fiables sur de larges ensembles de données. Cependant, la tâche reste techniquement exigeante : les nématodes peuvent être très enchevêtrés, se confondre avec le fond, ou être rendus difficilement visibles par leur transparence ou leur taille. De plus, les images microscopiques sont souvent perturbées par la présence d'artefacts ou de débris, visuellement proches des vers. Ces contraintes justifient l'utilisation de méthodes d'intelligence artificielle robustes, pour concevoir des modèles capables de distinguer automatiquement les nématodes dans des conditions d'observation complexes.
<figure><img src="image_6.png" /><figcaption>FIGURE 1.4 – Photo : protocole d'extraction des nématodes par la méthode de Baermann au sein de la serre EMERGREEN</figcaption></figure>

## 1.3 Problématiques

Ce stage soulève plusieurs problématiques majeures :

- Quelle stratégie adopter pour formuler le problème : détection d'objets, segmentation (sémantique ou d'instance), ou estimation directe du nombre de nématodes ?

- Comment concevoir une méthode robuste dans un contexte avec des données annotées limitées ?

- Quelles approches permettent de différencier les stades de développement des nématodes à partir de leurs caractéristiques visuelles ?

- Comment intégrer la solution dans une application accessible, fiable et exploitable par des biologistes ?

## 1.4 Objectifs du stage

L'objectif principal de ce stage est de développer une solution logicielle destinée aux biologistes afin d'accélérer considérablement la tâche de comptage des nématodes à partir d'images acquises à la loupe binoculaire. Dans un objectif de précision et de rapidité d'exécution nous avons fait le choix de nous appuyer sur des techniques d'intelligence artificielle pour estimer automatiquement le nombre de vers présents dans une image microscopique.

Pour atteindre cet objectif, plusieurs sous-objectifs ont été définis :

- **Augmentation de données** : création d'un ensemble d'images synthétiques réalistes simulant des configurations variées de nématodes, afin d'entraîner un premier modèle. Et développement d'une application intuitive permettant aux biologistes de compter les nématodes facilement. Les comptages réalisés sont automatiquement enregistrés et convertis en données annotées, servant de vérités terrain pour améliorer progressivement le modèle d'intelligence artificielle.

- **Choix et entraînement de modèles d'intelligence artificielle** : évaluer la nature du problème (segmentation, détection par boîtes englobantes ou estimation du nombre de vers) afin de choisir l'approche la plus pertinente puis comparer différentes architectures de réseaux de neurones adaptées, pour ensuite maximiser les performances du modèle en recherchant la méthode d'entraînement la plus efficace, ainsi que les paramètres associés.

- **Comptage différencié des stades** : développer une méthode capable de détecter et de
<figure><img src="image_7.png" /><figcaption>FIGURE 1.5 – Photo de nématodes du pin à la loupe binoculaire extraite de mon jeu de données</figcaption></figure>

compter séparément les différents stades de développement des nématodes, afin de mieux suivre leur évolution et d'évaluer leur dynamique de reproduction au sein de la serre.

— **Développement d'une application fonctionnelle** : intégrer les modèles entraînés dans une interface intuitive permettant le chargement d'images, la détection automatique, l'affichage des résultats, et le comptage par classe (stades d'évolution).

## 1.5 Plan du mémoire

Dans ce mémoire, nous présenterons les différentes étapes ayant conduit au développement d'une application de comptage de nématodes. Nous commencerons en chapitre 2 par une revue de l'état de l'art, afin d'analyser les techniques de traitement d'image et d'intelligence artificielle susceptibles de répondre aux objectifs du projet : le comptage automatique, l'identification des stades de développement des nématodes, ainsi que l'augmentation des données. Nous étudierons ensuite les travaux existants dans la littérature scientifique portant sur le comptage automatisé des vers, pour situer notre approche dans le contexte des recherches actuelles.

Puis, dans le chapitre 3 nous présenterons les jeux de données utilisés pour entraîner les modèles. Nous y détaillerons également le matériel utilisé, qu'il s'agisse de la configuration de l'ordinateur ayant servi aux entraînements ou de l'environnement logiciel (bibliothèques, version de Python).

Dans le chapitre 4, nous détaillerons la méthodologie mise en œuvre au cours du stage, depuis la collecte et la préparation des données jusqu'à l'entraînement des modèles d'apprentissage automatique. L'accent sera mis sur la manière dont ces travaux ont abouti à une application fonctionnelle, pratique et facile d'utilisation pour les biologistes.
Enfin, nous présenterons les résultats obtenus, discuterons des limites rencontrées, et verrons comment cette application s'inscrit dans les enjeux environnementaux et sociétaux actuels, avant de conclure par les perspectives d'évolution du projet et les axes d'amélioration possibles.
État de l'art

Dans la section 2.1, nous commencerons par présenter les méthodes classiques de traitement d'images pouvant être utiles pour répondre aux objectifs du stage, notamment le comptage et l'identification des nématodes dans des images issues de la microscopie. Nous mettrons en évidence les limites de ces approches.

Puis dans la section 2.2, nous étudierons les méthodes de machine learning susceptibles de
permettre un comptage précis des vers. Nous y présenterons les principes de ces approches,
en expliquant leur fonctionnement ainsi que les raisons pour lesquelles elles peuvent s'avérer
pertinentes pour notre tâche.

En 2.3 nous passerons en revue les travaux existants dans la littérature scientifique ayant
recours à l'apprentissage profond pour le comptage automatique de nématodes à partir d'images
de microscopie.

Ensuite, nous nous intéresserons en 2.4 à deux approches de génération d'images synthétiques
de nématodes qui permettent d'augmenter artificiellement le volume de données d'entraînement,
ce qui est essentiel pour améliorer la performance des modèles.

## 2.1 Comptage par traitement d'image classique

Plusieurs méthodes classiques de traitement d'image peuvent, en théorie, être appliquées à l'analyse d'images de microscopie dans le but de détecter et de compter des objets biologiques tels que les nématodes. Ces approches reposent généralement sur des transformations simples de l'image, exploitant l'intensité des pixels, les gradients ou la géométrie des structures.

Parmi les techniques les plus répandues, le seuillage (global ou adaptatif) permet de distinguer les objets d'un fond homogène en se basant sur la luminosité des pixels. La méthode d'Otsu [12], notamment, calcule un seuil optimal en minimisant la variance intra-classe.

Les outils de morphologie mathématique, introduits par Serra [21], jouent également un rôle important dans l'analyse d'images. Des opérations comme l'érosion ou l'ouverture permettent, par exemple, de séparer des objets adjacents ou d'éliminer de petits débris non pertinents, comme dans l'étude *A New Method for Measuring the Size of Nematodes Using Image Processing* [30], où par exemple des opérations morphologiques sont appliquées pour supprimer les particules trop petites avant d'estimer les tailles des vers.

Les techniques de détection de contours, comme les filtres de Sobel [29] ou de Canny [5], peuvent également servir à localiser les bords des structures sur des images. Elles sont souvent combinées avec la segmentation par lignes de partage des eaux (watershed) [4] pour séparer des objets collés [20]. Bien que puissantes dans des cas simples, ces approches sont très sensibles au bruit et aux variations d'intensité.

En principe, une fois les nématodes segmentés, leur nombre pourrait être estimé en identifiant les composantes connexes de l'image binaire résultante. Cependant, à notre connaissance,
aucun article scientifique accessible librement ne décrit une méthode complète de comptage de nématodes fondée uniquement sur ces techniques traditionnelles. Une exception partielle est l'article de Holladay et al. [10], qui propose une méthode de comptage automatisé fondée sur des techniques de traitement d'image simples, telles que le seuillage automatique et la mesure de surface binaire, pour estimer le nombre de nématodes à partir d'images numériques. Tou-tefois, cette approche repose sur un prétraitement manuel lourd : les nématodes doivent être colorés au bleu de méthylène, puis lavés à la main pour éliminer l'excès de colorant avant d'être photographiés. De plus cette méthode ne permet pas de distinguer les individus entremêlés, ni d'identifier les nématodes morts.

L'absence de solution dans la littérature peut s'expliquer par les défis inhérents à la tâche : les nématodes sont souvent enchevêtrés ou présentent une apparence similaire à celle de débris biologiques. Leur transparence et la parfois faible résolution des images compliquent davantage leur distinction via des méthodes basées uniquement sur l'intensité ou la géométrie.

Face à ces contraintes, les méthodes traditionnelles atteignent rapidement leurs limites. C'est pourquoi, dans le cadre de ce stage, mon attention s'est portée sur des approches plus robustes, reposant sur l'apprentissage profond (Deep Learning).

## 2.2 Comptage par méthode d'Apprentissage profond

### 2.2.1 Introduction au Deep Learning pour la vision par ordinateur

Les méthodes de Deep Learning ont révolutionné le domaine de la vision par ordinateur au cours de la dernière décennie. Contrairement aux approches classiques reposant sur des règles définies manuellement ou des transformations simples d'image, les modèles profonds apprennent automatiquement des représentations hiérarchiques à partir des données. Cette capacité à extraire des caractéristiques discriminantes sans intervention humaine directe constitue un atout majeur dans des contextes visuels complexes.

En vision par ordinateur, les réseaux de neurones convolutifs (CNN, pour Convolutional Neural Networks) [11] se sont imposés comme des outils de référence pour des tâches variées : classification d'images, détection d'objets, segmentation sémantique ou d'instance, etc. Leur principe repose sur l'empilement de couches convolutives, capables de détecter localement des motifs simples (bords, textures) puis de composer progressivement des structures plus complexes (formes, objets). Chaque couche apprend à extraire automatiquement les informations les plus pertinentes pour la tâche finale, en fonction de l'objectif fixé et des données d'entrées. Ce mécanisme d'apprentissage permet d'adapter le modèle aux spécificités visuelles du problème traité sans nécessité de définir manuellement des règles.

Dans le cadre du comptage de nématodes sur des images de microscopie, cette capacité pourrait offrir certains avantages. En s'appuyant sur un jeu d'entraînement représentatif, il est possible que le réseau apprenne à distinguer un nématode d'un simple débris, malgré leur ressemblance parfois importante. De même, il pourrait potentiellement apprendre à reconnaître des nématodes enchevêtrés, partiellement visibles ou peu contrastés là où les méthodes classiques montrent rapidement leurs limites.

Cela dit, ces situations rendent le comptage plus difficile, y compris pour un modèle entraîné. La complexité visuelle des images peut entraîner des erreurs ou des imprécisions dans les prédictions. Un réseau de neurones ne résout pas automatiquement ces difficultés, mais il offre une plus grande souplesse d'adaptation : il peut, dans une certaine mesure, apprendre à composer avec ces cas complexes, là où les approches traditionnelles échouent complètement. À condition de disposer d'un grand nombre de données variées, il reste envisageable d'obtenir des performances satisfaisantes, même dans des contextes visuellement dégradés. Dans cette optique, il est pertinent d'examiner les différentes architectures de réseaux de neurones existantes, afin de déterminer lesquelles pourraient être les plus adaptées à la tâche de comptage de nématodes sur des
images de microscopie. Nous allons désormais présenter les principales architectures de réseaux de neurones candidates qui ont été envisagées pour ce projet, en détaillant leurs caractéristiques.

## 2.2.2 Architectures pertinentes pour le comptage de nématodes

### U-Net : une architecture de référence pour la segmentation biomédicale

Parmi les architectures de réseaux de neurones conçues pour la segmentation d'images, U-Net [18] occupe une place centrale, notamment dans le domaine de l'imagerie biomédicale. Développé initialement pour segmenter des structures cellulaires dans des images de microscopie, ce modèle s'est rapidement imposé comme une référence grâce à sa capacité à produire des segmentations précises, y compris avec un nombre limité d'images annotées, une contrainte fréquente dans les contextes où l'annotation est une tâche longue et fastidieuse.

<figure><img src="image_8.png" /><figcaption>FIGURE 2.1 – Architecture du réseau U-Net [18]</figcaption></figure>

U-Net repose sur une architecture en forme de “U” (cf. figure 2.1), composée de deux branches principales : un encodeur et un décodeur. Le rôle de l’encodeur est d’extraire progressivement les caractéristiques visuelles de l’image à différentes échelles. Cette phase utilise des couches de convolution suivies d’opérations de sous-échantillonnage (*max-pooling*), ce qui permet au modèle de capturer des représentations de plus en plus abstraites tout en réduisant la résolution spatiale.

Le décodeur, quant à lui, vise à reconstruire une carte de segmentation à la même taille que l'image d'origine. Il repose sur des opérations de suréchantillonnage (convolutions transposées) couplées à des convolutions classiques. Une caractéristique essentielle de cette architecture est la présence de connexions directes entre les couches correspondantes du chemin descendant et du chemin ascendant. Ces connexions (ou *skip connections*) permettent de combiner les informations de bas niveau (détails fins) avec des représentations de plus haut niveau (contexte global), afin d'améliorer la précision de la segmentation.

À la sortie du réseau, U-Net produit une carte dans laquelle chaque pixel de l'image est classé selon une ou plusieurs classes. Cette sortie peut être binaire ou multiclasse, selon les besoins de la tâche.

Dans notre contexte d'étude, U-Net apparaît comme une option particulièrement intéressante. Conçu initialement pour la segmentation d'images de microscopie biomédicale, ce modèle est naturellement adapté aux défis visuels que pose la segmentation de nématodes : formes allongées et fines, objets partiellement translucides, chevauchements fréquents, ainsi qu'un bruit de fond souvent important. De plus, sa capacité à être entraîné efficacement sur un nombre restreint d'annotations peut s'avérer utile dans notre cas, où les données annotées restent limitées,
les recherches sur les nématodes du pin ayant débuté relativement récemment.

## Mask R-CNN : une approche performante pour la segmentation d'instance

Mask R-CNN [8] est un modèle basé sur Faster R-CNN [17], conçu pour faire de la segmentation d'instance, c'est-à-dire localiser chaque objet dans une image en produisant non seulement une boîte englobante et une classe, mais aussi un masque binaire précis pour chaque instance. Contrairement à la segmentation sémantique où tous les objets de même classe sont fusionnés en une seule segmentation, cette approche permet de distinguer chaque objet individuellement.

Les Mask R-CNN ont montré de très bonnes performances sur des bases de données de nématodes notamment sur BBBC010 [23], comme l'illustre le modèle WormSwim [6]. Dans ce modèle, un Mask R-CNN a été utilisé pour segmenter des nématodes dans des images de microscopie, en produisant des masques précis pour chaque ver détecté.

<figure><img src="image_9.png" /><figcaption>FIGURE 2.2 – Architecture de Mask R-CNN [27]</figcaption></figure>

L'architecture de Mask R-CNN (cf. figure 2.2) repose sur plusieurs étapes clés, dont l'extraction des caractéristiques de l'image, la génération des propositions de régions d'intérêt (RoIs) via un Region Proposal Network (RPN), et enfin la prédiction des boîtes de délimitation, des classes d'objets et des masques de segmentation.

La première étape de l'architecture est l'extraction des caractéristiques de l'image à l'aide d'un backbone comme ResNet, souvent accompagné de Feature Pyramid Networks (FPN). L'objectif de FPN est de permettre au modèle de traiter des objets à différentes échelles. En effet, FPN génère une pyramide de caractéristiques en combinant les informations extraites à plusieurs résolutions. Cela permet au réseau d'identifier des objets de tailles variées, en tenant compte à la fois du contexte global et des informations locales de l'image.

Ensuite, les ancres jouent un rôle crucial dans le RPN, qui est responsable de la génération des propositions de régions. Les ancres sont des boîtes de délimitation de taille et de forme fixes placées à différents endroits de l'image. Le but du RPN est d'ajuster au mieux ces ancres pour prédire la présence d'objets, ainsi que leurs dimensions exactes, à chaque position. Ces ancres servent de point de départ pour générer des propositions de régions d'intérêt, qui seront ensuite affinées pour mieux correspondre aux objets réels dans l'image. Les ancres peuvent être classées en positives (lorsqu'elles correspondent à un objet réel) ou négatives (lorsqu'elles se situent dans des zones de fond). Ce processus permet au modèle de se concentrer sur les régions pertinentes.

Enfin, une fois les régions d'intérêt extraites et les ancres ajustées, Mask R-CNN applique le mécanisme de RoIAlign pour mieux extraire les caractéristiques des régions candidates précisément. Le principe de RoIAlign est de diviser chaque RoI en un certain nombre de sous-régions. Puis il applique une interpolation bilinéaire sur les caractéristiques des pixels pour chaque sous-
région. Cela signifie que, pour chaque sous-région, RoIAlign calcule une moyenne des valeurs des caractéristiques en tenant compte des positions exactes des pixels. Cela permet de conserver une haute précision dans l'extraction des informations.

Ainsi, Mask R-CNN permet non seulement de détecter des objets à différentes échelles, mais aussi de segmenter ces objets avec une grande précision, ce qui en fait un outil particulièrement puissant pour des applications nécessitant une segmentation très fine des objets.

Dans notre contexte, Mask R-CNN présente un intérêt particulier dans la mesure où il permet de segmenter et de compter individuellement chaque nématode, même lorsqu'ils sont nombreux, proches ou partiellement superposés. Cette capacité de segmentation d'instance est précieuse pour traiter les images complexes issues de la méthode de Baermann, dans lesquelles plusieurs vers peuvent apparaître entremêlés. De plus, les masques générés pixel par pixel permettent de calculer des métriques supplémentaires (longueur, aire, orientation), potentiellement utiles pour différencier les stades de développement.

Cependant, il convient de noter que ce type de modèle nécessite un jeu de données annotées plus riche, chaque instance devant être précisément délimitée.

## YOLOv8 : un modèle rapide et léger

La version 8 de YOLO, proposée par Ultralytics en janvier 2023, repose sur une architecture optimisée pour la détection d'objets en temps réel, tout en maintenant un bon niveau de pré- cision. Il est divisé en trois grandes parties : le backbone, chargé d'extraire les caractéristiques de l'image ; le head, qui fusionne et traite ces caractéristiques à plusieurs échelles ; et enfin, les blocs de détection, qui produisent les prédictions finales. Le traitement débute par une image d'entrée qui doit être une image carrée.

Dans le backbone, l'image passe dans une série de blocs convolutifs (Conv), extrayant les caractéristiques principales de l'image, suivi ensuite de normalisations par BatchNorm2d et de la fonction d'activation SiLU (Sigmoid Linear Unit) Avec la fonction SiLU, les petites valeurs (proches de zéro ou négatives) sont fortement atténues, ce qui revient à réduire l'impact des informations peu utiles. En revanche, les grandes valeurs positives sont presque conservées telles qu'elles, ce qui permet de laisser passer les informations importantes. Cela rappelle le fonction- nement de ReLU, qui elle aussi laisse passer les grandes valeurs et ignore les petites. Toutefois, la différence essentielle est que ReLU coupe brutalement toutes les valeurs négatives à zéro, tandis que SiLU les atténue progressivement, sans les bloquer complètement. Cette transition plus douce rend l'apprentissage du réseau plus stable et plus flexible.

Les premières convolutions du modèle sont suivies de blocs appelés C2f, conçus pour extraire les caractéristiques de l'image en ayant un bon compromis entre légèreté, et capacité d'appren- tissage du modèle. Un bloc C2f débute par une opération de Split, qui consiste à diviser la carte de caractéristiques en plusieurs sous-groupes de canaux. Cette séparation permet de traiter chaque groupe de manière indépendante, ce qui réduit la charge de calcul et favorise la spécia- lisation de l'apprentissage. Chaque sous-groupe passe ensuite dans un ou plusieurs bottlenecks, des petits blocs composés de couches de convolution conçues pour apprendre des transforma- tions efficaces. Ces bottlenecks intègrent un raccourci (ou shortcut (cf. figure 2.3)), c'est-à-dire une connexion directe entre l'entrée et la sortie du bloc. Ce mécanisme permet au modèle de conserver une partie de l'information d'origine. C'est le même principe qui a été utilisé pour la première dans ResNet [9]. Ces raccourcis permettent de propager plus efficacement les gradients durant l'entraînement, ce qui réduit le risque de dégradation des performances lorsque le nombre de couches augmente. Une fois traités, les sous-groupes sont concatenés pour former une carte de caractéristiques enrichie.

À la sortie du *backbone*, les cartes de caractéristiques passent par un bloc SPPF (*Spatial Pyramid Pooling Fast*). Ce bloc sert à résumer l'information importante de l'image tout en ajoutant une vision plus large du contexte. Pour cela, il utilise plusieurs couches MaxPool2d (Max Pooling), qui parcourent les cartes et conservent uniquement les valeurs les plus fortes
<figure><img src="image_10.png" /><figcaption>FIGURE 2.3 – Architecture de YOLOv8 avec branche de segmentation [26]</figcaption></figure>

dans chaque zone. Cela permet de mettre en avant les éléments les plus importants de l'image. En appliquant cette opération plusieurs fois, le SPPF capte à la fois des détails précis et des informations plus générales. Il combine ensuite les résultats pour produire une carte plus compacte, mais plus riche. Grâce à cela, le modèle peut mieux détecter les objets, même s'ils sont partiellement dans un environnement complexe

Le *head* du modèle commence par une phase de montée en résolution, où les cartes les plus profondes sont agrandies (couche Upsample) pour être alignées avec des cartes intermédiaires. Ces cartes sont ensuite fusionnées par concaténation, puis raffinées par de nouveaux blocs C2f (sans raccourcis cette fois). Cette remontée permet de combiner les informations de bas niveau (textures, détails, petits éléments) avec celles de plus haut niveau (formes, contexte global). Une fois cette phase terminée, le modèle réalise une phase descendante similaire à l'architecture de U-Net (cf. figure 2.1), qui permet de raffiner les caractéristiques à chaque niveau de résolution.

Les sorties de cette architecture sont ensuite envoyées vers trois blocs distincts de détection, chacun correspondant à une échelle différente (petits, moyens et grands objets). Chaque bloc génère directement trois types de sorties : les coordonnées des boîtes englobantes, un score de confiance, et les probabilités de classe.
<figure><img src="image_11.png" /><figcaption>FIGURE 2.4 – Fonction d'activation SiLU [15]</figcaption></figure>

Ces prédictions sont faites sans utiliser d'« anchors » (boîtes prédéfinies), contrairement aux versions précédentes de YOLO. Les anchors sont des formes de boîtes de tailles et proportions fixes que le modèle utilisait auparavant comme point de départ pour prédire la position des objets. Dans YOLOv8, ce système est abandonné au profit d'un modèle dit anchor-free, où le réseau apprend directement à prédire les boîtes sans dépendre de formes prédéfinies. Cela permet de simplifier l'entraînement, de réduire le nombre d'hyperparamètres, et de rendre le modèle plus flexible face à des objets de tailles ou de formes variées.

L'entraînement de YOLOv8 repose sur une combinaison de fonctions de perte conçues pour optimiser simultanément la localisation, la confiance et la classification des objets détectés. La plus importante est la **Box Loss**, qui évalue la qualité des boîtes englobantes prédites. Cette perte prend en compte plusieurs facteurs : l'Intersection over Union (IoU), qui mesure le taux de recouvrement entre la boîte prédite et la boîte de vérité ; la distance entre les centres des boîtes ; ainsi que les différences de forme à travers le ratio largeur/hauteur.

Elle est complétée par la **Distribution Focal Loss** (DFL), qui vise à améliorer la précision des scores de localisation en affinant les prédictions des bordes des boîtes, et par la **Classification Loss** (CLS), qui pénalise les erreurs d'attribution de classe.

YOLOv8 est également proposé en plusieurs variantes de taille (nano, small, medium, large, xlarge), permettant d'ajuster le compromis entre performance et vitesse en fonction des ressources disponibles ou des exigences d'une application temps réel.

Dans notre cas, l'un des atouts majeurs de YOLOv8 réside dans sa capacité à prédire directement des boîtes englobantes, ce qui correspond précisément à l'objectif visé : réaliser un comptage automatique des nématodes présents dans une image de microscopie. Contrairement à des approches de segmentation plus complexes qui cherchent à délimiter précisément la forme de chaque ver, une simple détection par boîte suffit pour dénombrer les individus. Cette stratégie est plus simple et donc potentiellement plus facile à optimiser. YOLOv8 apparaît donc comme une approche pertinente pour notre problème.

Il est toutefois important de noter que depuis YOLOv8, les modèles de la famille YOLO ne se limitent plus à la détection par boîtes englobantes, mais ils sont également capables de réaliser d'autres tâches telles que la segmentation d'objets ou le suivi multi-objets.
## Les transformers l'exemple du modèle YOLOv12

Je me suis également intéressé à la dernière version de la famille YOLO, à savoir **YOLOv12** [25]. Ce modèle marque un changement important dans la philosophie des architectures YOLO, puisqu'il introduit pour la première fois des blocs basés sur les transformers.

Les transformers sont à l'origine des modèles développés pour le traitement du langage naturel, mais ils ont depuis été adaptés à la vision par ordinateur, notamment avec l'arrivée des Vision Transformers (ViT) [7]. Contrairement aux réseaux de neurones convolutifs (CNN), qui traitent localement l'information à travers des filtres, les transformers fonctionnent à l'échelle globale. Ils utilisent un mécanisme d'attention [28] pour apprendre des relations entre différentes parties d'une image, même si ces parties sont éloignées spatialement.

Concrètement, les transformers découpent une image en petits morceaux appelés **patchs**, par exemple de 16x16 pixels chacun. Ces patchs sont ensuite convertis en vecteurs et traités comme une séquence, un peu comme des mots dans une phrase.

Pour chaque patch, le modèle calcule trois vecteurs :

- **Query (Q)** : ce que ce patch cherche à comprendre ou à extraire ;

- **Key (K)** : ce que les autres patchs ont à offrir ;

- **Value (V)** : l'information complète fournie par chaque patch.

Le principe est ensuite simple : chaque Query est comparée à toutes les Keys des autres patchs. Si la similarité est forte (c'est-à-dire si un patch semble pertinent pour un autre), alors la Value associée à ce patch est prise en compte avec un poids plus important. Le résultat final est une combinaison pondérée de toutes les informations utiles provenant des autres patchs. Ce mécanisme permet donc au modèle de savoir quelles parties de l'image sont importantes pour interpréter un autre endroit, même si ces deux zones sont éloignées spatialement.

Le problème, c'est que les transformers classiques sont souvent très coûteux à entraîner et à exécuter, car ils comparent tous les patchs entre eux, ce qui devient vite très lourd, surtout pour des images de grande taille. YOLOv12, comme les autres modèles de la famille YOLO, vise à rester rapide. Pour cela : au lieu de comparer chaque patch à tous les autres, il ne regarde que ceux situés sur la même ligne ou la même colonne et ceux sur lignes et colones adjacentes. Cela permet de limiter fortement les calculs tout en gardant une forme d'attention spatiale structurée (cf. figure 2.5).

<figure><img src="image_12.png" /></figure>

Area attention (Ours)

<caption>FIGURE 2.5 – Schéma simplifié du mécanisme d'attention restreinte dans YOLOv12</caption>

De plus, dans YOLOv12, les blocs de transformers sont combinés avec des couches convolutives classiques. L'idée est de profiter de la rapidité et de l'efficacité locale des convolutions,
tout en ajoutant une capacité à modéliser des relations globales grâce à l'attention. Mais ce compromis a un coût : YOLOv12 reste plus lourd et plus lent que YOLOv8.

## 2.3 Travaux existants sur la segmentation de nématodes

Nous allons maintenant présenter les études qui utilisent des architectures similaires à celles décrites précédemment pour le comptage de nématodes sur des images de microscopie.

### 2.3.1 Comptage de nématodes à partir de vidéos

La première approche que j'ai étudiée est un modèle proposé par Alonso A. et al. [2], basé sur un réseau de neurones convolutifs (CNN) conçu pour détecter directement le squelette des nématodes à partir de courtes vidéos. Cette méthode se montre efficace même dans des séquences complexes, comportant de nombreux vers enchevêtrés.

Cependant, elle présente plusieurs limitations pratiques qui la rendent inadaptée à notre contexte d'application. L'acquisition de vidéos alourdit considérablement le protocole expérimental. En pratique, filmer chaque boîte de Pétri représenterait une charge logistique trop importante pour les biologistes, qui doivent réaliser plusieurs milliers de comptages. Par ailleurs, cette méthode repose sur l'hypothèse que les nématodes soit en mouvement et clairement visibles durant toute la séquence, ce qui n'est pas systématiquement le cas dans notre étude où les vers restent souvent immobiles.

Dans notre cas, conformément aux contraintes définies par les biologistes, le protocole repose exclusivement sur l'analyse d'images fixes, capturées à un instant donné. Les méthodes basées sur la vidéo ne sont donc pas transposables dans ce cadre de travail.

### 2.3.2 Le modèle WormSwim

Une autre approche étudiée est le modèle **WormSwim** [6], qui repose sur la combinaison de deux composants puissants. D'une part, un **Swin-L Transformer**, un type de Vision Transformer (ViT) conçu pour extraire des caractéristiques visuelles très fines, et d'autre part, une architecture **Hybrid Task Cascade** (HTC), une amélioration de Mask R-CNN [27], spécialisée dans la détection et la segmentation précises des objets.

Ce modèle montre d'excellentes performances sur les images utilisées dans l'étude, en détectant et segmentant les nématodes avec une grande précision. Toutefois, plusieurs éléments suggèrent que cette méthode est difficilement transférable à notre cas d'usage. Le modèle a été spécifiquement entraîné sur des vers *C. elegans*, dans un dataset composé d'images très propres, sans débris ni bruit de fond, extraites d'une même vidéo dans un environnement parfaitement contrôlé. Les vers y sont peu nombreux, bien séparés, et relativement uniformes en taille et en forme (cf. figure 2.6).

À l'inverse, les images que nous utilisons proviennent d'extractions biologiques réelles : elles contiennent un nombre variable de nématodes, souvent enchevêtrés, présentant des stades de développement différents, le tout sur un fond bruité, avec la présence fréquente de débris et d'artefacts visuels. Dans ces conditions, il n'est pas possible de conclure que les performances observées dans l'étude se maintiendraient dans notre cas où les images sont bien plus complexes.

Par ailleurs, l'objectif de WormSwim est d'avoir une segmentation la plus fine possible des vers, alors que notre objectif principal est le comptage des vers dans des scènes parfois complexes, les métriques et les contraintes diffèrent, ce qui rend une comparaison directe peu pertinente.
<figure><img src="image_13.png" /><figcaption>FIGURE 2.6 – Exemple d’images extraite des jeux de données utilisés dans l’article de WormSwim [6]</figcaption></figure>

### 2.3.3 Le modèle YOLOv8 pour la détection et la segmentation

L’article de Kanan K. Saikai et al. [19] propose une méthode basée sur YOLOv8 (cf. figure 2.3), combinant détection et segmentation, basée sur l’architecture YOLOv8 (cf. figure 2.3). Leur approche repose sur la détection des œufs par boîtes englobantes, ainsi que sur la segmentation des vers. Le code du projet est disponible en open source sur GitHub, incluant une interface utilisateur permettant de tester directement leur modèle, mais sans les données d’entraînement.

Parmi les deux variantes proposées (détection et segmentation), seule la version de segmentation est réellement exploitable dans notre contexte, car c’est la seule ayant été entraînée pour identifier des nématodes. Toutefois, les résultats obtenus sur nos images se sont révélés insuffisants pour une application directe les masques prédits manquent de précision, et ne permettent pas un comptage fiable des individus (cf. tableau 2.3). Malgré ces limites, cet article souligne le potentiel du modèle YOLOv8 pour notre cas d’usage. Les nématodes étudiés dans l’article sont assez distincts, de taille relativement constante et bien visibles, mais les images utilisées restent
proches de conditions réelles de laboratoire, avec un certain niveau de bruit et de variabilité. Ces similarités suggèrent que YOLOv8 pourrait être adapté à notre contexte, à condition d'être réentraîné spécifiquement sur nos propres images annotées.

## 2.4 Augmentation des données : Intégration des nématodes dans des images de microscopie

Toutes les approches présentées reposent sur l'existence d'un jeu de données annotées suffisamment large et représentatif pour entraîner les modèles. Or, dans notre cas, le manque de données annotées constitue une limite majeure, l'étude sur le nématode du pin ayant à peine débuté (seulement sept images de loupe binoculaire annotées étaient disponibles au début de mon stage). C'est pourquoi nous avons exploré des méthodes d'augmentation de données, et plus particulièrement la possibilité d'intégrer artificiellement des vers dans des images de microscopie.

### 2.4.1 Alpha Blending

Je me suis d'abord intéressé à la méthode d'Alpha Blending [14], une approche simple permettant de fusionner deux images. Elle repose sur le principe de mélanger, pixel par pixel, une image source (contenant le nématode à insérer) avec une image de fond (image de loupe binoculaire réelle), selon un coefficient de transparence appelé *alpha* (α).

Pour chaque pixel, la valeur finale est calculée comme une moyenne pondérée entre le pixel de l'image source ($I_s$) et celui du fond ($I_b$), selon la formule :

$$I_{final} = \alpha \cdot I_s + (1 - \alpha) \cdot I_b$$

Ce coefficient $\alpha$ peut être constant (par exemple, $\alpha = 0.5$ pour un mélange équitable) ou variable, en fonction d'un masque définissant la zone de transition. Cette méthode a l'avantage d'être rapide à implémenter et de produire des résultats visuellement cohérents dans des cas simples. Mais peut créer des artefacts visibles autour des objets insérés (cf. figure 2.7).

<figure><img src="image_14.png" /><figcaption>FIGURE 2.7 – Construction d'une scène par superposition de couches via Alpha Blending [24]</figcaption></figure>

### 2.4.2 Poisson blending

La seconde méthode que j'ai étudiée est **Poisson Blending** [13], une technique de fusion d'images plus avancée, qui vise à intégrer l'objet de façon naturelle dans une image de fond, en prenant en compte les variations locales de lumière et de texture sur les bords du masque. Contrairement à l'Alpha Blending qui mélange directement les couleurs, Poisson Blending cherche à préserver les **gradients** de l'objet c'est-à-dire ses variation internes de luminosité tout en assurant une transition naturelle avec les bords de l'images.
L'objectif n'est pas simplement de copier les pixels d'un objet, mais plutôt la façon dont ses couleurs évoluent. Par exemple, si l'objet présente un éclairage plus intense d'un côté que de l'autre, ce dégradé de lumière est ce que l'on souhaite conserver.

L'idée est donc de reconstruire l'image à l'intérieur d'un **masque** (zone d'insertion), en imposant deux contraintes :

- les variations (gradients) à l'intérieur de la zone copiée doivent être les mêmes que dans l'image source;

- les contours du masque doivent s'adapter parfaitement aux couleurs de l'image de fond, pour éviter toute discontinuité visuelle.

**Formulation mathématique** Le problème se formule comme la résolution d'un système d'équations linéaires. On commence par calculer le **laplacien** de l'image source, c'est-à-dire une approximation des variations autour de chaque pixel :

$$ \Delta p_{\text{target}} = 4p_{\text{target}} - p_{\text{haut}} - p_{\text{bas}} - p_{\text{gauche}} - p_{\text{droite}} $$

où $p_{\text{target}}$ est le pixel central, et $p_{\text{haut}}$, $p_{\text{bas}}$, $p_{\text{gauche}}$, et $p_{\text{droite}}$ sont ses voisins directs. Ce laplacien permet de capturer les variations lumineuses internes de l'image.

L'objectif est que l'image cible reproduise les mêmes variations que celles observées dans l'image source, autrement dit :

$$ \Delta p_{\text{target}} = \Delta p_{\text{source}} $$

Cela revient à résoudre un système linéaire de la forme :

$$ A \cdot x = b $$

avec :

- A : matrice contenant les coefficients liés aux laplaciens des pixels;

- x : vecteur inconnu contenant les valeurs des pixels à l'intérieur du masque;

- b : vecteur issu de l'image de fond (valeurs des bords connues car on prend la même valeur que celle de l'image source).

Ce procédé permet de produire une fusion visuellement plus réaliste, notamment lorsque l'objet inséré présente des textures ou une luminosité très différente de l'arrière-plan.

<figure><img src="image_15.png" /><figcaption>FIGURE 2.8 – Construction d'une scène par Poisson Blending. [13]</figcaption></figure>
# 3

# Matériel et Données

Dans ce chapitre, je présente les différentes données utilisées pour entraîner et tester mes modèles, ainsi que les outils et l'environnement de travail mobilisés pendant mon stage.

## 3.1 Données synthétiques via la méthode Poisson blending

Pour entraîner un premier modèle, j'ai dû générer un jeu de données synthétiques. Pour cela, j'ai disposé de 117 images individuelles de nématodes, chacune accompagnée de son masque binaire. Ces données provenaient d'un travail antérieur réalisé par un groupe d'étudiants de l'ENSEIRB ayant déjà identifié le manque de données réelles et préparé ces découpes pour les intégrer dans des images de fonds de boites de pétris.

Les images d'entraînement ont donc été entièrement synthétisées, en insérant ces vers sur des images réelles de loupe binoculaire à l'aide de la méthode de Poisson Blending. Trois images de fonds seulement ont été utilisés.

Afin d'augmenter la diversité du jeu de données, j'ai appliqué des transformations aléatoires :

- **Sur les fonds** : effets miroir horizontal et vertical, rotation à 180°.

- **Sur les vers** : effets miroir horizontal et vertical, rotations à 90°, 180°, 270°, redimensionnement aléatoire entre 90% et 110% de la taille originale, ou parfois un fort rétrécissement (entre 20% et 40%) pour avoir des vers très petits.

## 3.2 Données réelles via annotation par application

En plus des 7 images réelles annotées disponibles au début de mon stage et utilisées pour tester le premier modèle, j'ai pu collecter un ensemble beaucoup plus important de données annotées grâce à une application que j'ai développée spécifiquement pour ce projet.

L'idée, en collaboration avec les biologistes, était de fournir rapidement une application fonctionnelle permettant d'annoter directement les résultats de détection. L'utilisateur peut ainsi valider les vers trouvés, supprimer les faux positifs, et ajouter les individus oubliés. Cette stratégie permettait à la fois d'accélérer les comptages en laboratoire grâce au modèle, et de récupérer des annotations de qualité pour améliorer l'entraînement. Toutes les images, qu'elles soient synthétiques ou réelles, font une taille de 2160x1620. Ce système a permis de collecter progressivement un grand nombre d'images. À la fin de mon stage, le jeu de données contenait 407 images réelles, dont 134 étaient des fonds sans aucun nématode avec uniquement des débris. Ainsi, certains résultats présentés plus loin ont été produits à partir d'un jeu de données encore partiel, ce sera indiqué lorsque c'est le cas.

Pour comparer mon modèle à d'autres approches de la littérature, j'ai également utilisé deux jeux de données publics contenant des images de nématodes au microscope :
- **BBBC010** [23] : composé de 100 images de vers *C. elegans*

- **csb1** [1] : contient 10 vidéos découpées en plus de 400 images chacune, soit un total de plus de 4000 images. Toutefois, ces images sont fortement redondantes visuellement.

### 3.2.1 Machine utilisée

L'ensemble des expériences (sauf exception signalée) ont été réalisées sur ma machine personnelle :

- **Processeur** : Intel Core i5-13420H (13e génération) @ 2.10 GHz

- **RAM** : 16 Go

- **Carte graphique** : NVIDIA GeForce RTX 4060 Laptop (8 Go)

- **Système** : Windows 64 bits

- **IDE** : Visual Studio Code + Jupyter Notebook

J'ai également brièvement utilisé la plateforme Plafrim pour entraîner un modèle YOLOv12 large, mais les résultats n'étant pas concluants, ils ne sont pas présentés ici. Tous les résultats discutés dans ce mémoire proviennent donc de modèles entraînés localement sur ma machine.

### 3.2.2 Bibliothèques principales utilisées

L'environnement Python utilisé pour ce projet repose sur la version 3.10.15. Voici les bibliothèques principales que j'ai mobilisées dans le cadre de ce travail :

- **PyTorch (torch, torchvision, torchaudio)** : bibliothèque centrale pour le développement, l'entraînement et l'évaluation des modèles de deep learning.

- **Ultralytics** : bibliothèque principale pour l'implémentation des modèles YOLOv8 et YOLOv12. Elle facilite le chargement des modèles, leur entraînement, ainsi que l'exportation des résultats.

- **OpenCV** : utilisée pour le traitement des images, notamment pour la lecture, la transformation, la création de masques et les visualisations.

- **Pandas et NumPy** : indispensables pour le traitement des données tabulaires, la manipulation de tableaux de données et la gestion des annotations.

- **Matplotlib** : pour générer les figures et courbes d'évaluation tout au long de l'entraînement et pour l'analyse des résultats.

- **PyQt5** : utilisée pour créer l'interface graphique de l'application.

- **CodeCarbon** : pour pouvoir estimer l'impact environnemental de mes entraînements en équivalent CO2
# Méthodologie

Dans cette section, je vais décrire la démarche adoptée tout au long du stage pour développer une solution de comptage automatique des nématodes sur des images de microscopie. L'application a été construite en étroit lien avec les contraintes du laboratoire BioGeCo, notamment le fait que les comptages se faisaient en parallèle du développement du projet. Cela impliquait de disposer rapidement d'un outil fonctionnel pour soutenir les biologistes, tout en capitalisant sur leurs annotations pour améliorer progressivement le modèle.

L'application devait donc répondre rapidement aux besoins :

- **D'accélérer le comptage** : un modèle de détection automatique est appliqué à chaque image pour proposer des prédictions, que l'utilisateur peut corriger (ajout, suppression, validation) à l'aide d'une interface simple;

- **De collecter des données labélisée** : chaque session d'annotation produit un fichier structuré, directement exploitable pour entraîner de nouveaux modèles.

Puis tout au long du stage j'ai répondu à d'autres besoins :

- **Améliorer le modèle** : en intégrant progressivement les retours des biologistes et en affinant la méthode d'entraînement.

- **Optimiser l'interface utilisateur** : en recueillant les retours des utilisateurs pour rendre l'outil plus intuitif et efficace.

- **Estimer les stades de développement** : les nématodes détectés peuvent être classés automatiquement selon leur taille, avec des seuils ajustables pour s'adapter aux observations des biologistes.

Pour détailler la méthodologie que j'ai eu pour répondre à ces besoins, je vais d'abord me concentrer sur la création de l'application de comptage, puis je détaillerai ma méthode d'entraînement des modèles utilisés.

## 4.1 Application de comptage automatique

Dès les premières semaines, il est apparu essentiel de proposer un outil qui accélère le travail de comptage en laboratoire, tout en permettant de récupérer facilement des données annotées, pour améliorer l'entraînement des modèles. J'ai donc développé une application de comptage et d'annotation, qui permet de charger une image, d'y appliquer un modèle de détection, et de visualiser les résultats. L'utilisateur peut ensuite valider les boîtes proposées, en supprimer ou en ajouter manuellement si nécessaire. Cette interface (cf. figure 4.1), a été développée en Python avec la bibliothèque `PyQt5`.

L'application a été continuellement améliorée en fonction des besoins que je ressentais en la testant et des retours des utilisateurs. L'idée était de proposer un outil ergonomique et léger réellement utilisable en laboratoire. J'y ai donc ajouté des fonctionnalités qui répondent aux
besoins des biologistes tout en restant simples et rapides à utiliser pour qu'elle soit fonctionnelle
sur les ordinateurs du laboratoire.

4.1.1 Fonctionnalités principales

Pour ce qui est des différentes fonctionnalités finales de l'application, elles sont les suivantes :

— Chargement d'image et application automatique du modèle de détection;

— Validation ou suppression des boîtes proposées, ajout manuel si nécessaire;

— Réglage du seuil de confiance pour adapter la sensibilité du modèle;

— Visualisation des boîtes englobantes par catégorie (prédites, ajoutées, supprimées) ou par stade de développement, noté de 1 à 4 (1 : proche du stade larvaire ; 4 : adulte).

— Estimation du stade de développement : un second modèle segmente l'intérieur de la boîte et en mesure la taille de la segmentation. Un curseur permet d'ajuster les seuils de classification entre les stades.

— Export des résultats : génération d'un fichier CSV pour que les biologistes consultent facilement les résultats des comptages.

4.1.2 Ergonomie

L'ergonomie a été un point clé du développement. J'ai progressivement ajouté plusieurs fonctionnalités pour rendre l'outil plus fluide à utiliser :

— Zoom et dézoom sans perte de qualité ni décalage;

— Roue contextuelle (clic droit) pour basculer rapidement entre les outils (déplacement, sélection, ajout de boîte, etc.);

— Raccourcis clavier pour accélérer les manipulations (supprimer, annuler, réinitialiser...).

— Optimisation de l'interface : boutons regroupés par sections et affichage conditionnel selon leur disponibilité.

<figure><img src="image_16.png" /><figcaption>FIGURE 4.1 – Capture d'écran de l'interface de comptage et d'annotation .développée</figcaption></figure>

4.1.3 Boucle d'amélioration continue

L'application a été conçue selon une logique de **boucle d'apprentissage continue** : chaque image annotée est automatiquement ajoutée dans un dossier servant à réentraîner les modèles.
Les nouveaux modèles sont ensuite intégrés à l'application, ce qui accélère le processus d'anno-
tation tout en améliorant progressivement la qualité des prédictions.

Ce cycle permet de valoriser le travail des biologistes en enrichissant en continu la base de données et donc d'accroître progressivement les performances du modèle.

Cette approche itérative a permis de dépasser la contrainte initiale du faible volume de données et de l'ancrer dans un usage réel au laboratoire. En revanche, faute de ressources suffisantes sur les machines du laboratoire, il n'a pas été possible d'automatiser complètement le processus en entraînant automatique sur leurs machines. Les réentraînements ont donc été effectués sur ma machine personnelle, puis seuls les poids mis à jour ont été transmis.

## 4.2 Entrainement des modèles

Dans cette section, je présente les modèles d'intelligence artificielle retenus, les données et paramètres utilisés, ainsi que le processus d'entraînement et d'évaluation. Je ne détaillerai pas l'ensemble des améliorations apportées, mais uniquement la méthodologie qui m'a amené à la version finale retenue.

4.2.1 Choix du modèle YoloV8 pour la détection des vers

L'objectif est de disposer d'un modèle capable, à partir d'une image en entrée, de compter
le nombre de nématodes présents. Une segmentation précise de chaque individu n'étant pas
indispensable pour cette tâche, il était plus pertinent d'opter pour un modèle basé sur des
boîtes englobantes plutôt que sur une segmentation pixel par pixel. Cette approche permet en
effet de simplifier le problème tout en obtenant de meilleurs résultats dans le cadre du comptage.

D'après l'état de l'art étudié, YOLOv8 apparaît comme un modèle particulièrement adapté à ce type de données : il offre de bonnes performances sur des jeux de données proches de celles utilisées en laboratoire, tout en restant rapide et léger, ce qui est important dans une perspective d'utilisation en laboratoire. Pour ces raisons, j'ai choisi d'utiliser YOLOv8 comme modèle principal pour la détection des nématodes.

Toutefois, ce choix n'était initialement pas figé. Afin de comparer les performances, j'ai également entraîné YOLOv12, la version la plus récente de la famille des modèles YOLO. Bien que plus lourd, ce modèle est potentiellement plus performant. Une série d'expérimentations avec différents paramètres a donc été réalisée afin de confronter les résultats des deux approches que ça soit leurs versions les plus légères et les plus lourdes. Les résultats, présentés dans la partie dédiée, m'ont conduit à retenir YOLOv8-nano qui est plus léger et offre des performances similaires ou supérieures aux autres modèles plus lourds.

4.2.2 Données utilisées

Données synthétiques

Que ce soit pour YOLOv8 ou YOLOv12, la première étape a consisté à préparer les données d'entraînement. Au début de mon stage, je ne disposais que de 7 images annotées, contenant chacune une dizaine de vers. Ce volume était insuffisant pour entraîner un modèle de détection performant.

Pour constituer un premier jeu de données, j’ai utilisé une approche de génération de données synthétiques en intégrant des vers dans des images de microscopie à l’aide de la méthode du Poisson Blending. Cette technique permettait d’obtenir à la fois des images réalistes et leurs annotations correspondantes (les coordonnées des boîtes englobantes étant directement dérivées des masques utilisés pour intégrer les vers). J’ai ainsi pu entraîner un premier modèle, en utilisant les 7 images réelles disponibles uniquement comme jeu de test pour évaluer ses performances.
à ce stade.

En revanche, l'oubli catastrophique peut également apparaître lorsque la seconde phase d'entraînement est trop longue ou trop riche, si les données utilisées lors du premier apprentissage ne sont plus jamais rappelées. C'est ce qui s'est produit ici.

Dans notre situation, ce problème n'a pas eu de conséquences négatives, car il ne concernait que les données synthétiques. J'ai en effet constaté qu'après la deuxième phase d'entraînement, le modèle obtenait de mauvais résultats sur les données synthétiques. Toutefois, cela importait peu car l'augmentation progressive du volume de données réelles a permis d'améliorer les performances sur les cas concrets, qui constituent la véritable cible de l'application. En pratique, le nombre croissant d'images réelles a donc rendu l'utilisation de données synthétiques de moins en moins nécessaire jusqu'à ne plus en avoir besoin pour les derniers entraînements en fin de stage.

## Images de débris

Un des principaux enjeux du comptage automatique des nématodes sur des images de microscopie est d'éviter de confondre des débris avec de véritables vers. (cf. figure 4.3) Grâce à sa capacité à exploiter l'information à plusieurs échelles, YOLOv8 peut reconnaître qu'une forme ressemblant localement à un nématode n'en est pas un, en s'appuyant sur le contexte global de l'image. Toutefois, cela nécessite que le modèle ait été suffisamment exposé à ce type de situations lors de l'entraînement.

Pour renforcer cette capacité, j'ai d'abord envisagé d'ajouter une seconde classe débris en plus de la classe nématode, afin d'apprendre explicitement au modèle à distinguer les deux. Cependant, cette approche aurait été trop coûteuse en temps, puisqu'elle aurait demandé d'annoter manuellement les centaines de débris qu'il y a par image.

La méthode finalement retenue repose sur l'utilisation d'images contenant uniquement des débris, sans nématodes. Dans ce cas, aucune annotation n'est nécessaire, la vérité terrain est simplement vide, et le modèle apprend ainsi à ne pas détecter de vers sur ces structures parasites.

<figure><img src="image_17.png" /><figcaption>FIGURE 4.3 – Exemple de tâche dont les bords peuvent être confondus avec des nématodes.</figcaption></figure>

## Données utilisées pour l'entraînement final

Pour l'entraînement du modèle final, j'ai utilisé un jeu de données composé de **407 images réelles**, dont environ **66 % contiennent des nématodes** et **33 % uniquement des débris**.

Ces données ont été divisées en trois sous-ensembles :

- 70 % pour l'entraînement,

- 10 % pour la validation,
— 20% pour le test.

La répartition exacte est présentée dans le tableau 4.1.

<table><caption>TABLE 4.1 – Répartition des données réelles utilisées pour l'entraînement final</caption><thead><tr><th>Type d'images</th><th>Total</th><th>Train (70%)</th><th>Validation (10%)</th><th>Test (20%)</th></tr></thead><tbody><tr><td>Images avec nématodes</td><td>273</td><td>191</td><td>27</td><td>55</td></tr><tr><td>Images uniquement des débris</td><td>134</td><td>94</td><td>13</td><td>27</td></tr><tr><td><strong>Total</strong></td><td><strong>407</strong></td><td><strong>285</strong></td><td><strong>40</strong></td><td><strong>82</strong></td></tr></tbody></table>

J'ai volontairement accordé une place importante au jeu de test (20%) afin d'obtenir une évaluation robuste. L'objectif était de m'assurer que les variations de paramètres et de techniques d'entraînement avaient un effet systématique et mesurable sur les performances, et ainsi de pouvoir sélectionner le meilleur modèle de manière fiable.

En complément, afin de renforcer la robustesse de l'évaluation, j'ai également mis en œuvre une **validation croisée à 5 plis**. Toutefois, puisque c'est très couteux, je l'ai uniquement utilisée pour confirmer les performances du modèle final. »

## Conserver la qualité des données

Un autre enjeu de ce projet est d'avoir un modèle capable de détecter des vers parfois très petits dans l'image (cf. figure 4.4), dont certains ne mesurent que quelques pixels de long. Pour garantir leur détection, il est essentiel de préserver au maximum la qualité des images d'entrée, sans déformation ni perte d'information, afin de conserver les détails fins nécessaires à la reconnaissance des nématodes.

<figure><img src="image_18.png" /><figcaption>FIGURE 4.4 – Exemple d'image avec des nématodes très petits.</figcaption></figure>
YOLOv8 et YOLOv12 nécessitent des images carrées dont les dimensions sont multiples de 32. Les images fournies par le laboratoire ont une résolution de 2160×1620. Pour conserver l'intégralité de l'information visuelle, il aurait fallu les redimensionner en 2176×2176 en ajoutant des bandes noires, afin d'obtenir un format carré valide sans altérer les proportions ni la qualité. Toutefois, ce format était trop lourd pour l'entraînement sur ma machine personnelle.

Pour contourner cette contrainte, j'ai donc choisi de découper chaque image en quatre sous-images de 1216×1216 pixels, en ajustant les annotations (vérités terrain) afin qu'elles correspondent aux nouvelles découpes. Cette méthode entraîne donc un recouvrement, certaines sous-images se chevauchent et partagent donc une partie commune. En pratique, le nombre d'images utilisées pour l'entraînement est donc multiplié par quatre. Néanmoins, par souci de clarté et afin d'assurer que les résultats soient comparables avec les premiers entraînements (réalisés sans cette technique), j'exprime toujours les volumes de données en nombre d'images entières dans la partie résultats.

## Gestion des données à l'inférence des images de taille 2160×1620 pixels

En théorie, les modèles YOLO étant convolutionnels, ils peuvent accepter en inférence des images de taille différente de celles utilisées à l'entraînement. Cependant, j'ai observé une baisse de performance lorsque les images complètes de 2160×1620px étaient utilisées directement, comparées à une prédiction effectuée sur quatre sous-images de 1216×1216. Pour résoudre ce problème, l'application finale intègre un mécanisme de découpage automatique des images en quatre parties lors de l'inférence. Les résultats obtenus sur les sous-images sont ensuite fusionnés afin de produire une détection unique, en évitant de compter plusieurs fois les mêmes nématodes présents dans les zones de recouvrement.

Pour illustrer ce mécanisme, la figure 4.5 présente un exemple. L'image originale (2160×1620px) est découpée en quatre sous-images (1216×1216px), délimitées par des lignes verticale et horizontale. Chaque sous-image est prédite séparément :

- les boîtes détectées sur la sous-image en haut à gauche sont affichées en **rouge**,

- celles en haut à droite en **bleu**,

- celles en bas à gauche en **rose**,

- celles en bas à droite en **vert**.

On observe immédiatement que certaines zones sont **recouvertes par une, deux, voire quatre sous-images** (la zone centrale). Par conséquent, un même nématode peut être détecté plusieurs fois. L'objectif est donc de fusionner les résultats de manière cohérente afin de compter correctement les vers, sans doublons.

**Principe des safe lines** Pour gérer ces cas, j'ai introduit le concept de **safe lines**. Ces lignes correspondent aux frontières intérieures des sous-images :

- la bordure gauche des sous-images droites,

- la bordure supérieure des sous-images du bas.

Le principe est le suivant : lorsqu'une boîte de détection est proche (ou touche) une safe line, elle est **attribuée uniquement à l'une des deux sous-images concernées**, en fonction de sa position par rapport à la ligne. Ce mécanisme permet non seulement de déterminer de façon univoque quelle sous-image a la responsabilité du nématode, mais aussi de garantir que ce dernier est intégralement visible dans l'image retenue.

En effet, la distance entre une safe line et le bord opposé de l'image responsable est suffisamment grande pour contenir entièrement un nématode détecté :

- pour les safe lines verticales, la marge est de 812 px = (2 × 1216) – 1620 entre la safe line et le bord droit des sous-images de gauche;

- pour les safe lines horizontales, la marge est de 272 px = (2 × 1216) – 2160 entre la safe line et le bord inférieur des sous-images du haut.
Ainsi, le nématode attribué à une sous-image par ce mécanisme se trouve toujours entièrement visible dans celle-ci car les nématodes les plus grands sur les images de laboratoires ont une largeur maximale d'environ 200 pixels.

Un paramètre $\varepsilon$ est introduit pour gérer les petites différences de taille ou de position des boîtes détectées par deux sous-images voisines. En effet, YOLOv8 peut produire des boîtes légèrement décalées pour un même nématode. J'ai donc fixé $\varepsilon = 10$ pixels : si une boîte se trouve à moins de 10 pixels d'une safe line, elle est considérée comme touchant la safe line.

Par exemple, dans la figure 4.5, on observe un nématode entouré en violet : la boîte bleue (image en haut à droite) touche la safe line horizontale, alors que la boîte verte (image en bas à droite) ne la touche pas. Sans l'introduction de $\varepsilon$, ce nématode aurait été compté deux fois. Avec la tolérance, il est considéré comme touchant la safe line horizontale même pour la boîte verte et est attribué uniquement à la sous-image du haut.

**Limites de l'approche par safe lines et alternatives testées**
La règle des safe lines fonctionne bien dans la majorité des cas, car un nématode visible dans deux sous-images est généralement détecté dans les deux, ce qui permet une fusion correcte. Cependant, il existe des contre-exemples. Par exemple, dans la figure 4.5, un nématode entouré en rouge est détecté uniquement dans l'image en haut à droite (boîte bleue). Dans ce cas, la responsabilité aurait dû être attribuée à l'image du bas à droite (boîte verte), qui n'a pas détecté le nématode. Résultat : le ver n'est pas compté dans l'image finale.

J'ai également testé une approche alternative basée sur l'**Intersection over Union (IoU)**. L'idée était de fusionner ou supprimer les boîtes présentant un fort taux de recouvrement, en supposant qu'elles correspondaient au même nématode. Mais il n'existe aucune garantie que les boîtes comparées correspondent réellement au **même nématode** et cette méthode a montré de fortes limites :

- Si le seuil IoU était trop bas, certaines vraies détections étaient supprimées à tort (par exemple lorsqu'un nématode était fortement enchevêtré avec un autre).

- Si le seuil était trop élevé, on conservait plusieurs boîtes différentes pour le même nématode, entraînant des doublons.

En résumé, bien que mon approche actuelle par safe lines puisse entraîner la perte occasionnelle de certains nématodes (notamment lorsque l'une des sous-images échoue à les détecter), elle présente un **meilleur compromis** que l'approche IoU, car elle réduit le risque de sur-comptage et limite la prise en compte de faux positifs (débris confondus avec des vers).
<figure><img src="image_19.png" /></figure>

<figure><img src="image_20.png" /><figcaption>FIGURE 4.5 – Exemple d'image de 2160×1620 découpée en 4 images de 1216×1216 avec illustrations des safe lines.</figcaption></figure>
### 4.2.3 Pipeline d'entraînement du modèle de détection

Dans cette partie je vais expliquer la méthode utilisée pour optimiser les paramètres du réseau de neurones afin d'obtenir les meilleures performances possibles.

#### Précautions dans l'interprétation des résultats

Afin de comparer différentes architectures (par exemple YOLOv8 et YOLOv12), d'évaluer l'impact de modifications d'hyperparamètres ou de tester des méthodes d'apprentissage distinctes, tous les tests réalisés sur un même jeu de données ont été conduits dans des conditions expérimentales identiques. Pour chaque série de tests, les partitions d'entraînement, de validation et de test ont été conservées afin d'isoler l'effet des paramètres étudiés. De plus, afin de garantir la reproductibilité, chaque entraînement a été initialisé avec une graine aléatoire fixée (cf. annexe, listing A.1), ce qui assure la stabilité des résultats d'un lancement à l'autre.

Il est toutefois important de noter que le jeu de données global a évolué progressivement au cours du stage : de nouvelles images annotées issues de données réelles fournies par les biologistes ont été intégrées au fur et à mesure. Par conséquent, l'ajout de nouvelles données ne rend pas les interprétations précédentes obsolètes, mais peut en modifier la portée. En d'autres termes, ce qui est vrai et pertinent pour un jeu de données donné ne l'est pas toujours de manière équivalente pour un autre.

Aussi, afin de garantir la reproductibilité, chaque entraînement a été initialisé avec une graine aléatoire fixée (cf. annexe, listing A.1). Cela assure que les résultats sont stables d'un lancement à l'autre. Toutefois, il est important de noter que la reproductibilité ne signifie pas nécessairement qu'une légère amélioration de performance reflète une supériorité intrinsèque du modèle ou de la configuration. En effet, même si les principales sources d'aléa (comme l'initialisation des poids ou certaines opérations stochastiques de l'optimiseur) sont contrôlées par le *seed*, cela ne garantit pas que la descente de gradient explorée soit optimisée de manière équivalente pour l'ensemble des cas testés. Concrètement, ce n'est pas parce qu'une configuration donne un résultat légèrement meilleur avec une *seed* fixée que l'on peut en conclure que la modification de l'hyperparamètre améliore réellement les performances du modèle.

Ainsi, une amélioration trop faible ou non systématique sera considérée comme n'ayant pas de réelle signification.

#### Données d'entrées

YOLOv8 s'entraîne à partir de jeux de données annotés, organisés selon la convention de type *YOLO format* :

- **Dossier images/** : contient les images brutes, généralement subdivisées en *train*, *val* et *test*.

- **Dossier labels/** : contient les annotations correspondantes, où chaque fichier *.txt* décrit, ligne par ligne, les objets présents dans l'image. Chaque ligne suit le format :

```
classe xcentre ycentre largeur hauteur
```

où les coordonnées sont normalisées par rapport à la taille de l'image.

- **Fichier de configuration .yaml** : décrit les chemins vers les dossiers *train* et *val*, le nombre de classes et leur nom.

J'ai donc réalisé un prétraitement où les images et les fichiers labels.txt sont divisés en 4 selon le découpage précédemment décrit.

#### Recherche de la meilleure stratégie d'entraînement

Une fois les données préparées et mises en entrée du modèle, plusieurs paramètres peuvent être ajustés afin d'optimiser l'entraînement du modèle. Pour identifier la configuration la plus
performante, j'ai adopté une approche empirique : à chaque étape, je me suis interrogé sur la pertinence des paramètres à modifier, puis j'ai procédé à des tests en ne faisant varier qu'un seul paramètre à la fois.

Ainsi, j'ai exploré l'impact de différents réglages :

- **Hyperparamètres généraux : epochs** (nombre de passes complètes), **batch** (taille de lot), **imsz** (taille de redimensionnement des images), **device** (GPU ou CPU).

- **Optimisation : optimizer** (par défaut SGD ou AdamW), **lr0** (taux d'apprentissage initial), **lrf** (facteur de réduction du learning rate final), **momentum**, **patience** (nombre d'epochs sans amélioration avant arrêt), **weight_decay** (poids des différentes loss (box, cls, dfl)).

- **Data augmentation :** flips, rotations, effets miroires, mosaïque

**Augmentation des données : Mosaic** Tout au long de l'entraînement des différents modèles, j'ai utilisé plusieurs techniques d'augmentation des données sur le jeu d'entraînement, notamment des **effets miroir** verticaux et horizontaux, ainsi qu'une **rotation de 180°**.

En complément, YOLOv8 intègre également une méthode spécifique d'augmentation de données appelée **Mosaic**. Cette technique consiste à combiner **quatre images différentes** en une seule en les disposant en mosaïque pendant les premières époques de l'entraînement. Concrètement, le modèle découpe aléatoirement les images, puis les assemble dans une nouvelle image d'entrée. Cette méthode présente deux avantages principaux :

elle augmente considérablement la diversité contextuelle des objets et des arriérplans;

elle permet au modèle d'apprendre à détecter des **objets à différentes échelles et sous différents environnements** en regroupant des informations provenant de plusieurs images.

Dans mes expérimentations, ces techniques d'augmentation ont globalement amélioré les performances des modèles, et je les ai conservées jusqu'à l'entraînement du dernier modèle. Pour ce dernier, le volume de données ayant été doublé, l'utilisation des effets miroir et des rotations rendait l'entraînement inutilement long sans améliorer la performance. J'ai donc décidé de les désactiver.

En revanche, la méthode **Mosaic** a apporté des résultats légèrement mais systématiquement meilleurs, y compris avec un jeu de données plus important. Elle a donc été conservée pour l'entraînement du modèle final.

**Choix du learning rate** YOLOv8 utilise une stratégie **adaptative** du learning rate plutôt qu'un taux fixe.

Dans les premières itérations, l'entraînement ne démarre pas directement avec le taux d'apprentissage cible **lr0**. Un **échauffement progressif** (warm-up) est appliqué : le learning rate croît depuis une valeur très faible jusqu'à atteindre **lr0**. Cette stratégie permet de stabiliser les premières phases d'apprentissage et d'éviter de fortes oscillations initiales.

**Scheduler du learning rate** Par défaut, YOLOv8 adopte un scheduler à décroissance cosinus :

$$lr(t) = lr_0 \cdot \frac{1}{2} \left( 1 + \cos \left( \frac{t}{T} \pi \right) \right)$$

où t correspond à l'itération courante et T au nombre total d'itérations.

Ainsi, le learning rate diminue progressivement tout au long de l'entraînement, favorisant une **convergence plus stable** à mesure que le modèle se rapproche d'un minimum.

**Impact du nombre d'époques** Le nombre d'époques interagit fortement avec la stratégie de décroissance du learning rate :
Si le nombre d'epochs est trop faible le modèle sera sous-entraîné n'ayant pas atteint son minimum de sa loss. Mais si le nombre d'epochs est trop élevé en raison de la décroissance continue, le *learning rate* reste longtemps élevé avant d'amorcer une vraie baisse. Cela peut retarder l'amélioration des performances et conduire à dépasser le seuil de *patience* (nombre d'epochs sans amélioration avant arrêt anticipé). Dans ce cas, deux solutions sont possibles : 1. réduire la valeur initiale lr0 ; 2. ou augmenter le paramètre *patience*.

Un nombre trop élevé d'epochs augmente également le coût computationnel et le temps d'entraînement.

J'ai testé de prendre un **learning rate constant** ou de modifier les valeurs de lr0, de patience et du nombre d'époques, mais les résultats se sont révélés moins ou autant performants que la stratégie adoptée par YOLOv8 avec ces paramètres. En effet, la combinaison d'un **échauffement initial** suivi d'une **décroissance progressive** a montré son efficacité et reste la plus adaptée à notre problème.

Dans notre cas, les meilleurs résultats ont été obtenus avec un nombre d'epochs modéré, autour de 100 epochs. Ce choix permet au learning rate de converger suffisamment rapidement, tout en évitant des temps d'entraînement trop longs. Les performances obtenues sont équivalentes à celles que l'on aurait avec un entraînement plus long, mais pour un coût beaucoup plus faible.

## Optimisation du temps d'entraînement
L'optimisation du temps d'entraînement est particulièrement importante dans ce projet, car de nombreux entraînements doivent être lancés pour tester différentes configurations et paramètres. En effet, chaque modification d'un hyperparamètre nécessite un nouvel entraînement complet pour évaluer son impact sur les performances du modèle. Cela représente non seulement une perte de temps, mais également un coût environnemental lié à la consommation énergétique.

Pour réduire ces coûts, plusieurs paramètres peuvent être optimisés :

- **Nombre d'epoque = 100** : un compromis trouvé entre la convergence, les performances et le temps d'entraînement.

- **Batch size = 4** : des batchs plus grands permettent de traiter davantage d'images en parallèle, mais consomment plus de mémoire GPU. Il faut donc le maximiser en évitant d'excéder la mémoire GPU de mon ordinateur personnel.

- **Device** : en définissant device=0, l'entraînement exploite le GPU de la machine, ce qui accélère considérablement les calculs par rapport à une exécution sur CPU.

- **Nombre de workers = 2** : ce paramètre contrôle le nombre de processus parallèles utilisés pour charger les données. L'augmenter permet d'accélérer la préparation des batchs et de réduire le temps d'entraînement global. Cependant, un nombre trop élevé peut entraîner une saturation de la mémoire RAM.

En optimisant simultanément ces paramètres, il est possible d'accélérer les entraînements tout en limitant la consommation de ressources, sans dégrader les performances des modèles.

## Choisir le poids des loss
Dans YOLOv8, les poids des différentes *loss* sont définis par défaut comme suit :

- **Box Loss (box=7.5)** : évalue la qualité des boîtes englobantes prédites,

- **Classification Loss (cls=0.5)** : pénalise les erreurs d'attribution de classe,

- **Distribution Focal Loss (dfl=1.5)** : améliore la précision des scores de localisation en affinant les prédictions des bords des objets.

J'ai testé d'attribuer différents poids à chacune de ces *loss* pour voir leur impact sur les performances. Après plusieurs essais, j'ai conclu qu'il était généralement plus intéressant d'attribuer encore plus de poids à la **Box Loss = 20 et 1 pour CLS et DFL**, car c'est elle qui a le plus d'impact dans notre cas.
**Détection des boîtes** YOLOv8 utilise plusieurs paramètres pour la détection des boîtes :

**conf** (*float*=0.25) : seuil minimal de confiance pour accepter une détection. Les objets détectés avec une confiance inférieure à ce seuil sont ignorés.

**IoU** (*float* = 0.7) : seuil d'Intersection over Union utilisé lors de la suppression des boîtes prédictives qui se chevauchent fortement (non-maximum suppression). Plus ce seuil est bas, plus le modèle supprime de boîtes se recouvrant, ce qui réduit le nombre de détections. Cela peut être utile pour éviter les doublons.

J'ai initialement supposé qu'augmenter ce seuil permettrait au modèle de conserver plusieurs boîtes lors de la détection d'objets très proches les uns des autres, comme deux nématodes juxtaposés. Cela aurait pu favoriser la distinction de deux individus proches, en évitant qu'une seule boîte englobante soit générée. Cependant, les tests que j'ai effectués ont montré que modifier cette valeur a eu peu d'impact sur les performances finales du modèle. Par ailleurs, avec un IoU trop faible, YOLO a tendance à supprimer l'une des deux détections et à ne conserver qu'une grande boîte commune, ce qui nuit à la précision de la segmentation. J'ai donc choisi de conserver la valeur initiale (0.7), qui s'est avérée suffisamment efficace dans la plupart des cas.

Pour l'entraînement, j'ai choisi de conserver les valeurs par défaut. En effet, trouver les meilleurs paramètres aurait nécessité de tester un grand nombre de configurations pour obtenir des résultats fiables, ce qui aurait été trop coûteux en temps.

Cependant, ces paramètres sont également utilisés lors des phases de **test** et d'**inférence**,
et il sera important de bien les ajuster à ce moment-là afin d'optimiser les résultats finaux.

## Évaluation finale sur le jeu de test

Pour évaluer les performances du modèle, j'ai analysé l'évolution des courbes de loss d'entraînement et de validation à l'aide de **TensorBoard**, ainsi que leur corrélation avec les principales métriques calculées sur le jeu de test : rappel, précision et F1-score. En parallèle, j'analysais visuellement les **images résultantes** afin d'identifier d'éventuels problèmes récurrents dans les prédictions. Par exemple, le modèle détectait parfois des **rayures** sur les images comme des vers, ce qui introduisait de faux positifs systématiques. Pour corriger ce type d'erreurs, j'ai enrichi le dataset avec davantage d'images contenant ce genre de motifs afin d'apprendre au modèle à mieux les différencier des vrais vers. J'ai également constaté que certaines **vérités terrain** réalisées par les biologistes pouvaient être discutables : dans quelques cas, les débris détectés par le modèle ressemblaient tellement à de vrais vers qu'il était difficile d'affirmer avec certitude s'il s'agissait d'une erreur du modèle ou d'une annotation incorrecte même pour les biologistes.

Pour le test final, plusieurs paramètres jouent un rôle important dans la qualité des résultats :

**le seuil de confiance (conf)** : il détermine la probabilité minimale pour accepter une détection comme valide;

**le seuil d'IoU** : utilisé pour la suppression des boîtes trop chevauchantes, il influence directement le nombre de détections retenues;

**le seuil d'IoU pour l'évaluation** : il sert à déterminer si une boîte détectée correspond à une vérité terrain en mesurant leur taux de chevauchement, et donc si elle doit être considérée comme un **vrai positif (VP)** ou un **faux positif (FP)**.

J'ai donc comparé les résultats obtenus entre différentes configurations et valeurs de paramètres afin de trouver la meilleure version du modèle. Dans ce genre de cas, on utilise souvent la courbe ROC (Receiver Operating Characteristic) pour choisir les seuils optimaux. Mais ici, ce n'est pas applicable, car je n'ai pas de vrais négatifs dans mes données qui sont nécessaire pour cette courbe. Dans mon problème, on cherche uniquement à détecter des vers sur une image, donc compter les "non-vers détectés comme non-vers" n'a pas vraiment de sens.

À la place, je me suis basé sur deux autres courbes :

- la courbe FROC (cf. figure 4.6) (Free-response Receiver Operating Characteristic), qui ressemble à la ROC mais représente le rappel en fonction du nombre moyen de faux positifs par image;
— la courbe PR (cf. figure 4.6) (Precision-Recall curve), qui représente la précision en fonction du rappel.

Le but de ces courbes est d'aider à choisir les meilleures valeurs de paramètres. Concrètement pour déterminer la meilleure valeur d'IoU par exemple, je fixais une valeur de conf (seuil de confiance), puis je faisais varier l'IoU de 0.05 jusqu'à 1 par pas réguliers. Pour chaque valeur d'IoU, j'évaluais le modèle et j'affichais un point sur les deux courbes.

La courbe FROC est utile, mais pas la plus informative : elle permet surtout de fixer un nombre maximum de faux positifs par image à ne pas dépasser. Une fois ce seuil choisi, je prend la valeur d'IoU qui donne le meilleur rappel sans dépasser ce nombre de faux positifs.

La courbe PR est plus intéressante, car elle montre directement le compromis entre précision et rappel. Si un modèle était parfait, il aurait un point idéal situé en (1, 1), ce qui correspond à 100 % de précision et 100 % de rappel. Pour trouver le meilleur point, j'ai donc pris celui qui a la distance euclidienne la plus courte par rapport à ce point idéal.

<figure><img src="image_21.png" /><figcaption>FIGURE 4.6 – Exemple de courbes FROC et PR pour identifier la meilleure valeur de IoU pour mon modèle</figcaption></figure>

En pratique, ce choix correspond presque toujours à ce que donne aussi le F1-score, puisque c'est une métrique qui combine rappel et précision. J'ai donc utilisé à la fois la PR curve et le F1-score pour confirmer mes résultats.

Enfin, il faut noter que j'ai d'abord fixé une valeur de **conf** arbitrairement pour chercher le meilleur IoU, puis avec ce IoU optimal, j'ai testé différentes valeurs de **conf**. En utilisant la PR curve j'ai donc choisi un score de confiance à 0,3 et IoU de 0,4 (en me basant sur le résultat de le PR curve pour IoU présenté en annexe A.1). Cependant cette méthode n'est pas parfaitement rigoureuse, car l'IoU optimal dépend de la valeur de **conf** choisi initialement arbitrairement. Tester exhaustivement toutes les combinaisons possibles de **conf** et IoU aurait été plus rigoureux, mais cela aurait été beaucoup trop coûteux. A noter que lors de l'utilisation de l'application, le seuil de confiance peut être ajusté en temps réel afin de détecter plus ou moins de vers. En effet, les performances du modèle dépendent également des caractéristiques des images analysées, dans certains cas, il peut être préférable d'augmenter le seuil pour privilégier des détections plus fiables et inversement.

Pour ce qui est du seuil d'IoU utilisé pour l'évaluation, il a une influence importante sur les résultats du modèle, car c'est lui qui détermine si une boîte détectée peut être compté comme un vrai positif en l'attribuant à une vérité terrain. Dans notre cas, ce seuil est fixé arbitrairement bas, à 0,2, car l'objectif principal est que le nombre total de vers détectés soit proche du nombre attendu, et non que la position des boîtes soit parfaitement précise. Ainsi, tant qu'une boîte est suffisamment proche d'une vérité terrain pour indiquer que le modèle a essayé de détecter ce ver, elle est considérée comme correcte. Il n'était pas pertinent d'utiliser la PR curve pour déterminer la meilleure valeur de l'IoU pour l'évaluation à utiliser. En effet, plus le seuil d'IoU
est bas, plus l'évaluation est indulgente, ce qui augmente directement le nombre de vrais positifs (TP) et donc les scores globaux. Cependant, dans notre cas, l'objectif n'est pas d'optimiser ces scores de manière artificielle, mais d'obtenir une correspondance visuelle et qualitative cohérente entre les prédictions et les annotations. Par conséquent, la valeur du seuil d'IoU a été choisie de manière arbitraire, en se basant sur des critères qualitatifs.

Cependant, le choix d'une IoU pour l'évaluation faible entraîne un problème inhérent : celui de l'attribution correcte des prédictions aux vérités terrain correspondantes. Lorsque plusieurs vers détectés sont proches les uns des autres, une mauvaise attribution peut fausser les résultats. Comme illustré sur la figure 4.7, l'image de gauche montre deux vérités terrain (entourées en rouge), tandis que l'image de droite affiche deux détections. Pourtant, l'une d'elles est considérée comme un **faux positif** (en orange). Cela s'explique probablement par le fait que le ver détecté en boîte verte a été associé en premier à la vérité terrain la plus haute. La boîte orange, ne pouvant plus être reliée à aucune vérité terrain proche, est alors rejetée faute d'un IoU suffisant avec celle du bas. Pour résoudre ce problème, YOLO utilise, dans sa fonction de perte, plusieurs informations pour décider quelle prédiction associer à quelle vérité terrain : notamment la distance entre les centres des boîtes, leur forme, et leur IoU. De mon côté, pour la phase de test, j'ai simplement attribué chaque boîte prédite à la vérité terrain avec laquelle elle avait la plus grande IoU. D'après mes tests, cette approche s'est révélée suffisante, toutes les attributions observées semblaient correctes.

<figure><img src="image_22.png" /><figcaption>FIGURE 4.7 – Ancienne mauvaise assignation corrigée par une nouvelle assignation basée sur l'IoU maximal entre les boîtes : Rouge : vérité terrain | Vert : vrai positif | Orange : faux postif</figcaption></figure>

### 4.2.4 Stratégie pour identifier les stades de développement

Maintenant, nous allons voir la stratégie mise en place pour estimer le stade de développement des vers. Les biologistes distinguent généralement quatre stades de développement, numérotés de 1 à 4. Le stade 1 correspond aux formes les plus jeunes, proches de l'état larvaire, tandis que le stade 4 regroupe les vers adultes. Le principal problème est que nous ne disposons d'aucune donnée annotée indiquant le stade des vers. Faire annoter manuellement chaque image par les biologistes aurait été beaucoup trop long et coûteux.

Après discussion avec les biologistes, j'ai appris qu'identifier le stade de développement d'un ver revient essentiellement à estimer sa taille. Or, comme toutes les images ont été capturées au même grossissement et avec la même résolution, en connaissant le nombre de pixels occupés par
un ver, on peut en déduire son stade d'évolution. L'idée a donc été de créer un modèle capable
de segmenter les vers afin de mesurer la surface segmentée et ainsi, d'estimer leur taille.

La première approche que j’ai testé consistait à entraîner un modèle YOLOv8-seg sur l’image complète cependant, les résultats étaient médiocres, le modèle n’arrivait pas à segmenter correctement les vers sur des images réelles.

J'ai donc choisi de simplifier le problème : plutôt que de segmenter l'image entière, j'ai entraîné le modèle uniquement à l'intérieur des boîtes détectées par le premier modèle sur des images synthétiques. Pour cela, j'ai découpé les images autour des boîtes détectées et j'ai entraîné le modèle uniquement sur ces découpes. J'ai choisi une taille d'image de 224×224, suffisamment grande pour contenir n'importe quelle boîte sans la déformer, mais assez petite pour réduire le coût d'entraînement.

Cette méthode a permis d'obtenir un modèle capable de segmenter les vers à l'intérieur des boîtes détectées, mais il reste fortement limité : il a été entraîné sur les images synthétiques donc il y a seulement 117 vers différents placés aléatoirement avec des transformations. Même si les fonds d'images changent et que les vers visibles dans les boîtes varient (figure 4.8), cela reste peu de diversité pour obtenir une segmentation très fiable.

nematodes_01385263 - IoU: 0.76, Dice: 0.86

<figure><img src="image_23.png" /><figcaption>FIGURE 4.8 – Exemple d'image synthétique croppée pour entrainer le modèle de segmentation</figcaption></figure>

Dans l'application finale, avec les biologistes nous avons définis des seuils sur le nombre de pixels pour différencier les stades. Ces seuils sont ajustables directement dans l'application afin de s'adapter si nécessaire. Le but, à ce stade, n'était pas d'avoir un système parfait, mais de fournir une première version fonctionnelle permettant aux biologistes d'annoter presque automatiquement les stades des vers.

Par ailleurs, j'ai aussi prévu la possibilité d'enregistrer les informations sur le stade des vers directement dans l'application. L'idée, à terme, est de constituer progressivement un jeu de données annoté afin de pouvoir entraîner un autre modèle capable de classifier les vers par stade en exploitant le contexte global de l'image, utilisant la taille des autres vers pour les classifier de manière plus précise.

Pour l'instant, cela reste impossible, il y a un manque de recherches sur le nématode du pin et même pour les biologistes, il est difficile de déterminer avec précision le stade exact d'un ver. Il n'existe pas encore de référentiel scientifique clair des tailles typiques pour chaque stade, et les frontières entre stades sont parfois peu visibles. Dans ce contexte, le modèle actuel remplit son rôle : fournir une estimation suffisante pour différencier approximativement vers adultes et vers juvéniles, en attendant de pouvoir aller plus loin.
5

Résultats et discussion

Dans cette partie, je vais présenter les résultats obtenus au fil des entraînements, en mettant en évidence les avancées et l’impact des différents changements apportés aux modèles. Je ne détaillerai pas l’ensemble des configurations testées, mais je présenterai les résultats les plus significatifs.

Dans un second temps, j’analyserai également les performances de manière qualitative en montrant des exemples d’images complexes afin d’évaluer comment les modèles s’en sortent dans des situations difficiles.

Enfin, je comparerai ces résultats avec les études existantes, notamment celle de Saikai et al [19], évoquée précédemment dans l’état de l’art, afin de situer les performances de mon approche par rapport aux travaux antérieurs.

5.1 Évaluation quantitative et qualitative des modèles

5.1.1 Quelle métrique choisir ?

L’objectif de l’évaluation est de mesurer à quel point les prédictions du modèle reflètent correctement le nombre réel de nématodes présents dans les images, tout en limitant les erreurs de détection. Deux types d’erreurs doivent être minimisés :

— les **faux positifs**, lorsqu’un débris est détecté à tort comme un nématode,

— les **faux négatifs**, lorsqu’un nématode présent n’est pas détecté.

Pour cette raison, la métrique principale retenue est le **F1-score**, qui représente la moyenne harmonique entre la *précision* et le *rappel* :

$$
\text{F1-score} = 2 \cdot \frac{\text{Précision} \times \text{Rappel}}{\text{Précision} + \text{Rappel}}
$$

avec :

$$
\text{Précision} = \frac{\text{TP}}{\text{TP} + \text{FP}}, \quad \text{Rappel} = \frac{\text{TP}}{\text{TP} + \text{FN}}
$$

où TP désigne les vrais positifs, FP les faux positifs, et FN les faux négatifs.

Concrètement, la précision mesure la proportion de prédicitions correctes parmi l'ensemble des détections du modèle, tandis que le rappel évalue la capacité à retrouver la totalité des nématodes présents. Le F1-score combine ces deux mesures et pénalise simultanément un excès de faux positifs ou un manque de détections, ce qui en fait un indicateur adapté à la problématique étudiée.
### 5.1.2 Evolution des résultats des modèles

Je vais présenter des tableaux récapitulant les résultats des différents modèles. Il est important de préciser que les comparaisons doivent être faites uniquement à l'intérieur d'un même tableau. En effet, les résultats présentés dans les différents tableaux ont été obtenus au fur et à mesure que de nouvelles données étaient ajoutées au jeu d'entraînement, de validation et de test. Les ensembles de données utilisées n'étant donc pas identiques, comparer directement les tableaux entre eux n'aurait pas de sens.

<figure><img src="image_24.png" /><figcaption>FIGURE 5.1 – Intégration des vers seedé avec Alpha blending</figcaption></figure>
<figure><img src="image_25.png" /><figcaption>FIGURE 5.2 – Intégration des vers seedé avec Poisson blending</figcaption></figure>

Époques : 100
Taille images : 800 px²
IoU Test = 0,4
Conf = 0,5
IoU = 0,4
Seed : None

<table><caption>TABLE 5.1 – Performances du modèle avec images synthétiques (*blending*) avec des images réelles uniquement pour l'évaluation.</caption><thead><tr><th>Types de données d'entraînement</th><th>Prédits</th><th>GT total</th><th>Précision</th><th>Rappel</th><th>F1-score</th></tr></thead><tbody><tr><td>Synthétiques Alpha <i>blending</i></td><td>482</td><td>380</td><td>0.4295</td><td>0.5447</td><td>0.4803</td></tr><tr><td>Synthétiques Poisson <i>blending</i></td><td>379</td><td>380</td><td>0.5646</td><td>0.5632</td><td>0.5639</td></tr></tbody></table>

On observe sur les images (cf. figure 5.1 et figure 5.2) que le passage de la méthode d'alpha blending à celle de poisson blending permet d'obtenir un rendu beaucoup plus naturel. Les vers synthétiques sont mieux intégrés dans l'arrière-plan, avec une transition plus réaliste entre les bords du ver et l'image d'origine.

Cette amélioration visuelle se reflète également dans les résultats quantitatifs de la table 5.1. En particulier, on observe une meilleure précision du modèle après l'utilisation du poisson blending. Une précision plus élevée signifie que parmi toutes les prédicitions faites par le modèle, une plus grande proportion correspond à de vraies détections. Autrement dit le nombre de faux positifs diminue par rapport au nombre de vrais positifs. Ce gain s'explique par le fait qu'avec les images générées par alpha blending, le modèle avait tendance à détecter deux vers là où il n'y en avait qu'un seul (cf. figure 5.3) sur les images de test. Avec l'entraînement basé sur le
poisson blending, ce problème se produit beaucoup moins souvent (cf. figure 5.4), ce qui améliore la fiabilité des prédictions.

<figure><img src="image_26.png" /><figcaption>FIGURE 5.3 – Exemple de prédiction du modèle entrainé avec alpha blending</figcaption></figure>

<figure><img src="image_27.png" /><figcaption>FIGURE 5.4 – Exemple de prédiction du modèle entrainé avec Poisson blending</figcaption></figure>

## Utilisations de données réelles (50 données réelles) et impact des données synthétiques

Époques : 300

Taille images : 1216 px²

IoU Test = 0,2

Conf = 0,5

IoU = 0,4

Seed : 42
<table><caption>TABLE 5.2 – Performances du modèle avec données synthétiques et réelles combinées avec une cinquantaine de données réelles dans les jeux de données.</caption><thead><tr><th>Types de données d'entraînement</th><th>Prédits</th><th>GT total</th><th>Précision</th><th>Rappel</th><th>F1-score</th></tr></thead><tbody><tr><td>Synthétiques (300 époques (E))</td><td>1146</td><td>1516</td><td>0.9171</td><td>0.6933</td><td>0.7896</td></tr><tr><td>Synthétiques + Réelles (300 E)</td><td>1246</td><td>1516</td><td>0.943</td><td>0.7751</td><td>0.8508</td></tr><tr><td>Synthétiques + Réelles augmentées (rotation + effet miroir) (300 E)</td><td>1336</td><td>1516</td><td>0.9207</td><td>0.8113</td><td>0.8626</td></tr><tr><td>Synthétiques (1000 E)</td><td>1166</td><td>1516</td><td>0.9177</td><td>0.7058</td><td>0.7979</td></tr><tr><td>Réelles (300 E)</td><td>1254</td><td>1516</td><td>0.925</td><td>0.7652</td><td>0.8375</td></tr></tbody></table>

La table 5.2 montre que l'augmentation des données d'entraînement améliore les performances du modèle, que ce soit grâce à l'application d'effets miroir et de rotations ou par l'ajout de données synthétiques. En effet le tableau met en évidence l'importance d'utiliser à la fois les données synthétiques et les données réelles avec un naive fine-tuning. On observe en effet que le modèle atteint un F1-score de 85% lorsqu'il est entraîné sur la combinaison des deux types de données, alors qu'il reste inférieur à 80% lorsqu'il n'est entraîné que sur des données synthétiques. Les données réelles seules donnent de meilleurs résultats (83%), mais restent moins performantes que la combinaison des deux.

Cela montre que le modèle apprend d'abord sur les données synthétiques, ce qui lui permet d'acquérir une base solide, puis il s'affine avec les données réelles pour améliorer ses performances. Mais cette stratégie est surtout pertinente tant que nous ne disposons pas d'un volume important de données réelles.

## apport de Yolov12, des fonctions de perte et des données synthétiques avec beaucoup de données réelles (100 images réelles)

Époques : 100

Conf = 0,3

Taille images : 1216 px²

IoU = 0,4

IoU Test = 0,2

Seed : 42

<table><thead><tr><th></th><th>Défaut</th><th>hyp1_box</th><th>hyp2_classes</th><th>hyp3_dfl</th></tr></thead><tbody><tr><th>Box loss</th><td>7,5</td><td>20</td><td>3</td><td>2</td></tr><tr><th>cls</th><td>0,5</td><td>1</td><td>10</td><td>1</td></tr><tr><th>dfl</th><td>1,5</td><td>1</td><td>0,5</td><td>5</td></tr></tbody></table>

<table><caption>TABLE 5.3 – Performances des modèles Yolov12 et Yolov8 en modifiant le poid des loss avec une centaine de données réelles dans les jeux de données</caption><thead><tr><th>Types de données d'entraînement</th><th>Prédits</th><th>GT total</th><th>Précision</th><th>Rappel</th><th>F1-score</th></tr></thead><tbody><tr><td>Synthétiques YOLOv12 (200 E)</td><td>704</td><td>1193</td><td>0.9460</td><td>0.5583</td><td>0.7022</td></tr><tr><td>Synthétiques (500 E)</td><td>769</td><td>1193</td><td>0.9129</td><td>0.5884</td><td>0.7156</td></tr><tr><td>Réelles (100 E)</td><td>1173</td><td>1193</td><td>0.9156</td><td>0.9003</td><td>0.9079</td></tr><tr><td>Synthétiques + Réelles (100 E)</td><td>1052</td><td>1193</td><td>0.9563</td><td>0.8433</td><td>0.8962</td></tr><tr><td>Synthétiques + Réelles (100 E) hyp1_box</td><td>1181</td><td>1193</td><td>0.9213</td><td>0.9120</td><td>0.9166</td></tr><tr><td>Synthétiques + Réelles (100 E) hyp2_classes</td><td>1157</td><td>1193</td><td>0.9239</td><td>0.8961</td><td>0.9098</td></tr><tr><td>Synthétiques + Réelles (100 E) hyp3_dfl</td><td>1227</td><td>1193</td><td>0.8838</td><td>0.9137</td><td>0.9008</td></tr><tr><td>Synthétiques + Réelles YOLOv12 (100 E)</td><td>1134</td><td>1193</td><td>0.9127</td><td>0.8676</td><td>0.8896</td></tr></tbody></table>

La table 5.3 présente les résultats obtenus avec différents modèles YOLOv8 et YOLOv12 en
modifiant les poids des différentes fonctions de perte (*loss*) et en intégrant environ une centaine de données réelles dans l'entraînement. On observe que le modèle entraîné uniquement sur des données réelles atteint un F1-score comparable à celui obtenu en utilisant une combinaison de données synthétiques et réelles. Cela s'explique par le fait qu'à partir de ce stade, la quantité de données réelles devient suffisante pour que le modèle s'appuie principalement sur celles-ci, délaissant partiellement l'information issue des données synthétiques.

Le tableau montre également qu'augmenter le poids de la *box loss* améliore les performances, ce qui est cohérent puisque cette loss garantit que les boîtes englobantes soient correctement positionnées autour des vers.

Enfin, les résultats indiquent que les performances du YOLOv12 ne sont pas grandement supérieures par rapport à celles de YOLOv8, elles sont même légèrement inférieures dans la plupart des configurations testées. Ce constat est systématique, même lorsque l'on utilise différentes stratégies d'entraînement ou des versions plus lourdes du modèle. Ainsi, l'utilisation de YOLOv8 nano apparaît comme une solution optimale, offrant un bon compromis entre précision et efficacité.

## 5.2 Comparaison du modèle final (avec 200 images réelles) avec un modèle de la litérature

Je vais maintenant comparer les résultats de mon modèle final avec ceux du modèle présenté dans l'article [19] de Saikai et al. Dans leur étude, les auteurs proposent un algorithme basé sur YOLOv8, dont j'ai pu tester les poids mis à disposition. Cependant, il est important de prendre en compte pour cette comparaison que le modèle de détection fourni par Saikai a été entraîné pour reconnaître des œufs, pas des vers donc il n'est pas utilisable dans notre cas. Le modèle qui détecte les vers dans son étude n'est quand à lui pas un modèle de détection par boîte englobante, mais un modèle de segmentation.

Les données d'entraînement utilisées pour ce modèle de segmentation ne sont pas accessibles, ce qui m'empêche de reproduire exactement leurs conditions.

Pour pouvoir comparer nos résultats malgré ces différences, j'ai évalué leur modèle de segmentation sur mon jeu de test, en utilisant le même protocole d'évaluation que pour mon modèle de détection. Cela signifie que le modèle de Saikai n'a jamais été entraîné sur mes images, et qu'en plus, il a été conçu pour une tâche plus complexe (la segmentation étant plus difficile que la simple détection).

Afin d'obtenir des métriques comparables, j'ai extrait des boîtes englobantes à partir des masques de segmentation prédits par leur modèle, puis j'ai comparé ces boîtes aux vérités terrain de mon jeu de test (cf. Fig. 5.5).

Époques : 100

Conf = 0,3

Taille images : 1216 px²

IoU = 0,4

IoU Test = 0,2

Seed : 42

<table><caption>TABLE 5.4 – Comparaison des performances de mon modèle de détection avec le modèle de segmentation de l'article</caption><thead><tr><th>Types de données d'entraînement</th><th>Prédits</th><th>GT total</th><th>Précision</th><th>Rappel</th><th>F1-score</th></tr></thead><tbody><tr><td>Mon modèle</td><td>5200</td><td>5392</td><td>0.9185</td><td>0.8858</td><td>0.9018</td></tr><tr><td>Modèle de l'article de Saikai et al. [19]</td><td>3179</td><td>5392</td><td>0.8474</td><td>0.4996</td><td>0.6286</td></tr></tbody></table>
<figure><img src="image_28.png" /><figcaption>FIGURE 5.5 – Exemple de prédiction avec le modèle de segmentation fourni dans l'étude de Saikai et al. [19] sur mes données. À gauche, la prédiction ; au milieu, les vérités terrain ; et à droite, la prédiction à partir de laquelle j'ai extrait les boîtes englobantes</figcaption></figure>

Les résultats présentés dans la table 5.4 montrent que mon modèle de détection atteint un F1-score de 90,18%, contre seulement 62,86% pour le modèle de segmentation proposé par Saikai et al. [19]. Cette différence marquée s'explique principalement par le fait que le modèle n'a pas été entraîné pour effectuer une tâche de détection sur ce type de données et que le jeu de test utilisé ici est volontairement exigeant, comportant de nombreuses images complexes.

La faiblesse du modèle de Saikai et al. est particulièrement visible au niveau du rappel, qui est très faible. Cela signifie qu'un grand nombre de vers présents dans les images ne sont pas détectés (faux négatifs), ce qui réduit considérablement la capacité du modèle à identifier l'ensemble des objets d'intérêt.

Toutefois, ce résultat m'a amené à envisager une nouvelle approche, consistant à comparer le modèle de Saikai et al. à mon propre modèle de segmentation. En revanche, une évaluation quantitative de cette comparaison n'est pas possible sur les données réelles, faute de vérité terrain pour la segmentation. L'évaluation devra donc se faire de manière qualitative, à travers une analyse visuelle des résultats (cf. figure 5.6 et figure 5.7).
<figure><img src="image_29.png" /><figcaption>FIGURE 5.6 – Exemple de prédiction avec mon modèle de segmentation</figcaption></figure>

<figure><img src="image_30.png" /><figcaption>FIGURE 5.7 – Exemple de prédiction avec le modèle de segmentation de l'article de Saikai et al. [19]</figcaption></figure>

Le modèle de Saikai et al. fonctionne très mal lorsqu'il est appliqué à la segmentation à l'intérieur des boîtes détectées. Cela s'explique probablement par le fait qu'il a été entraîné sur des images de taille bien plus grande, contenant plusieurs vers à segmenter simultanément. Dans ce contexte restreint, le modèle ne parvient pas à s'adapter, et les résultats sont nettement insuffisants.

Lorsqu'il est utilisé sur l'image complète (comme présenté dans la table 5.4) ses performances en détection sont meilleures, mais il omet encore un grand nombre de vers, ce qui entraîne un
rappel très faible.

En résumé, le modèle proposé dans l'article ne constitue pas une solution viable pour notre tâche, en détection ou en segmentation, que ce soit sur les images complètes ou dans des régions restreintes.

À noter que j'avais envisagé de réaliser un *finetuning* simple du modèle de segmentation proposé dans l'article, en le réentraînant sur mes images synthétiques, utilisées pour entrainer mon modèle de segmentation (figure 4.8). Cependant, les poids de ce modèle ne peuvent être entraînés que sur **CPU**, une exécution sur **GPU** provoquant systématiquement une interruption du processus.

Or, un entraînement sur CPU aurait été à la fois beaucoup trop long, d'autant plus que le modèle de segmentation que j'ai développé répondait déjà pleinement aux besoins exprimés par les biologistes.

## 5.3 Limites observées et améliorations possibles

### Limites

Lors des premiers entraîements, une stratégie d'augmentation des données avait été mise en place, incluant notamment des rotations à 180° ainsi que des effets miroir horizontaux, verticaux, et leur combinaison. Cependant, il est apparu que certaines de ces transformations pouvaient produire des images redondantes.

Par exemple :

Une rotation à 180° suivie d'un retournement horizontal équivaut à un simple retournement vertical.

Une rotation à 180° suivie d'un retournement vertical revient à un retournement horizontal.

Une rotation à 180° suivie d'un double retournement (horizontal + vertical) redonne l'image d'origine.

Une image simplement retournée horizontalement puis verticalement est identique à une rotation de 180°.

Ce phénomène introduisait donc des doublons dans le jeu d'entraînement. Toutefois, le risque de biais ou de surapprentissage reste limité, car chaque image est simplement présente deux fois : aucune n'est surreprésentée par rapport aux autres. En revanche, cette redondance augmente inutilement la taille du dataset sans apporter de réelle diversité, ce qui alourdit les entraînements sans bénéfice significatif pour la généralisation du modèle. À noter que cette stratégie d'augmentation des données n'a pas été utilisée pour l'entraînement du dernier modèle, car celui-ci disposait déjà d'un volume de données suffisant et ce type d'augmentation n'apportait plus d'amélioration significative des performances.

Le modèle n'obtient d'aussi bons résultats que sur les données spécifiques de ce laboratoire, avec ces réglages de loupe binoculaire. Il aurait également été intéressant d'entraîner le modèle sur des données acquises avec différents réglages et plusieurs loupes binoculaires, afin d'obtenir un modèle plus robuste, fonctionnant sur différents types d'images de microscopie même si ça impliquerait de repenser l'estimation du stade de développement actuel qui ne pourrait plus être estimé en fonction du nombre de pixels dans le masque de segmentation.

### Améliorations possibles

Plusieurs pistes d'amélioration pourraient être envisagées :

Réintegration partielle des données synthétiques : Bien que les données synthétiques aient été écartées dans la version finale, il aurait été pertinent de tester leur intégration de manière modérée dans le jeu d'entraînement réel. Cela aurait pu permettre d'améliorer la robustesse du modèle dans certaines configurations visuelles spécifiques, tout en évitant de trop s'éloigner du domaine réel.
Optimisation de l'affichage des résultats dans l'application : Une amélioration envisageable au niveau de l'interface utilisateur serait la possibilité d'afficher ou masquer certaines boîtes de détection de manière sélective, à l'aide d'un système de calques. Une tentative a été faite dans ce sens, mais l'implémentation initiale souffrait de problèmes de performance, entraînant un ralentissement important de l'application. Une version plus optimisée pourrait être envisagée pour améliorer l'expérience utilisateur.

## 5.4 Enjeux environnementaux et sociétaux

Ce projet s'inscrit dans une démarche environnementale et sociétale visant à mieux comprendre le nématode du pin. En développant des outils d'analyse automatisés, l'objectif est de faciliter le travail des biologistes et de rendre les études sur les nématodes plus accessibles, rapides et efficaces. L'utilisation de modèles d'intelligence artificielle pour identifier les nématodes du pin permet d'accélérer considérablement la tâche de comptage et, plus largement, de faire progresser les recherches sur cette espèce invasive qui est une vraie menace pour les écosystèmes forestiers. Bien sûr, comme pour tout entraînement de modèles d'IA, il existe un enjeu environnemental lié à la consommation énergétique. Toutefois, une attention particulière a également été portée à l'empreinte environnementale du processus de développement en choisissant un modèle léger et rapidement entraînable, YoloV8 nano, et en limitant au maximum le nombre d'entrainement à inutile. À titre d'exemple, l'entraînement final du modèle YoloV8 nano, effectué avec l'ensemble des données disponibles sur 100 époques, a généré une empreinte carbone estimée à seulement 0,000262 kg CO2eq en utilisant la bibliothèque CodeCarbon, illustrant la sobriété énergétique de la méthode mise en œuvre.
# 6

# Conclusion et perspectives

L'objectif de ce projet était de développer un modèle d'intelligence artificielle capable d'identifier et de compter automatiquement les nématodes dans des images de microscopie, afin de faire gagner un temps précieux aux biologistes. Cet objectif a été atteint avec succès en développant une application qui permet grâce au modèle YOLOv8 d'effectuer des comptages qui auraient été impossibles à réaliser manuellement dans des délais raisonnables. Les biologistes du laboratoire se sont montrés très satisfaits des résultats obtenus. Grâce à l'automatisation proposée, il a été possible d'analyser un volume d'images : 700 images ce qui aurait démandé entre 350 à 700 heures de travail sans l'application. Les résultats obtenus atteignent environ 90% de F1-score, ce qui est supérieur au seuil d'acceptation défini par les biologistes. En effet, dans les protocoles manuels classiques, un comptage est considéré comme valide si l'écart entre deux comptages indépendants est inférieur à 10%. Cependant, le F1-score est une mesure plus stricte que cette tolérance, il ne se contente pas de vérifier si le nombre total de vers comptés est correct, mais il pénalise les faux positifs et les faux négatifs. Ainsi, un F1-score de 90% reflète une performance supérieure au seuil d'acceptation habituel, car il impose des contraintes plus strictes que le simple accord sur le nombre total de vers.

Ils m'ont aussi associé à deux posters scientifiques présentés lors d'un congrès (cf. Poster A.2 et Poster A.3 présentés en annexe), ce qui témoigne de la satisfaction des biologistes quant aux performances et à l'efficacité du modèle développé.

Ce stage a été pour moi une expérience particulièrement enrichissante. J'ai particulièrement apprécié le fait d'évoluer aux côtés de personnes expérimentées, travaillant sur des tâches d'intelligence artificielle, ce qui a favorisé des échanges riches et constructifs. J'ai également beaucoup apprécié la collaboration avec l'équipe de BioGeCo, dont la réactivité et l'implication ont permis d'aboutir à une solution réellement viable en laboratoire. De plus, l'application développée continuera d'être utilisée pour les prochains comptages nécessaires. L'équipe dispose désormais d'un outil robuste qui pourra être exploité continuellement dans le cadre de leurs travaux.
Bibliographie

[1] Csb-1 dataset : Microscopic videos of c. elegans, 2023. URL : https://zenodo.org/records/7456803.

[2] Albert Alonso and Julius B Kirkegaard. Fast detection of slender bodies in high density microscopy data. *Communications Biology*, 6(1):754, 2023.

[3] ANSES. Avis et rapport de l'anses relatifs à « Évaluation des mesures d'urgence destinées à prévenir la propagation du nématode du pin dans l'union européenne. *Agence nationale de sécurité sanitaire de l'alimentation, de l'environnement et du travail*. URL : https://pra.eppo.int/pra/eab2f3a8-2fc3-4dea-8bdb-dc77ea9d7e0f.

[4] Serge Beucher and Christian Lantuéjoul. Use of watersheds in contour detection. Technical report, Centre de Morphologie Mathématique, Ecole des Mines de Paris, 1979. Introduction de la méthode de segmentation par lignes de partage des eaux (watershed). URL : https://people.cmm.minesparis.psl.eu/users/beucher/publi/watershed.pdf.

[5] John Canny. A computational approach to edge detection. *IEEE Transactions on Pattern Analysis and Machine Intelligence*, PAMI-8(6):679-698, 1986. Présentation de l'algorithme de détection de contours de Canny. doi:10.1109/TPAMI.1986.4767851.

[6] Maurice Deserno and Katarzyna Bozek. Wormswin : Instance segmentation of c. elegans using vision transformer. *Scientific Reports*, 13(1):11021, 2023.

[7] Alexey Dosovitskiy, Lucas Beyer, Alexander Kolesnikov, Dirk Weissenborn, Xiaohua Zhai, Thomas Unterthiner, Mostafa Dehghani, Matthias Minderer, Georg Heigold, Sylvain Gelly, et al. An image is worth 16x16 words : Transformers for image recognition at scale. *arXiv preprint arXiv:2010.11929*, 2020. URL : https://arxiv.org/pdf/2010.11929/1000.

[8] Kaiming He, Georgia Gkioxari, Piotr Dollár, and Ross Girshick. Mask r-cnn. In *Proceedings of the IEEE International Conference on Computer Vision (ICCV)*, pages 2961–2969, 2017. URL : https://arxiv.org/abs/1703.06870.

[9] Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun. Deep residual learning for image recognition. In *Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR)*, pages 770–778, 2016. URL : https://arxiv.org/abs/1512.03385.

[10] Bo H Holladay, Denis S Willett, and Lukasz L Stelinski. High throughput nematode counting with automated image processing. *BioControl*, 61(2):177–183, 2016. URL : https://link.springer.com/article/10.1007/s10526-015-9703-2.

[11] Yann LeCun, Léon Bottou, Yoshua Bengio, and Patrick Haffner. Gradient-based learning applied to document recognition. *Proceedings of the IEEE*, 86(11):2278–2324, 1998. URL : https://ieeexplore.ieee.org/abstract/document/726791.

[12] Nobuyuki Otsu. A threshold selection method from gray-level histograms. *IEEE Transactions on Systems, Man, and Cybernetics*, 9(1):62–66, 1979. Méthode de seuillage classique utilisée en segmentation d'image. URL : https://ieeexplore.ieee.org/document/4310076.

[13] Patrick Pérez, Michel Gangnet, and Andrew Blake. Poisson image editing. In *Seminal Graphics Papers: Pushing the Boundaries, Volume 2*, pages 577–582. 2023. URL : https://dl.acm.org/doi/10.1145/882262.882269.
[14] Thomas Porter and Tom Duff. Compositing digital images. In *Proceedings of the 11th annual conference on Computer graphics and interactive techniques*, pages 253–259, 1984. URL: https://dl.acm.org/doi/abs/10.1145/800031.808606.

[15] PyTorch Contributors. `torch.nn.silu`. https://pytorch.org/docs/stable/generated/torch.nn.SiLU.html, 2025. Consulté en juillet 2025.

[16] Annie Raffin. Conserver les ressources génétiques du pin maritime en france. *Ministère de l'Agriculture*, 2011. URL: https://agriculture.gouv.fr/telecharger/88640?token=71420742706aac214006f78031884e9b0001fda5e3974190ea5c4b769f0ced31.

[17] Shaoqing Ren, Kaiming He, Ross Girshick, and Jian Sun. Faster r-cnn: Towards real-time object detection with region proposal networks. In *Advances in Neural Information Processing Systems (NeurIPS)*, pages 91–99, 2015. URL: https://arxiv.org/abs/1506.01497.

[18] Olaf Ronneberger, Philipp Fischer, and Thomas Brox. U-net: Convolutional networks for biomedical image segmentation. In *International Conference on Medical image computing and computer-assisted intervention*, pages 234–241. Springer, 2015. URL: https://arxiv.org/abs/1505.04597.

[19] Kanan K Saikai, Trim Bresilla, Janne Kool, Norbert CA de Ruijter, Casper Van Schaik, and Misghina G Teklu. Counting nematodes made easy: leveraging ai-powered automation for enhanced efficiency and precision. *Frontiers in Plant Science*, 15:1349209, 2024.

[20] N. H. Salman and C. Q. Liu. Image segmentation and edge detection based on watershed techniques. *International Journal of Computers and Applications*, 25(4):258–263, 2003. Application de la méthode Watershed pour la segmentation et la détection de contours. doi:10.1080/1206212X.2003.11441713.

[21] Jean Serra. *Image Analysis and Mathematical Morphology*. Academic Press, London, 1982. Ouvrage fondateur de la morphologie mathématique appliquée au traitement d'image. doi: 10.1109/TPAMI.1987.4767941.

[22] Tarek Soliman, Monique C. M. Mourits, Wopke van der Werf, Geerten M. Hengeveld, Christelle Robinet, and Alfons G. J. M. Oude Lansink. Framework for modelling economic impacts of invasive species, applied to pine wood nematode in europe. *PLOS ONE*, 7(9):e1–e12, 09 2012. doi:10.1371/journal.pone.0045505.

[23] Jason R. Swamidass and Anne E. Carpenter. BBBC010: C. elegans live/dead assay, 2009. Broad Bioimage Benchmark Collection (BBBC), accessed July 2025. URL: https://bbbc.broadinstitute.org/BBBC010.

[24] Eren Tahir and Mert Bal. Deep image composition meets image forgery. *arXiv preprint arXiv:2404.02897*, 2024. URL: https://arxiv.org/abs/2404.02897.

[25] Yunjie Tian, Qixiang Ye, and David Doermann. Yolov12: Attention-centric real-time object detectors, 2025. URL: https://arxiv.org/abs/2502.12524, arXiv:2502.12524.

[26] Ultralytics. Yolov8, 2023. URL: https://github.com/ultralytics/ultralytics.

[27] Abirami Vina Ultralytics. Qu'est-ce que le masque r-cnn et comment fonctionne-t-il?, 2025. URL: https://www.ultralytics.com/fr/blog/what-is-mask-r-cnn-and-how-does-it-work.

[28] Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N Gomez, Łukasz Kaiser, and Illia Polosukhin. Attention is all you need. *Advances in neural information processing systems*, 30, 2017.

[29] O.R. Vincent and O. Folorunso. A descriptive algorithm for sobel image edge detection. In *Proceedings of Informing Science & IT Education Conference (InSITE)*, pages 97–107, 2009. Présentation détaillée de l'algorithme de Sobel pour la détection de contours. URL: https://proceedings.informingscience.org/InSITE2009/InSITE09p097-107Vincent613.pdf.
[30] Zenghua Zhang, Jiang Li, Rui Wang, and Xueyu Zhang. A new method for measuring the size of nematodes using image processing. *Computational Intelligence and Neuroscience*, 2017:1-9, 2017. Utilisation de la morphologie mathématique pour estimer la taille des nématodes. URL : https://pubmed.ncbi.nlm.nih.gov/32161812/, doi:10.1093/biomethods/bpz020.
# A

## Annexes

### A.1 Fonction pour seeder les entrainements des modèles

<caption>Listing A.1 – Fonction de seeding pour l'entrainement</caption>

```python
def fix_seed(seed=42):
    random.seed(seed)
    np.random.seed(seed)
    torch.manual_seed(seed)
    torch.cuda.manual_seed(seed)
    torch.cuda.manual_seed_all(seed)
    torchrix backends.cudnn.deterministic = True
    torch TI backends.cudnn.benchmark = False
```
## A.2 Courbe Précision-Rappel

<figure><img src="image_31.png" /><figcaption>FIGURE A.1 – Courbe Précision-Rappel pour mon dernier modèle de détection</figcaption></figure>

## A.3 Posters
# Dynamiques d'invasion d'un agent pathogène de quarantaine (*Bursaphelenchus xylophilus*) dans le contexte du changement climatique et de la compétition avec son espèce sœur (*B.mucronatus*)

Ducourtiox E.¹, Clavier Y.², Aubert A.², Dencausse B.², Kohler A.², Bonifácio L.³, Inácio M.³, Chataigner A.⁴, Delmas C.⁵, Papadakis N.⁵, Coudreau A.¹,

Saubin M.²*, & Villate L.¹*

1) Univ. Bordeaux, INRAE, BIOGECO, F-33615, Pessac, France 2) Univ. Bordeaux, INRAE, BIOGECO, F-33610, Cestas, France 3) INIAV, Oeiras, Portugal 4) INRAE, Bordeaux Sciences Agro, ISVV, SAVE, 33140, Villenave d'Ornon, France 5) Univ. Bordeaux, CNRS, INRIA, Bordeaux INP, IMB, UMR 5251, F-33400 Talence, France

<figure><img src="image_32.png" /></figure>

<figure><img src="image_33.png" /></figure>

<figure><img src="image_34.png" /></figure>

<figure><img src="image_35.png" /></figure>

<figure><img src="image_36.png" /></figure>

## Contexte

Les invasions biologiques ont à ce jour fortement augmenté entraînant des conséquences écologiques et économiques majeures. *Bursaphelenchus xylophilus* (Bx), nématode phytopathogène responsable du flétrissement du pin, en est un exemple. Son cycle de vie implique deux autres acteurs : un arbre hôte (A) et un coléoptère vecteur du genre *Monochamus* (B). Les femelles *Monochamus* pondent dans du bois mort et, si le nématode est présent, il colonise le système respiratoire des jeunes insectes émergents. Ainsi lors de leur premier repas de maturation sur pin sain, ils transmettent le nématode qui, en se multipliant dans l'arbre provoque la cavitation des vaisseaux du xylème et cause la mort de l'arbre en quelques semaines. Classé comme organisme de quarantaine en Europe. *B. xylophilus* n'a pas encore été détecté en France, mais son introduction potentielle représente une menace importantes pour les forêts françaises, en particulier celles de *Pinus pinaster*. Son établissement pourrait être influencé par plusieurs facteurs tels que les conditions climatiques et ses interactions avec *B. mucronatus* (Bm), une espèce indigène déjà présente en France et partageant la même niche écologique.

**Objectif** : évaluer l'influence de facteurs abiotiques et biotiques sur la dynamique d'invasion de *B. xylophilus*, en caractérisant :

(1) les composantes plastiques et génétiques de la réponse des taux de croissance de *B. xylophilus* et *B. mucronatus* aux variations de température.

(2) la réponse de leurs taux de croissance à la compétition interspécifique.

## Échantillonnage des deux espèces

<figure><img src="image_37.png" /></figure>

<figure><img src="image_38.png" /></figure>

<figure><img src="image_39.png" /><figcaption>SCHÉMA 1 : CAMPAGNE D'ÉCHANTILLONNAGE</figcaption></figure>

<caption>SCHÉMA 2 : MISE EN ÉLEVAGE DES DEUX ESPÈCES DE NÉMATODES</caption>

## (1) Réponse des taux de croissance aux variations de température

<figure><img src="image_40.png" /><figcaption>Prélèvement des aliquots</figcaption></figure>

<figure><img src="image_41.png" /><figcaption>PREMIERS RÉSULTATS</figcaption></figure>

<figure><img src="image_42.png" /></figure>

À JS, *B.xylophilus* présente systématiquement un nombre de nématodes plus élevé que *B. mucronatus*, quelle que soit la température. Une fois tous les échantillons comptés, un modèle (GLM) sera utilisé pour évaluer l'effet des différentes variables. Nous nous attendons à ce que Bx présente un taux de croissance plus élevé que Bm à toutes les températures.

Graphique des moyennes et écarts types du nombre total de nématodes pour les deux espèces à 22, 25 et 30 °C après 5 jours de culture. Les p-values du test de Kruskal-Wallis sont indiquées au-dessus des points pour chaque température.

## (2) Réponse des taux de croissance à la compétition interspécifique

<figure><img src="image_43.png" /></figure>

Pour cette expérience, les boîtes des deux conditions ont été conservées à 22 °C. Le même protocole que celui de l'expérience (1) a été utilisé pour récolter les échantillons. La quantification du nombre d'individus de chaque espèce à chaque pas de temps est en cours par qPCR. Nous nous attendons à ce que *B.xylophilus* présente un avantage démographique sur *B.mucronatus*.

<caption>FIGURE A.2 – Poster de Ducourtiox E.</caption>

<footnote>*Ces deux auteurs contribuent de façon égale à la supervision de cette étude.</footnote>
# Multiplication et migration du nématode du pin (Bursaphelenchus xylophilus) et de son espèce sœur (B. mucronatus) selon l'origine géographique et les communautés fongiques associées

Clavier, Y.¹, Ducourtoux, E.¹, Aubert, A.¹, Dencausse, B.¹, Kohler, A.¹, Bonifácio, L.², Inácio, M. L.², Chancerel, E.¹, Delmas, C.³, Papadakis, N.³, Coudreau, A.¹, Villate, L.¹* & Saubin, M.¹*

¹Univ. Bordeaux, INRAE, BIOGECO, France, ²INIAV, Oeiras, Portugal, ³Univ. Bordeaux, CNRS, INRIA, Bordeaux INP, JMB, France

²Ces deux auteurs contribuent de façon égale à la supervision de cette étude.

## Contexte

Le nématode du pin *Bursaphelenchus xylophilus* (Bx) est responsable de la maladie du fiétrissement du pin. Introduit au Portugal à la fin du XXe siècle, il n'a pour l'instant pas été détecté en France. Bx est vecté par des insectes du genre *Monochamus*. Une fois dans l'arbre, le nématode se nourrit des cellules du xylème entraînant la mort de son hôte. Les champignons colonisent alors les arbres mourants, fournissant une autre source de nourriture pour les nématodes. En Europe, la niche écologique du nématode du pin est occupée par une espèce du même genre, *B. mucronatus* (Bm), qui a le même cycle de vie (hôtes, insectes vecteurs), mais n'est pas considérée comme pathogène. L'arrivée de Bx en France constitue donc un risque pour les espèces natives de nématodes et de pins, notamment dans les forêts de *Pinus pinaster*, et pourrait fortement impacter l'activité forestière.

Dans le cadre du projet DEBUSC, nous cherchons à mieux comprendre la migration de Bx et de Bm au sein des arbres et les facteurs qui peuvent l'influencer, afin d'améliorer la détection précoce de Bx dans les arbres en cas d'introduction en France. Pour cela, nous testons trois hypothèses :

1. L'utilisation de la **méthode LAMP** (Loop-mediated isothermal amplification) permet la détection précoce de Bx dans les arbres.

2. La **densité** de nématodes dans le houppier (point d'entrée dans l'arbre) est plus élevée qu'en bas du tronc.

3. Les **communautés fongiques présentes** dans l'arbre sont différentes selon l'espèce et la densité de nématodes.

## Matériel et méthodes

Nombre d'arbres échantillonnés

<figure><img src="image_44.png" /></figure>

Pinus pinaster

Houppier

Intermédiaire
Bas

<figure><img src="image_45.png" /></figure>

Copeaux de bois

**LAMP** : test d'une méthode de détection *in situ*

**Extraction et comptage** : densité de nématodes

**Metabarcoding** : analyse des communautés fongiques associées

## Résultats préliminaires

Résultats de la méthode LAMP en fonction de la densité de nématodes et du statut d'infection de l'arbre (n=33)

Densité de B. xylophilus et de B. mucronatus selon la hauteur du prélèvement

Nombre d'arbres échantillonnés :

Bas (Bm = 39, Bx = 16),

Intermédiaire (Bm = 39, Bx = 16) et

Haut (Bm = 39, Bx = 25).

<figure><img src="image_46.png" /></figure>

Espèce

Bursaphelenchus mucronatus

Bursaphelenchus xylophilus

<figure><img src="image_47.png" /></figure>

<figure><img src="image_48.png" /></figure>

<table><thead><tr><th rowspan="2"></th><th colspan="2">Statut d'infection</th></tr><tr><th>Sain</th><th>Infecté</th></tr></thead><tbody><tr><th>LAMP</th><td>Positif 0</td><td>5</td></tr><tr><th></th><td>Négatif 18</td><td>10</td></tr></tbody></table>

## Conclusions et Perspectives

### Méthode LAMP

* La méthode LAMP présente de nombreux faux négatifs : il peut y avoir un biais d'échantillonnage.

* Nous prévoyons de tester cette méthode sur un plus grand échantillon et des réplicats.

* Nous prévoyons de tester la puissance de détection en fonction de la densité de nématodes et de la hauteur de prélèvement.

### Densité de nématode

* Bm et Bx ne sont pas présents aux mêmes hauteurs : Bm dans le houppier, et Bx plus bas dans le tronc.

* Bx est présent à de bien plus fortes densités que Bm dans les arbres infectés

* → Ces deux observations peuvent expliquer la différence de pathogénicité.

* Nous prévoyons d'intégrer la composante temporelle dans l'échantillonnage pour comparer les distances et vitesses de migration,

### Communautés fongiques associées

* L'analyse metabarcoding est en cours.

* Nous prévoyons d'intégrer la composante temporelle dans l'échantillonnage pour observer l'évolution des communautés fongiques au cours d'une infection.

* La caractérisation des communautés fongiques pourrait aider à identifier les sites plus propices au développement de Bx.

<caption>FIGURE A.3 – Poster de Clavier Y.</caption>