Partager via


Former un modèle de détection d’objets avec TensorFlow

Maintenant que nous avons configuré TensorFlow, nous allons utiliser l’architecture YOLO pour former le modèle de détection d’objets. YOLO est un réseau neuronal qui prédit, en une seule évaluation, les zones englobantes et les probabilités de classe à partir d’une image. Les modèles YOLO peuvent traiter plus de 60 images par seconde, ce qui en fait une bonne architecture pour la détection des objets dans les vidéos. Vous trouverez plus d’informations sur le fonctionnement de YOLO ici.

Utilisation de YOLO

Tout d’abord, téléchargez cet exemple de fichier YOLO, qui contient des scripts d’assistance pour commencer.

Lors de l’utilisation de YOLO, nous avons 3 options :

  1. Utiliser des pondérations de modèle pré-formées pour YOLO. Le modèle pré-formé a été formé sur un jeu de données volumineux avec 80 classes (catégories) pour les objets quotidiens tels que bus, individu, sandwich, etc. Si vous souhaitez télécharger un modèle YOLO pré-formé au format ONNX, vous pouvez le faire ici. Ensuite, vous pouvez passer à la dernière étape de ce tutoriel pour apprendre à intégrer ce modèle dans une application.

  2. Implémentez la formation par transfert avec un jeu de données personnalisé. La formation par transfert est une méthode permettant d'utiliser un modèle formé comme point de départ pour former un modèle résolvant une tâche différente mais connexe. Ce didacticiel utilise les pondérations YOLO préformées avec 80 classes pour effectuer la formation d’un modèle avec 20 classes et le jeu de données COV. Si vous souhaitez créer votre propre jeu de données avec des classes personnalisées, consultez les instructions ici.

  3. Formez YOLO à partir de zéro. Cette technique n’est pas recommandée, car elle est très difficile à converger. L'article original de YOLO a formé darknet sur imagenet (contenant des centaines de milliers de photos) avant de former également l’ensemble du réseau.

Implémentez la formation par transfert sur les pondérations YOLO préformés vers le jeu de données VOC :

Poursuivons avec la deuxième option et implémentons la formation par transfert avec les étapes suivantes.

  1. Dans une fenêtre miniconda, accédez au répertoire d’exemples YOLO et exécutez la commande suivante pour installer tous les packages PIP requis pour YOLO.

pip install -r requirements.txt

  1. Exécuter le script d’installation pour télécharger les données et les pondérations préformées

python setup.py

  1. Transformez le jeu de données. Consultez tools/voc2012.py pour l’implémentation : ce format est basé sur l’API de détection d’objets tensorflow. De nombreux champs ne sont pas obligatoires, mais ont été remplis pour des raisons de compatibilité avec l’API officielle.
python tools/voc2012.py \
  --data_dir './data/voc2012_raw/VOCdevkit/VOC2012' \
  --split train \
  --output_file ./data/voc2012_train.tfrecord

python tools/voc2012.py \
  --data_dir './data/voc2012_raw/VOCdevkit/VOC2012' \
  --split val \
  --output_file ./data/voc2012_val.tfrecord
  1. Entraîner le modèle. Exécutez les commandes suivantes :
python convert.py
python detect.py --image ./data/meme.jpg # Sanity check

python train.py \
	--dataset ./data/voc2012_train.tfrecord \
	--val_dataset ./data/voc2012_val.tfrecord \
	--classes ./data/voc2012.names \
	--num_classes 20 \
	--mode fit --transfer darknet \
	--batch_size 16 \
	--epochs 10 \
	--weights ./checkpoints/yolov3.tf \
	--weights_num_classes 80 

Vous disposez maintenant d’un modèle reformé avec 20 classes, prêt à être utilisé.

Étapes suivantes

À présent que nous avons créé un modèle TensorFlow, nous devons le convertir au format ONNX pour l’utiliser avec les API Windows Machine Learning.