TNI+VO · Exercice de Programmation

EP06_01 — 🟢 Évaluation de Segmentation par IoU ( Intersection over Union )

6.14.1 EP06_01 🟢 Évaluation de Segmentation par IoU (Intersection over Union)

Tout au long de ce chapitre, plusieurs étapes du pipeline produisent des masques binaires, comme dans la segmentation de documents, la localisation de QRCodes et la détection de défauts. Pour évaluer objectivement la qualité de ces segmentations, il est nécessaire de les comparer à un masque de référence (ground truth).

L’une des métriques les plus utilisées à cette fin est l’IoU (Intersection over Union, ou Intersection sur Union), définie comme le rapport entre l’aire de l’intersection et l’aire de l’union de deux masques binaires. Plus la valeur de l’IoU est élevée, plus la concordance entre la segmentation produite par l’algorithme et la référence est grande.

6.14.1.1 📋 Directives d’Implémentation

  1. Dimensions : Lire les entiers \(L\) (nombre de lignes) et \(C\) (nombre de colonnes).
  2. Masque de référence : Lire les \(L \times C\) éléments binaires (0 ou 1) de la matrice ref.
  3. Masque prédit : Lire les \(L \times C\) éléments binaires (0 ou 1) de la matrice pred.
  4. Intersection : Compter le nombre de positions \((i,j)\) pour lesquelles ref[i][j] = 1 et pred[i][j] = 1.
  5. Union : Compter le nombre de positions \((i,j)\) pour lesquelles ref[i][j] = 1 ou pred[i][j] = 1.
  6. Cas dégénéré : Si l’union est égale à \(0\), définir \(\mathrm{IoU}=1{,}0\), car les deux masques sont vides.
  7. Calcul : Si l’union est supérieure à zéro, calculer

\[ \mathrm{IoU}= \frac{|\mathrm{Intersecao}|} {|\mathrm{Uniao}|}. \]

  1. Classification : Déterminer la classification qualitative en utilisant la valeur de l’IoU avant l’arrondi.
  2. Arrondi : Afficher l’IoU avec quatre décimales.
  3. Sortie : Imprimer, dans cet ordre, l’intersection, l’union, l’IoU et la classification.

6.14.1.2 📌 Contraintes Computationnelles

  • Si l’union est égale à \(0\), la division ne doit pas être effectuée ; l’IoU doit être définie comme \(1{,}0\).
  • Les plages de classification utilisent des comparaisons non strictes (\(\geq\)).
  • La classification doit être effectuée en utilisant la valeur de l’IoU en précision complète, avant l’arrondi pour l’affichage.

6.14.1.3 🧠 Fondements Théoriques

L’IoU est définie par

\[ \mathrm{IoU}= \frac{|R\cap P|} {|R\cup P|}, \]

où :

  • \(R\) représente l’ensemble des pixels appartenant au masque de référence ;
  • \(P\) représente l’ensemble des pixels appartenant au masque prédit ;
  • \(|R\cap P|\) correspond au nombre de pixels appartenant simultanément aux deux masques ;
  • \(|R\cup P|\) correspond au nombre de pixels appartenant à au moins l’un des masques.
Plage d’IoU Classification Interprétation
\(\mathrm{IoU}\geq0{,}90\) EXCELENTE Concordance très élevée entre les masques.
\(0{,}70\leq\mathrm{IoU}<0{,}90\) BOM Petites différences entre les masques.
\(0{,}50\leq\mathrm{IoU}<0{,}70\) ACEITAVEL Concordance partielle entre les masques.
\(\mathrm{IoU}<0{,}50\) RUIM Faible concordance entre les masques.

L’IoU dépend uniquement du chevauchement entre les masques et est donc indépendante de la taille de l’image.

6.14.1.4 📦 Spécification d’Entrée et de Sortie (VPL)

Entrée :

  • Ligne 1 : entier \(L\).
  • Ligne 2 : entier \(C\).
  • \(L\) lignes suivantes : éléments binaires (0 ou 1) de la matrice ref.
  • \(L\) lignes suivantes : éléments binaires (0 ou 1) de la matrice pred.

Sortie :

  • Ligne 1 : Intersecao: X
  • Ligne 2 : Uniao: Y
  • Ligne 3 : IoU: Z
  • Ligne 4 : Classificacao: NOME

La valeur de IoU doit être imprimée avec quatre décimales.

6.14.1.5 📌 Exemples

Entrée Sortie Observation
2
2
1 1
0 0
1 0
0 0
Intersecao: 1
Uniao: 2
IoU: 0.5000
Classificacao: ACEITAVEL
La moitié de la région de référence a été correctement segmentée.
2
2
0 0
0 0
0 0
0 0
Intersecao: 0
Uniao: 0
IoU: 1.0000
Classificacao: EXCELENTE
Les deux masques sont vides ; par convention, \(\mathrm{IoU}=1{,}0\).
🎮 Simulateur EP06_01 : IoU (Intersection over Union) IoU = |A ∩ B| / |A ∪ B|
0
0
6
Déplacez et redimensionnez le masque prédit pour évaluer l'alignement.
Référence (A)
Prédit (B)
Chevauchement (A ∩ B)
–
Figure 6.21: Simulateur EP06_01 : IoU entre masque de référence et masque prédit
%%writefile EP06_01.py
# Code Python
Overwriting EP06_01.py
TestSuite("EP06_01.py").run()
✔️ EP06_01.cases existe déjà dans casos/
📋 5 cas chargé(s) depuis casos/EP06_01.cases

🔍 Test de Python : EP06_01.py
⚠️ EP06_01.py : fichier vide (moins de 3 lignes). Tests ignorés.