custom_vision_client

A client for the Microsoft Azure Custom Vision Service


Keywords
cognitive-services, python3
License
AML
Install
pip install custom_vision_client==0.0.8

Documentation

https://travis-ci.org/CatalystCode/py_custom_vision_client.svg?branch=master

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