Automatiser la reconnaissance des grands dauphins, et valoriser les données d'observation de cétacés.
Projet Data For Good (saison 15), porté par l'association Miraceti.
Miraceti est une association dédiée à l'étude et à la préservation des cétacés en Méditerranée. Son activité repose sur l'observation et le recensement des cétacés, pour appuyer des projets de recherche et des mesures de conservation, avec d'autres institutions (Office Français de la Biodiversité, Aires Marines Protégées).
Ses données d'observation (images, coordonnées GPS, reconnaissance d'individus) sont indispensables pour maximiser son impact. Miraceti fait appel à Data For Good pour améliorer leur gestion interne, et leur valorisation publique.
Miraceti reconnaît chaque grand dauphin à sa nageoire dorsale : les encoches et les cicatrices sont comme une empreinte digitale.
Source du schéma : miraceti_chaine.excalidraw.
| 1. L'outil de matching | 2. La carte interactive | |
|---|---|---|
| Aujourd'hui | Après chaque sortie en mer, Miraceti compare à la main les photos au catalogue, pour savoir si chaque dauphin est déjà connu ou nouveau. De 45 à 90 minutes par individu, et des centaines de photos en attente | Les cartes et les données d'observation sont partagées à la main, une par une, pour un territoire, une espèce ou un acteur |
| Le besoin | Un matching plus rapide, sans compromettre la qualité de l'identification | Des cartes et des données accessibles en autonomie, sans compromettre leur confidentialité |
| Ce qu'on construit | Récupérer les photos d'une observation, les comparer au catalogue avec un algorithme de computer vision, ajouter les observations au suivi des dauphins | Un portail en ligne qui affiche les données d'observation (type QGIS), avec filtres et export |
| Pour qui | Outil interne à Miraceti | Outil public |
Le principe de l'outil de matching : le ML propose, Miraceti décide.
Les photos de Miraceti sont dans un bucket S3 privé. Elles passent par trois couches : les zips tels que livrés (raw/), les photos prêtes et décrites (curated/), puis ce que calcule le ML (derived/).
Source du schéma : miraceti_data_couches.excalidraw.
| Jeu | Ce que c'est | Photos | Dauphins |
|---|---|---|---|
catalogue |
Une photo par côté pour chaque dauphin connu : la base de recherche | 2 457 | 1 531 |
best_of |
Les photos d'une sortie en mer, par individu provisoire : ce qu'il faut identifier | 227 | 35 |
historique |
Des dauphins déjà identifiés, sur plusieurs années : pour mesurer le ML | 377 | 50 |
Le détail de chaque jeu, ses pièges et ses anomalies : les données de Miraceti.
1. Comprendre le métier. Le schéma ci-dessus, puis les données de Miraceti.
2. Demander les accès. Le bucket est privé : demande les credentials à mandresyandri. Puis suis l'accès aux données pour créer ton .env et vérifier la connexion.
3. Choisir ta partie, selon ton profil :
| Ton profil | Ta partie | Ta doc |
|---|---|---|
| Data engineer | La chaîne de données : des zips aux données prêtes, à construire | docs/cetolog_pipeline |
| Data scientist, ML engineer | Le ML : empreintes, recherche, d'autres modèles à tester | docs/cetolog_ml |
| Analytics engineer, géodonnées | La base de données, QGIS et la carte interactive | vers une base de données |
| Dev backend, dev frontend | L'outil de validation, qui part de la démo | docs/cetolog_demo |
| DevOps | La mise en ligne sur Clever Cloud | mettre la démo en ligne |
4. Prendre une tâche : chaque doc a sa partie « Où on en est », avec ce qui reste à faire.
| Dossier | Rôle |
|---|---|
pipeline/ |
L'accès au bucket (storage.py) ; la chaîne de données est à construire |
dorsalmatch/ |
La chaîne ML : modèles, empreintes, recherche, mesure |
demo/ |
La démo Gradio : le ML propose, Miraceti décide |
notebooks/ |
data_livraison : récupérer les données et voir ce qu'on attend ; baseline_ml : le niveau à battre |
docs/ |
La documentation, un dossier par partie |
tests/ |
Les tests, sans données ni bucket |
data/ |
La copie locale du bucket, jamais dans Git |
Il faut uv. Depuis la racine du dépôt :
uv sync --all-groupscp .env.example .envRemplis .env avec les accès reçus, puis vérifie la connexion :
uv run python -m pipeline.storage checkuv run pytest -qActive une fois les contrôles lancés à chaque commit (ruff, et refus des .env, des clés, des données et des fichiers de plus de 5 Mo) :
uvx pre-commit installuvx pre-commit run --all-filesNE JAMAIS supprimer
raw/dans le bucket. Ce sont les zips tels que livrés par Miraceti : la seule couche irremplaçable. Si on la perd, il faut tout redemander à Miraceti.curated/etderived/se reconstruisent à partir deraw/, l'inverse est impossible.
- Jamais de
.env, de clés ou de données dans Git : le dépôt est public. - Pas de photos de Miraceti publiées sans leur accord.
- Pas de noms de personnes (observateurs, photographes) dans le dépôt.
- Un code simple, commenté en français, un fichier par rôle.
- En local d'abord, puis on publie quand c'est validé.

