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
- Dimensions : Lire les entiers \(L\) (nombre de lignes) et \(C\) (nombre de colonnes).
- Masque de référence : Lire les \(L \times C\) éléments binaires (0 ou 1) de la matrice
ref. - Masque prédit : Lire les \(L \times C\) éléments binaires (0 ou 1) de la matrice
pred. - Intersection : Compter le nombre de positions \((i,j)\) pour lesquelles
ref[i][j] = 1etpred[i][j] = 1. - Union : Compter le nombre de positions \((i,j)\) pour lesquelles
ref[i][j] = 1oupred[i][j] = 1. - Cas dégénéré : Si l’union est égale à \(0\), définir \(\mathrm{IoU}=1{,}0\), car les deux masques sont vides.
- Calcul : Si l’union est supérieure à zéro, calculer
\[ \mathrm{IoU}= \frac{|\mathrm{Intersecao}|} {|\mathrm{Uniao}|}. \]
- Classification : Déterminer la classification qualitative en utilisant la valeur de l’IoU avant l’arrondi.
- Arrondi : Afficher l’IoU avec quatre décimales.
- 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\). |
%%writefile EP06_01.py
# Code PythonOverwriting 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.