diff --git a/requirements.txt b/requirements.txt index f5c2f35..3cc12f5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -12,7 +12,7 @@ azure-cognitiveservices-search-visualsearch>=0.2.0 # sample won't work with pre azure-cognitiveservices-search-websearch azure-cognitiveservices-vision-computervision>=0.3.0 # sample won't work with previous versions azure-cognitiveservices-vision-contentmoderator>=1.0.0 # sample won't work with previous versions -azure-cognitiveservices-vision-customvision>=0.4.0 # sample won't work with previous versions +azure-cognitiveservices-vision-customvision>=2.0.0 # sample won't work with previous versions azure-cognitiveservices-vision-face azure-cognitiveservices-anomalydetector>=0.2.0 # sample won't work with previous versions azure-cognitiveservices-inkrecognizer>=1.0.0b1 diff --git a/samples/vision/custom_vision_object_detection_sample.py b/samples/vision/custom_vision_object_detection_sample.py index d5b832b..cb3ca93 100644 --- a/samples/vision/custom_vision_object_detection_sample.py +++ b/samples/vision/custom_vision_object_detection_sample.py @@ -5,6 +5,7 @@ from azure.cognitiveservices.vision.customvision.training import training_api from azure.cognitiveservices.vision.customvision.training.models import ImageFileCreateEntry, Region from azure.cognitiveservices.vision.customvision.prediction import CustomVisionPredictionClient +from msrest.authentication import ApiKeyCredentials sys.path.append(os.path.abspath(os.path.join(__file__, "..", "..", ".."))) @@ -41,7 +42,8 @@ def train_project(training_key): except KeyError: raise PredictionResourceMissingError("Didn't find a prediction resource to publish to. Please set the {} environment variable".format(PREDICTION_RESOURCE_ID_KEY_ENV_NAME)) - trainer = CustomVisionTrainingClient(training_key, endpoint=ENDPOINT) + credentials = ApiKeyCredentials(in_headers={"Training-key": training_key}) + trainer = CustomVisionTrainingClient(ENDPOINT, credentials) # Find the object detection domain @@ -139,15 +141,12 @@ def train_project(training_key): trainer.publish_iteration(project.id, iteration.id, PUBLISH_ITERATION_NAME, prediction_resource_id) print ("Done!") - # The iteration is now trained. Make it the default project endpoint - trainer.update_iteration(project.id, iteration.id, is_default=True) - print("Done!") - return project, iteration def predict_project(prediction_key, project, iteration): - predictor = CustomVisionPredictionClient(prediction_key, endpoint=ENDPOINT) + credentials = ApiKeyCredentials(in_headers={"Prediction-key": prediction_key}) + predictor = CustomVisionPredictionClient(ENDPOINT, credentials) # Open the sample image and get back the prediction results. with open(os.path.join(IMAGES_FOLDER, "Test", "test_od_image.jpg"), mode="rb") as test_data: diff --git a/samples/vision/custom_vision_prediction_samples.py b/samples/vision/custom_vision_prediction_samples.py index 3a04eed..a09140f 100644 --- a/samples/vision/custom_vision_prediction_samples.py +++ b/samples/vision/custom_vision_prediction_samples.py @@ -3,6 +3,7 @@ from azure.cognitiveservices.vision.customvision.training import CustomVisionTrainingClient from azure.cognitiveservices.vision.customvision.prediction import CustomVisionPredictionClient +from msrest.authentication import ApiKeyCredentials TRAINING_KEY_ENV_NAME = "CUSTOMVISION_TRAINING_KEY" SUBSCRIPTION_KEY_ENV_NAME = "CUSTOMVISION_PREDICTION_KEY" @@ -26,7 +27,8 @@ def find_or_train_project(): # Use the training API to find the SDK sample project created from the training example. from custom_vision_training_samples import train_project, SAMPLE_PROJECT_NAME - trainer = CustomVisionTrainingClient(training_key, endpoint=ENDPOINT) + credentials = ApiKeyCredentials(in_headers={"Training-key": training_key}) + trainer = CustomVisionTrainingClient(ENDPOINT, credentials) for proj in trainer.get_projects(): if (proj.name == SAMPLE_PROJECT_NAME): @@ -37,8 +39,8 @@ def find_or_train_project(): def predict_project(subscription_key): - predictor = CustomVisionPredictionClient( - subscription_key, endpoint=ENDPOINT) + credentials = ApiKeyCredentials(in_headers={"Prediction-key": subscription_key}) + predictor = CustomVisionPredictionClient(ENDPOINT, credentials) # Find or train a new project to use for prediction. project = find_or_train_project() diff --git a/samples/vision/custom_vision_training_multiclass_samples.py b/samples/vision/custom_vision_training_multiclass_samples.py index 51380eb..63d8cd1 100644 --- a/samples/vision/custom_vision_training_multiclass_samples.py +++ b/samples/vision/custom_vision_training_multiclass_samples.py @@ -3,24 +3,19 @@ from azure.cognitiveservices.vision.customvision.training import CustomVisionTrainingClient from azure.cognitiveservices.vision.customvision.training.models import Classifier +from msrest.authentication import ApiKeyCredentials SUBSCRIPTION_KEY_ENV_NAME = "CUSTOMVISION_TRAINING_KEY" -PREDICTION_RESOURCE_ID_KEY_ENV_NAME = "CUSTOMVISION_PREDICTION_ID" - SAMPLE_PROJECT_NAME = "Python SDK Sample" # The prediction resource can be found with your keys and is tied to the Prediction Key -PREDICTION_RESOURCE_ID = "enter your prediction resource" +PREDICTION_RESOURCE_ID_KEY_ENV_NAME = "CUSTOMVISION_PREDICTION_ID" PUBLISH_ITERATION_NAME = "classifyModel" ENDPOINT = "https://southcentralus.api.cognitive.microsoft.com" -IMAGES_FOLDER = os.path.join(os.path.dirname( - os.path.realpath(__file__)), "images") - -class PredictionResourceMissingError(Exception): - pass +IMAGES_FOLDER = os.path.join(os.path.dirname(os.path.realpath(__file__)), "images") def train_project(subscription_key): try: @@ -28,49 +23,44 @@ def train_project(subscription_key): except KeyError: raise PredictionResourceMissingError("Didn't find a prediction resource to publish to. Please set the {} environment variable".format(PREDICTION_RESOURCE_ID_KEY_ENV_NAME)) - trainer = CustomVisionTrainingClient(subscription_key, endpoint=ENDPOINT) + credentials = ApiKeyCredentials(in_headers={"Training-key": subscription_key}) + trainer = CustomVisionTrainingClient(ENDPOINT, credentials) # Create a new project - print("Creating project...") - project = trainer.create_project( - SAMPLE_PROJECT_NAME, classification_type=Classifier.multiclass) + print ("Creating project...") + project = trainer.create_project(SAMPLE_PROJECT_NAME, classification_type=Classifier.multiclass) # Make two tags in the new project hemlock_tag = trainer.create_tag(project.id, "Hemlock") cherry_tag = trainer.create_tag(project.id, "Japanese Cherry") - pine_needle_tag = trainer.create_tag(project.id, "Pine Needle Leaves") + pine_needle_tag = trainer.create_tag(project.id, "Pine Needle Leaves") flat_leaf_tag = trainer.create_tag(project.id, "Flat Leaves") - print("Adding images...") + print ("Adding images...") hemlock_dir = os.path.join(IMAGES_FOLDER, "Hemlock") for image in os.listdir(hemlock_dir): - with open(os.path.join(hemlock_dir, image), mode="rb") as img_data: - trainer.create_images_from_data(project.id, img_data.read(), [ - hemlock_tag.id, pine_needle_tag.id]) + with open(os.path.join(hemlock_dir, image), mode="rb") as img_data: + trainer.create_images_from_data(project.id, img_data.read(), [ hemlock_tag.id, pine_needle_tag.id ]) cherry_dir = os.path.join(IMAGES_FOLDER, "Japanese Cherry") for image in os.listdir(cherry_dir): - with open(os.path.join(cherry_dir, image), mode="rb") as img_data: - trainer.create_images_from_data(project.id, img_data.read(), [ - cherry_tag.id, flat_leaf_tag.id]) + with open(os.path.join(cherry_dir, image), mode="rb") as img_data: + trainer.create_images_from_data(project.id, img_data.read(), [ cherry_tag.id, flat_leaf_tag.id ]) - print("Training...") + print ("Training...") iteration = trainer.train_project(project.id) while (iteration.status == "Training"): iteration = trainer.get_iteration(project.id, iteration.id) - print("Training status: " + iteration.status) + print ("Training status: " + iteration.status) time.sleep(1) # The iteration is now trained. Name and publish this iteration to a prediciton endpoint trainer.publish_iteration(project.id, iteration.id, PUBLISH_ITERATION_NAME, prediction_resource_id) print ("Done!") - return project - if __name__ == "__main__": - import sys - import os.path + import sys, os.path sys.path.append(os.path.abspath(os.path.join(__file__, "..", ".."))) from tools import execute_samples - execute_samples(globals(), SUBSCRIPTION_KEY_ENV_NAME) + execute_samples(globals(), SUBSCRIPTION_KEY_ENV_NAME) \ No newline at end of file diff --git a/samples/vision/custom_vision_training_samples.py b/samples/vision/custom_vision_training_samples.py index d8736f7..9976dbc 100644 --- a/samples/vision/custom_vision_training_samples.py +++ b/samples/vision/custom_vision_training_samples.py @@ -2,6 +2,7 @@ import time from azure.cognitiveservices.vision.customvision.training import CustomVisionTrainingClient +from msrest.authentication import ApiKeyCredentials SUBSCRIPTION_KEY_ENV_NAME = "CUSTOMVISION_TRAINING_KEY" PREDICTION_RESOURCE_ID_KEY_ENV_NAME = "CUSTOMVISION_PREDICTION_ID" @@ -25,7 +26,8 @@ def train_project(subscription_key): except KeyError: raise PredictionResourceMissingError("Didn't find a prediction resource to publish to. Please set the {} environment variable".format(PREDICTION_RESOURCE_ID_KEY_ENV_NAME)) - trainer = CustomVisionTrainingClient(subscription_key, endpoint=ENDPOINT) + credentials = ApiKeyCredentials(in_headers={"Training-key": subscription_key}) + trainer = CustomVisionTrainingClient(ENDPOINT, credentials) # Create a new project print("Creating project...")