Classifiers — Guide to Core ML Tools (original) (raw)

Classifiers#

A classifier is a special kind of Core ML model that provides a class label and class name to a probability dictionary as outputs. This topic describes the steps to produce a classifier model using the Unified Conversion API by using the ClassifierConfig class.

Preview a Classifier Model#

Open the classifier model in Xcode. For an image input classifier, Xcode displays the following in its preview:

Xcode preview

In the above Xcode preview:

Produce a Classifier Model#

The code in Getting Started, repeated below, shows how to add classification labels to your model using the ClassifierConfig class. The classifier model assumes an output corresponding to a probability distribution, and provides the convenience of automatically wrapping the output in dictionary form (class names to probability).

To produce a classifier model, follow these steps:

  1. Define the inputs and class labels:
    import coremltools as ct

Define the inputs and class labels

image_input = ct.ImageType(name="image", shape=(1, 224, 224, 3,),)
classifier_config = ct.ClassifierConfig(class_labels) 2. Convert the model using the Unified Conversion API:

Convert the model using the Unified Conversion API

model = ct.convert(
keras_model, inputs=[image_input], classifier_config=classifier_config,
)

  1. Use PIL to load and resize the image to the expected size:

Use PIL to load and resize the image to expected size

from PIL import Image
example_image = Image.open("daisy.jpg").resize((224, 224)) 2. Make a prediction using Core ML, and print out the top-1 prediction:

Make a prediction using Core ML

out_dict = model.predict({"image": example_image})

Print out top-1 prediction

print(out_dict["classLabels"])

The Vision Classifier API

All Core ML models use the Core ML framework and its APIs. However, with image input models you can also use the Vision Classifier Observation API, which provides image analysis and additional convenience features for preprocessing images.