Code Python pour former et tester avec Custom Vision of Cognitive Service

supposition

--Créer une ressource de service de vision personnalisée Cognitive Service dans Azure et créer un projet --Définissez le type de projet sur Classification --Préparez 5 images ou plus pour l'apprentissage par tag, et créez et stockez un dossier pour chaque tag. --Préparez une image séparée pour tester le modèle

Téléchargement d'images d'apprentissage et exécution de l'apprentissage

train.py


import os, glob, time
from PIL import Image

from azure.cognitiveservices.vision.customvision.training import CustomVisionTrainingClient
from azure.cognitiveservices.vision.customvision.training.models import ImageFileCreateEntry

#Définissez à l'avance les informations suivantes dans les variables d'environnement
# export CUSTOMVISION_ENDPOINT=<your API endpoint>
# export CUSTOMVISION_TRAINING_KEY=<your training key>
# export CUSTOMVISION_PROJECT_ID=<your project id>

project_id = os.environ['CUSTOMVISION_PROJECT_ID']

trainer = CustomVisionTrainingClient(os.environ['CUSTOMVISION_TRAINING_KEY'], endpoint=os.environ['CUSTOMVISION_ENDPOINT'])

#Créer une liste de balises
tag_list = []
tag_list.append(trainer.create_tag(project_id, "tagA"))
tag_list.append(trainer.create_tag(project_id, "tagB"))
tag_list.append(trainer.create_tag(project_id, "tagC"))

#Spécifiez le chemin de l'image correspondant à la balise
path_list = []
path_list.append('train-images/train/tagA/*.JPG')
path_list.append('train-images/train/tagB/*.JPG')
path_list.append('train-images/train/tagC/*.JPG')

#Créez une liste d'images à télécharger
image_list = []

for i, tag in enumerate(tag_list):
    for file_path in glob.glob(path_list[i]):
        with open(file_path, "rb") as image_contents:
            image_list.append(ImageFileCreateEntry(name=os.path.basename(file_path), contents=image_contents.read(), tag_ids=[tag.id]))

#Téléchargez jusqu'à 64 éléments de taille maximale
for i in range(0, len(image_list), 64):
    print('uploading', i, '-', i+64, '/', len(image_list))
    upload_result = trainer.create_images_from_files(project_id, images=image_list[i:i+64])

    if not upload_result.is_batch_successful:
        print("Image batch upload failed.")
        for image in upload_result.images:
            print("Image status: ", image.status)
        exit(-1)

#Exécution de la formation
print ("Training...")
iteration = trainer.train_project(project_id)
while (iteration.status != "Completed"):
    iteration = trainer.get_iteration(project_id, iteration.id)
    print ("Training status: " + iteration.status)
    time.sleep(5)

Tester le modèle créé avec une image de test

quickTest.py


import os, glob
from PIL import Image

from azure.cognitiveservices.vision.customvision.training import CustomVisionTrainingClient
from azure.cognitiveservices.vision.customvision.training.models import ImageFileCreateEntry

def probability(prediction):
   return prediction.probability

#Définissez à l'avance les informations suivantes dans les variables d'environnement
# export CUSTOMVISION_ENDPOINT=<your API endpoint>
# export CUSTOMVISION_TRAINING_KEY=<your training key>
# export CUSTOMVISION_PROJECT_ID=<your project id>

project_id = os.environ['CUSTOMVISION_PROJECT_ID']

trainer = CustomVisionTrainingClient(os.environ['CUSTOMVISION_TRAINING_KEY'], endpoint=os.environ['CUSTOMVISION_ENDPOINT'])

#Spécifier l'itération à tester
iterations = trainer.get_iterations(project_id)
target_iteration = iterations[0]

print('target iteration:', target_iteration.name)

#Spécifiez le fichier à utiliser dans le test
files = glob.glob('train-images/test/**/*.JPG', recursive=True)

for i, file in enumerate(files):
    image = open(file, 'rb').read()
    result = trainer.quick_test_image(project_id, image, iteration_id=target_iteration.id)

    max_prediction = max(result.predictions, key=probability)

    print(file, max_prediction.tag_name, max_prediction.probability)

Image de sortie

