--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
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)
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
...
Amplifiez les images pour l'apprentissage automatique avec python-Qiita
Recommended Posts