L'océan est un élément essentiel de notre planète, souvent négligé, et un bastion contre la menace du changement climatique. Considérés comme les villes de l'océan, les récifs coralliens sont essentiels à ses écosystèmes, tant pour la vie marine que pour la végétation océanique. Cependant, le changement climatique et la pollution d'origine humaine ne sont pas favorables à nos précieux récifs. prévisions que nous perdrons la quasi-totalité de nos récifs d'ici à 2050.
‍
‍
Outre l'atténuation des causes telles que le changement climatique et la pollution, la recherche sera essentielle pour tenter de sauver les récifs coralliens. Reef Support est une startup qui tente d'aider les chercheurs dans ce domaine. Elle crée des logiciels pour aider les chercheurs à prendre des décisions dans ce domaine. Avec FruitPunch AI, ils se sont demandé si l'IA pouvait jouer un rôle dans ce domaine. Ils ont donc organisé un défi pour voir si, avec l'aide de l'IA, ils pouvaient aider davantage les chercheurs à protéger les récifs coralliens. Dans le cadre de ce défi, ML6 a pris contact avec eux et a décidé de relever le défi dans le cadre de ses projets de Noël.
‍
L'objectif est de segmenter des images prises à partir de coraux, afin de déterminer automatiquement la couverture corallienne de cette image. Cela ressemble à un problème de segmentation d'images, assez simple. Malheureusement, comme c'est souvent le cas dans le monde réel, les données sont moins simples. Dans un monde idéal, les données sont constituées de masques de segmentation d'image sous forme d'étiquettes, comme dans l'image ci-dessous.
‍
‍
‍
Cependant, les données avec lesquelles nous travaillons sont celles de Seaview. Cet ensemble de données contient environ 1,1 million d'images haute résolution de coraux, dont environ 11 000 images annotées. Ces annotations, comme le montre l'image ci-dessous, sont des pixels annotés manuellement par des experts, indiquant à quoi ils appartiennent (corail, algue, éponge, ...).
‍
‍
‍
‍
Le principal défi de ce projet est donc d'appliquer les informations de ces annotations de manière intelligente, de sorte que nous puissions segmenter une image sans disposer de masques de segmentation d'image réels à utiliser pour l'entraînement.
‍
‍
La première idée qui m'est venue à l'esprit a été d'utiliser les étiquettes dont nous disposions non pas pour entraîner un modèle de segmentation, mais un modèle de classification. L'idée est que chaque annotation peut être utilisée comme information pour la classification des images. Pour ce faire, nous avons découpé, pour chaque image, un carré autour de chaque annotation. Comme nous avons environ 50 annotations par image, cela peut donner plus de 500 000 images d'entrée pour entraîner un classificateur.
‍
‍
‍
Ce modèle pourrait alors théoriquement parcourir l'ensemble de l'image comme une fenêtre déroulante, en classant chaque pixel. Cependant, nous devons une fois de plus vivre avec le fait que nous vivons dans le monde réel et que le temps de calcul est fini. C'est pourquoi, pour économiser du temps de calcul, la fenêtre roulante utilise une certaine taille de pas (16 dans le cas présent).
‍
Il en résulte que chaque bloc de 16 x 16 pixels de l'image est attribué à une classe, ce qui donne un masque de segmentation.
‍
‍
Lorsque le classificateur est suffisamment performant, le résultat de cette méthode semble assez prometteur, mais présente également des inconvénients.
‍
‍
‍
‍
‍
Une autre méthode, dont l'idée est attribuée à Maks Kulicki qui a également travaillé sur le défi, est une combinaison de segmentation non supervisée et d'un classificateur tel qu'utilisé précédemment.
‍
L'idée de cette méthode est d'utiliser d'abord une technique non supervisée (telle que SLIC) pour déterminer quels sont les segments possibles dans l'image. Ensuite, un patch est découpé autour du centre de chacun de ces segments, après quoi ce patch est soumis au classificateur.
‍
‍
Chacun des segments prédéterminés est alors attribué à une classe, ce qui donne un masque de segmentation.
‍
‍
Si l'on considère les deux méthodes précédentes, elles présentent toutes deux des avantages et des inconvénients. C'est donc tout naturellement que l'idée a germé : Peut-on combiner les deux ?
L'idée que nous avons appliquée est la suivante : Utiliser la fenêtre roulante pour obtenir une première "suggestion" de segmentation. Ensuite, la segmentation non supervisée divise l'image en segments. Au lieu d'utiliser le classificateur pour classer directement la classe du segment, on se base maintenant sur le résultat de la méthode de la fenêtre roulante. Si le pourcentage de pixels d'un segment classés comme corail est supérieur à un certain seuil (par exemple 30 %), le segment est considéré comme étant de type corail.
‍
‍
En conséquence, la performance a augmenté de manière significative (à la fois sur la base d'une évaluation visuelle subjective et dans les métriques).
Bien que les méthodes proposées ne soient certainement pas encore parfaites, des bases ont été jetées sur lesquelles nous pouvons nous appuyer pour affiner les méthodes et, espérons-le, améliorer autant que possible le travail des chercheurs sur les coraux.
‍
‍
‍
Pour les prochaines étapes, nous travaillerons avec l'organisation étudiante Everest Analytics. Comme cela correspond à leur objectif de permettre aux étudiants de travailler sur des projets de données et d'apprentissage automatique avec une valeur ajoutée sociétale, cela nous a semblé être l'occasion parfaite de reprendre ce projet avec eux. En tant que ML6, nous les guiderons pour essayer d'affiner les solutions proposées précédemment. Les pistes possibles sont les suivantes :
‍
‍
Restez à l'écoute pour un éventuel futur article de blog afin de voir comment il s'est amélioré.
‍