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'annotations du format XML au format tfreccord attendu par tensorflow.
- Savoir comment créer le fichier label_map.pbtxt décrivant les labels de l'apprentissage supervisé.

Type d'activité     : ⚙️ [tâche]
Durée approximative : 60 minutes 

Plan de l’activité

L’activité proposée se décompose en 3 étapes :

  1. Annoter les images avec le logiciel labelImg pour localiser et nommer les objets dans les images d’entraînement.
  2. Convertir les fichiers XML annotés au format tfrecord.
  3. Créer le fichier label_map.pbtxt.

1. Annote 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 faite dans l’EVP tf2 :

(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 : labelImg_2.png

Pour chaque image, tu dois annoter les objets à reconnaître :

2. Convertis les fichiers XML annotés au format tfrecord

Il faut d’abord créer un fichier CSV unique regroupant les données des différents 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éé le fichier label_map.pbtxt

La dernière étape consiste a créer le fichier label_map.pbtxt 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.pbtxt à créer est :

item {
  id: 1
  name: 'one'
}
item {
  id: 2
  name: 'two'
}