py_custom_vision_client
This repository contains a simple Python client for the Custom Vision Service.
Usage
# first, train a model
from custom_vision_client import TrainingClient, TrainingConfig
azure_region = "southcentralus"
training_key = "my-training-key" # from settings pane on customvision.ai
training_client = TrainingClient(TrainingConfig(azure_region, training_key))
project_id = training_client.create_project("my-project-name").Id
training_client.create_tag(project_id, "Cat")
training_client.create_tag(project_id, "Dog")
training_client.add_training_images(project_id, ["kitten.jpg"], "Cat")
training_client.add_training_images(project_id, ["akita.png", "spitz.png"], "Dog")
training_client.add_training_images(project_id, ["best-animal-pals.jpg"], "Cat", "Dog")
model_id = training_client.trigger_training(project_id).Id
# then, use the model to predict:
from custom_vision_client import PredictionClient, PredictionConfig
azure_region = "southcentralus"
prediction_key = "my-prediction-key" # from settings pane on customvision.ai
prediction_client = PredictionClient(PredictionConfig(azure_region, project_id, prediction_key))
predictions = prediction_client.classify_image("cat.jpg", model_id) # could also be a url to a file
best_prediction = max(predictions, key=lambda _: _.Probability)
print(best_prediction.Tag)
Command-line interface
You can also interact with the Custom Vision Service via a command-line interface:
# first, train a model
python3 -m custom_vision_client.training \
--key="my-training-key" \
--projectname="my-project-name" \
--imagesroot="/path/to/images"
# then, use the model to predict:
python3 -m custom_vision_client.prediction \
--key="my-prediction-key" \
--projectid="my-project-id-from-training" \
--modelid="my-model-id-from-training" \
--image="path-or-url-to-image"
The command-line interface assumes that your training images are organized in folders such that every folder contains all the training images for that label:
/path/to/images
├── label_one
│ ├── image_1.jpg
│ ├── image_2.png
│ └── image_3.png
└── label_two
├── image_4.jpg
└── image_5.jpg