Given an image, the goal of an image classifier is to assign it to one of a pre-determined number of labels. Deep learning methods have recently been shown to give incredible results on this challenging problem. Yet this comes at the cost of extreme sensitivity to model hyper-parameters and long training time. This means that one can spend months testing different model configurations, much too long to be worth the effort. However, the image classifier in Turi Create is designed to minimize these pains, and making it possible to easily create a high quality image classifier model.
The Kaggle Cats and Dogs Dataset provides labeled cat and dog images.1 After downloading and decompressing the dataset, navigate to the main kagglecatsanddogs folder, which contains a PetImages subfolder.
import turicreate as tc # Load images (Note: you can ignore 'Not a JPEG file' errors) data = tc.image_analysis.load_images('PetImages', with_path=True) # From the path-name, create a label column data['label'] = data['path'].apply(lambda path: 'dog' if '/Dog' in path else 'cat') # Save the data for future use data.save('cats-dogs.sframe') # Explore interactively data.explore()
The task is to predict if a picture is a cat or a dog. Let’s explore the use of the image classifier on the Cats vs. Dogs dataset.
import turicreate as tc # Load the data data = tc.SFrame('cats-dogs.sframe') # Make a train-test split train_data, test_data = data.random_split(0.8) # Create the model model = tc.image_classifier.create(train_data, target='label') # Save predictions to an SArray predictions = model.predict(test_data) # Evaluate the model and save the results into a dictionary metrics = model.evaluate(test_data) print(metrics['accuracy']) # Save the model for later use in Turi Create model.save('mymodel.model') # Export for use in Core ML model.export_coreml('MyCustomImageClassifier.mlmodel')
Here are some predictions on our own favorite cats and dogs:
new_cats_dogs['predictions'] = model.predict(new_cats_dogs)
Refer to the following chapters for:
- Advanced usage options including the use of GPUs and deployment to device.
- Technical details on how the image classifier works.
In addition, the following chapters contain more information on how to use classifiers: