Annoter des images pour l'entraînement supervisé
Acquis d'apprentissage visés :
- Savoir utiliser le logiciel labelImg pour localiser et nommer les objets dans des images.
- Savoir convertir les fichier d'annotation du format XML au format tfreccord attendu par tensorflow.
- Savoir créer le fichier label_map.txt décrivant les labels de l'apprentissage supervisé.
Durée approximative : 60 minutes
Plan de l’activité
L’activité proposée se décompose en 3 étapes :
- Annoter les images avec le logiciel labelImg pour localiser et nommer les objets dans les images d’entraînement.
- Convertir les fichiers XML annotés au format tfrecord.
- Créer le fichier
label_map.txt
.
1. Annoter les images avec le logiciel labelImg
L’annotation des images peut être faite avec le logiciel labelImg
.
C’est une étape du travail qui prend du temps et qui peut être réalisée si besoin à plusieurs en se répartissant les images à annoter…
Le lancement de labelImg
se fait avec l’EVP tf2
activé :
(tf2) user@host:~ $ labelImg
Utilise les boutons [Open Dir] et [Change Save Dir] pour positionner la lecture ET l’écriture des fichiers dans le dossier
<project>/images/train/
.
La première image est automatiquement chargée dans l’interface graphique :
Pour chaque image, tu dois annoter les objets à reconnaître :
-
avec le bouton [Create RectBox], tu entoures une face d’un cube,
-
la boîte des labels s’ouvre alors et tu dois écrire le label
one
outwo
en fonction de la face entourée
⚠️ Il est très important de mettre des labels alphabétiques et pas numériques : par exemple mettre la chaîneun
ouone
mais pas le nombre1
! -
itère le processus pour chacune des faces de cubes présente dans l’image…
première face deuxième face …fin -
quand c’est fini, tu cliques sur le bouton [Save] et tu passes à l’image suivante avec le bouton [Next Image].
-
Une fois toutes les images annotées, utilise les boutons [Open Dir] et [Change Save Dir] pour annoter de la même façon les images de test du dossier
<project>/images/test/
.
2. Convertir les fichiers d’annotation XML au format tfrecord
Il faut d’abord créer un fichier CSV unique regroupant les données des fichiers XML crées par l’annotation.
Le programme xml_to_csv_tt.py
permet de créer les deux fichiers train_labels.csv
et test_labels.csv
dans le dossier <project>/images/
.
Depuis le dossier tod_tf2
tape :
# From within tod_tf2
(tf2) user@host:~ $ python xml_to_csv_tt.py -p faces_cubes
Successfully converted xml data in file <faces_cubes/images/train_labels.csv>
Successfully converted xml data in file <faces_cubes/images/test_labels.csv>
Il ne reste plus qu’à utiliser le programme generate_tfrecord_tt.py
pour créer les 2 fichiers train.record
et test.record
dans le dossier faces_cubes/training
.
Depuis le dossier tod_tf2
tape la commande :
# From within tod_tf2
(tf2) user@host:~ $ python generate_tfrecord_tt.py --project faces_cubes
Successfully created the TFRecord file: <faces_cubes/training/train.record>
Successfully created the TFRecord file: <faces_cubes/training/test.record>
3. Créer le fichier label_map.txt
La dernière étape consiste a créer le fichier label_map.txt
dans le dossier <project>/training/
.
Ce fichier décrit la « carte des labels » (label map) nécessaire à l’entraînement du réseau. Cette carte permet de connaître l’ID (nombre entier) associé à chaque étiquette (label) identifiant les objets à reconnaître. La structure type du fichier est la suivante :
item {
id: 1
name: 'objet_1'
}
item {
id: 2
name: 'objet_2'
}
...
Exemple
Pour le projet face_cubes
, le contenu du fichier faces_cubes/training/label_map.txt
à créer est :
item {
id: 1
name: 'one'
}
item {
id: 2
name: 'two'
}