← Mes projets

Projet d'équipe · ESILV · 2024 – 2025

Caméra thermique pour la détection de mines

Une mine enfouie ne chauffe ni ne refroidit au même rythme que la terre qui l'entoure : à certaines heures, elle peut se trahir par une tache plus chaude ou plus froide. Pour un projet de veille sur la détection de mines, nous avons prototypé une caméra thermique à bas coût : un capteur infrarouge de 8 × 8 pixels, un Arduino et un serveur Python. Voici ses 3 789 images réelles, enregistrées dans la nuit du 6 au 7 janvier 2025.

Visualisation web réalisée avec une assistance d'IA, à partir des données et du code du projet.

Rejouer la nuit

Chargement des mesures…

–

  • –minimum
  • –moyenne
  • –maximum
  • –pixels au-dessus du seuil
Températures minimale, moyenne et maximale sur toute la nuit. Cliquez pour vous y rendre.

Les trous de la courbe sont des coupures de l'enregistrement ; la plus longue dure 1 h 08, entre 23 h 57 et 1 h 05. Les images ont été tournées d'un quart de tour à l'acquisition, comme dans le prototype, pour correspondre à l'orientation du capteur.

La chaîne d'acquisition

  1. 1

    Capteur Grid-EYE

    64 thermopiles infrarouges (AMG8833) mesurent chacune la température d'une zone, au quart de degré. Liaison I²C.

  2. 2

    Arduino

    Lit les 64 valeurs et les envoie sur le port série sous forme de trame texte, encadrée par BEGIN_FRAME et END_FRAME.

  3. 3

    Serveur Python

    Un fil d'exécution lit le port série, valide chaque trame, la tourne d'un quart de tour, l'ajoute à un CSV et la sert par une API Flask.

  4. 4

    Tableau de bord

    Image en direct, historique image par image et carte des mesures géolocalisées (GPS simulé sur le prototype).

La trame série de l'image affichée


        

Apprendre à voir sous la pluie

L'autre volet du projet visait la détection visuelle avec YOLO, à partir d'un jeu de 6 714 images annotées. Sur le terrain, il pleut, il neige, il y a du brouillard : un script générait donc, pour chaque image, cinq variantes météo. L'objet ne bouge pas, donc son annotation est simplement recopiée. Ici, sur une scène de synthèse :

Annotation YOLO, identique pour toutes les variantes :

Du prototype au navigateur

Le prototype

  • Capteur AMG8833 sur Arduino, programmé en C++
  • Serveur Flask : lecture série dans un fil dédié, verrous sur les données partagées, CSV, API JSON
  • Tableau de bord web : direct, historique et carte OpenLayers

Le volet vision

  • Jeu de 6 714 images annotées au format YOLO, exporté de Roboflow
  • Script Python d'augmentation : pluie, neige, trois brouillards
  • YOLOv5 comme base de détection

Ce que la page ajoute

  • Toute la nuit rejouable, avec lissage bicubique des 64 pixels
  • Repérage des pixels plus chauds que la médiane de l'image, seuil réglable
  • Mesures nettoyées : une trame incomplète écartée sur 3 790