target iteration: Iteration 1
train-images/test/tagA/IMG_001.JPG tagA 0.9999913
train-images/test/tagA/IMG_002.JPG tagA 0.9999975
train-images/test/tagB/IMG_003.JPG tagB 0.9999996
...

Relation

Amplifiez les images pour l'apprentissage automatique avec python-Qiita

Recommended Posts

Code Python pour former et tester avec Custom Vision of Cognitive Service
[Azure] Hit Custom Vision Service avec Python
Liste de code Python à déplacer et à mémoriser
Coexistence de Python2 et 3 avec CircleCI (1.0)
Faites fonctionner Jupyter avec l'API REST pour extraire et enregistrer le code Python
Comment créer un environnement d'exécution Python et Jupyter avec VSCode
Installation du code Visual Studio et installation de python
Fractal pour faire et jouer avec Python
Comment faire un test de sac avec python
Test E2E pour sélectionner la boîte de sélection avec CasperJS, Nightmare et Python + WebDriver + PhantomJS
J'ai essayé d'obtenir le code d'authentification de l'API Qiita avec Python.
Étapes pour télécharger en bloc les photos du service photo de l'école Egao avec la base Python
Grattage de la nourriture avec python et sortie en CSV
MessagePack-Try pour lier Java et Python avec RPC
Script pour tweeter avec des multiples de 3 et des nombres avec 3 !!
Comment spécifier des attributs avec Mock of Python
Comment utiliser OAuth et API de compte de service avec le client API Google pour python
Implémentation de l'arbre TRIE avec Python et LOUDS
Liens et mémos de chaînes de code de caractères Python
(Journal 1) Comment créer, parcourir et enregistrer des données dans la base de données SQL du service Microsoft Azure avec python
Convertir le code de caractère du fichier avec Python3
Analyse statique du code Python avec GitLab CI
Poursuite du développement multi-plateforme avec Electron et Python
[Blender x Python] Pensez au code avec des symboles
Exemple de lecture et d'écriture de CSV avec Python
Extraire des images et des tableaux de pdf avec python pour réduire la charge de reporting
J'ai essayé d'automatiser la mise à jour de l'article du blog Livedoor avec Python et sélénium.
J'ai essayé de comparer la vitesse de traitement avec dplyr de R et pandas de Python
Le mur lors du passage du service Django de Python 2.7 à la série Python 3
Procédure pour charger MNIST avec python et sortie en png
Python Ver. Présentation de WebPay avec un peu de code
Je veux gérer l'optimisation avec python et cplex
Changer les paramètres IP en ACL de conoha avec python
Téléchargez facilement et partiellement mp4 avec python et youtube-dl!
Essayez le fonctionnement de la base de données avec Python et visualisez avec d3
[Chapitre 5] Introduction à Python avec 100 coups de traitement du langage
Visualisez la gamme d'insertions internes et externes avec python
Une comparaison rapide des bibliothèques de test Python et node.js
[Chapitre 3] Introduction à Python avec 100 coups de traitement du langage
[Chapitre 2] Introduction à Python avec 100 coups de traitement du langage
Écrire du code dans UnitTest une application Web Python
Comparaison de CoffeeScript avec la grammaire JavaScript, Python et Ruby
Gestion des versions de Node, Ruby et Python avec anyenv
[Chapitre 4] Introduction à Python avec 100 coups de traitement du langage
Jugement des nombres premiers avec Python
Renforcez avec le test de code ⑦
Renforcez avec le test de code ⑨
Réécrire le code Python2 en Python3 (2to3)
Renforcez avec le test de code ⑤
Renforcez avec le test de code ④
Jugement des nombres premiers avec python
Renforcez avec le test de code ②
Renforcez avec le test de code ①
Renforcez avec le test de code ⑧
Renforcez avec le test de code ⑨
Comment analyser le code source Java avec AST (Abstract Syntax Tree) en utilisant ANTLR et Python
Renvoyez les données d'image avec Flask of Python et dessinez-les dans l'élément canvas de HTML
Vérifions et formons statiquement le code du test automatique E2E écrit en Python [VS Code]
AtCoder JSC2019 Qual B à résoudre par Ruby et Python