BigML Bindings: 101 - Images ClassificationΒΆ

Following the schema described in the prediction workflow, document, this is the code snippet that shows the minimal workflow to create a deepnet from an images dataset and produce a single prediction.

from bigml.api import BigML
# step 0: creating a connection to the service (default credentials)
api = BigML()
# step 1: creating a source from the data in your local
# "data/images/fruits_hist.zip" file. The file contains two folders, each
# of which contains a collection of images. The folder name will be used
# as label for each image it contains.
# The source is created disabling image analysis, as we want the deepnet
# model to take care of extracting the features. If not said otherwise,
# the analysis would be enabled and features like the histogram of
# gradients would be extracted to become part of the resulting dataset.
source = api.create_source("data/images/fruits_hist.zip",
    args={"image_analysis": {"enabled": False}})
# waiting for the source to be finished. Results will be stored in `source`
# and the new ``image_id`` and ``label`` fields will be generated in the
# source
api.ok(source)
# step 3: creating a dataset from the previously created `source`
dataset = api.create_dataset(source)
# waiting for the dataset to be finished
api.ok(dataset)
# step 5: creating a deepnet
deepnet = api.create_deepnet(dataset)
# waiting for the deepnet to be finished
api.ok(deepnet)
# the new input data to predict for should contain the path to the
# new image to be used for testing
input_data = {"image_id": "data/images/f2/fruits2.png"}
# creating a single prediction: The image file is uploaded to BigML,
# a new source is created for it and its ID is used as value
# for the ``image_id`` field in the input data to generate the prediction
prediction = api.create_prediction(deepnet, input_data)

You can also predict locally using the Deepnet class in the deepnet module. A simple example of that is:

from bigml.deepnet import Deepnet
local_deepnet = Deepnet("deepnet/5968ec46983efc21b000001c")
# predicting for some input data
input_data = {"image_id": "data/images/f2/fruits2.png"}
local_deepnet.predict(input_data)