Azure Custom Vision

Posté le : 25/05/2020

Partager

Exécutez plusieurs modèles simultanément avec Azure Custom Vision

Azure Custom Vision API offre une possibilité impressionnante de former votre propre classificateur en utilisant seulement plusieurs images.

 

Tensorflow est l’une des bibliothèques d’apprentissage automatique les plus populaires qui permettent de mettre en œuvre de puissantes solutions d’IA, de la formation à l’utilisation. Elle fournit des API Python et C stables. Les calculs TensorFlow sont exprimés sous forme de graphiques de flux de données.

Cependant, que se passe-t-il si nous voulons utiliser plusieurs modèles dans une seule application sans perdre en performances ? Dans cet article, vous découvrirez quelques astuces qui pourront vous être utiles dans la mise en œuvre de solutions de pointe. Allons-y !

 

Voyons tout d’abord une manière classique d’utiliser Tensorflow.

Un scénario typique d’utilisation de modèles pré-formés avec Tensorflow est le suivant :

1. Initialisez un graphique des opérations pour télécharger un modèle formé

2. Graphique du flux du tenseur d'importation par exemple à partir d'un fichier binaire

3. Définissez la couche de sortie, le nœud d'entrée et la balise prédite

4. Initialisez une session

5. Obtenez la taille d'entrée du modèle toujours à l'intérieur du même "avec"

6. Exécutez la session obtenir la prédiction avec sa probabilité

Si vous avez déjà essayé d’utiliser plusieurs graphiques avec la même session, vous avez probablement vu plusieurs publications de stackoverflow, comme celle- ci, où l’utilisateur se demandait comment exécuter plusieurs graphiques dans une session à l’aide de l’API Tensorflow.

 

 

Dans la plupart des cas, la réponse est:

Chaque session ne peut avoir qu’un seul graphique

Le problème est que nous ne voulons pas fermer la session car si notre application fait des prédictions en temps réel, la réouverture de la session à chaque fois peut être très coûteuse du point de vue des performances générales. Cependant, si nous essayons de créer plusieurs sessions et d’exécuter Predict (), toutes les probabilités sont les mêmes.

Mais, s’il y a une volonté, il y a un moyen et dans l’article d’aujourd’hui, nous allons former deux modèles différents à l’aide d’Azure Custom Vision, les exporter vers tensorflow et les exécuter simultanément dans la même application.

Former des modèles de vision personnalisés Azure

À ce stade, il ne devrait pas y avoir de problème. Téléchargez simplement vos images, étiquetez-les et lancez la formation. Attention : avant de démarrer votre projet, assurez-vous de le rendre « exportable », c’est-à-dire sélectionnez l’option compacte.

 

Générer un modèle d'écoulement tensoriel pour chaque projet

Cette étape ne devrait pas être trop compliquée. Une fois la formation terminée (généralement quelques secondes), allez dans l’onglet Performances et cliquez sur le bouton Exporter. Dans la popin, choisissez TensorFlow et téléchargez-le, car nous allons l’utiliser dans notre application Python. Après avoir téléchargé les modèles, vous devez les renommer pour les distinguer facilement les uns des autres. Dans cette expérience, nous les appellerons simplement « premier », « deuxième » et « troisième »

 

Et voici l’astuce : nous utiliserons tf.graph_util.import_graph_def.

Selon la documentation :

name: (Facultatif.) Un préfixe qui sera ajouté aux noms dans graph_def. Notez que cela ne s’applique pas aux noms de fonction importés. La valeur par défaut est « importer ».

 

Ainsi en ajoutant ce préfixe, il est possible de distinguer différentes sessions.

Ajoutez du code

Nous définissons d’abord les paramètres du modèle : classes, fichiers .pb d’entrée, etc.

Important : comme nous avons formé nos modèles à l’aide d’Azure Custom Vision, ils ont les mêmes configurations, donc la taille d’entrée réseau est la même pour tous.

 

 

Maintenant, initialisez les graphiques et les sessions en ajoutant les préfixes correspondants:

 

 

Et maintenant prédisez (à l’intérieur de vous en boucle ou à l’intérieur de la routine « get » si vous développez sur un serveur Flask).

 

L’initialisation du graphique / session prend 3 à 5 secondes par modèle, et si vous exécutez la prédiction dans une boucle, le processus prend 200 à 300 millisecondes par modèle.

 

Ecrit par, Alibek JAKUPOV 

 

 

Contactez-nous Postuler Nos offres d'emploi