API pour annotation
Pour annoter manuellement des images pour la détection d’objets en utilisant l’API de détection d’objets de TensorFlow, il est essentiel de comprendre que l’annotation consiste à ajouter des boîtes englobantes et des étiquettes sur les objets d’intérêt dans les images. Ces annotations seront ensuite utilisées pour entraîner un modèle de détection d’objets.
L’API de détection d’objets de TensorFlow n’offre pas directement un outil d’annotation visuelle, mais nous pouvons utiliser des outils comme LabelImg pour créer des annotations manuelles au format Pascal VOC ou COCO, qui sont compatibles avec l’API. Ensuite, nous pouvons convertir ces annotations en TFRecords pour les utiliser dans l’entraînement de modèles TensorFlow.
Voici les étapes détaillées pour réaliser ce processus, depuis l’annotation des images jusqu’à l’intégration dans TensorFlow.
1. Introduction à l’annotation pour la détection d’objets
Dans la détection d’objets, annoter manuellement des images consiste à :
- Dessiner des boîtes englobantes autour des objets d’intérêt.
- Attribuer une étiquette à chaque boîte englobante pour identifier l’objet.
Les annotations peuvent être effectuées avec des outils comme LabelImg ou RectLabel. Ces outils exportent les annotations dans des formats standards (XML pour Pascal VOC, JSON pour COCO), que nous devons ensuite convertir en TFRecords pour l’entraînement avec TensorFlow.
2. Installer et utiliser un outil d’annotation (LabelImg)
Étape 1 : Installer LabelImg
LabelImg est un outil open-source permettant de dessiner des boîtes englobantes et d’exporter les annotations au format Pascal VOC ou COCO. Il est compatible avec Windows, macOS et Linux.
Installation via pip :
Ou, tu peux cloner le dépôt et l’installer manuellement :
Étape 2 : Annoter les images avec LabelImg
-
Ouvre LabelImg :
-
Charger une image : Ouvre une image sur laquelle tu souhaites annoter des objets.
-
Dessiner des boîtes englobantes :
- Clique sur “Create RectBox” (ou appuie sur
w
). - Dessine une boîte autour de l’objet que tu veux détecter.
- Attribue une étiquette à cet objet (par exemple, “cat”, “dog”, etc.).
- Clique sur “Create RectBox” (ou appuie sur
-
Enregistrer l’annotation :
- Enregistre les annotations sous forme de fichiers Pascal VOC (
.xml
) ou COCO (.json
).
- Enregistre les annotations sous forme de fichiers Pascal VOC (
-
Répète ce processus pour toutes les images que tu souhaites annoter.
3. Convertir les annotations en TFRecord
Une fois les images annotées, il faut convertir les fichiers XML (Pascal VOC) ou JSON (COCO) en un format que TensorFlow peut comprendre, c’est-à-dire en TFRecord.
Étape 3 : Convertir les annotations au format TFRecord
Voici les étapes pour convertir des annotations VOC ou COCO en TFRecord. TensorFlow Object Detection API fournit des scripts pour cela.
Pré-requis : Organisation des données
Ton répertoire d’images et d’annotations doit être structuré de la manière suivante :
Utiliser les scripts de conversion :
-
Télécharge l’API de détection d’objets de TensorFlow (si ce n’est pas encore fait) :
-
Script de conversion Pascal VOC vers TFRecord :
Un script est fourni pour convertir des annotations VOC en TFRecord :
data_dir
: Le répertoire où se trouvent les images et les annotations.annotations_dir
: Le répertoire contenant les fichiers XML annotés.output_path
: Le chemin de sortie pour le fichier TFRecord.label_map_path
: Le fichier.pbtxt
qui associe les étiquettes (comme “cat”, “dog”) à des identifiants numériques.
-
Créer un fichier de mappage d’étiquettes (
label_map.pbtxt
) :Ce fichier mappe chaque étiquette à un entier. Voici un exemple de fichier
label_map.pbtxt
pour deux classes, “cat” et “dog” :Ce fichier est utilisé par TensorFlow pour comprendre les classes d’objets.
-
Script de conversion COCO vers TFRecord :
Si tu as annoté tes images au format COCO, un script similaire existe pour convertir ces annotations en TFRecord. Assure-toi d’avoir des annotations au format JSON (COCO) et utilise le script :
4. Utiliser les TFRecords pour entraîner un modèle de détection d’objets
Maintenant que tu as converti tes annotations en TFRecord, tu peux les utiliser pour entraîner un modèle de détection d’objets dans TensorFlow.
Étape 4 : Configuration du pipeline d’entraînement
-
Télécharger un modèle pré-entraîné (comme SSD ou Faster R-CNN) à partir du Model Zoo de TensorFlow : https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/tf2_detection_zoo.md
-
Modifier le fichier de configuration du pipeline :
- Modifie le fichier de configuration pour pointer vers tes fichiers TFRecord.
- Spécifie le fichier
label_map.pbtxt
dans la sectioninput_reader
. - Ajuste les paramètres d’entraînement comme le nombre d’époques, le taux d’apprentissage, etc.
-
Entraîner le modèle :
Lance l’entraînement avec le script suivant :
pipeline_config_path
: Le chemin vers ton fichier de configuration.model_dir
: Le répertoire où les checkpoints du modèle seront sauvegardés.
5. Visualiser les résultats
Une fois l’entraînement terminé, tu peux évaluer et visualiser les prédictions du modèle sur tes images. Utilise la même API de détection d’objets que nous avons vue précédemment pour charger ton modèle entraîné et visualiser les boîtes englobantes sur de nouvelles images.
Étape 5 : Visualisation des prédictions
Voici un rappel du code pour charger ton modèle entraîné et afficher les boîtes englobantes :
6. Conclusion
Ce processus permet d’annoter des images manuellement, de convertir les annotations au format TFRecord, et d’utiliser ces données pour entraîner un modèle de détection d’objets avec TensorFlow. Voici un résumé des étapes :
- Annoter manuellement les images avec des outils comme LabelImg.
- Convertir les annotations au format TFRecord avec les scripts fournis par TensorFlow Object Detection API.
- Configurer et entraîner un modèle