On the Segments.ai web platform you can create datasets, upload samples, create releases and download labels. All of these - and more - can also be done programmatically with the Python SDK.
This tutorial walks you through the most common Python SDK functions. The complete list of functions is documented in detail in the Python SDK reference.
First install the Segments.ai Python SDK using pip:
pip install --upgrade segments-ai
Import the necessary packages, and initialize the Segments client using your API key:
from segments import SegmentsClient
import json
# You can find your api key at https://segments.ai/account
api_key = "YOUR_API_KEY_HERE"
client = SegmentsClient(api_key)
Create a new dataset
Let's create a new image segmentation dataset programmatically using client.add_dataset(). Note that this dataset will be created under the user account corresponding to the API key.
The format of the task_attributes field is documented here.
name = "pets"
description = "A dataset with images of cats and dogs."
task_type = "segmentation-bitmap"
task_attributes = {
"format_version": "0.1",
"categories": [
{
"name": "cat",
"id": 1
},
{
"name": "dog",
"id": 2
},
{
"name": "other",
"id": 3
}
]
}
dataset = client.add_dataset(name, description, task_type, task_attributes)
print(dataset)
dataset_identifier = 'jane/pets' # a dataset is always referred to as user/dataset.
images = [
{
'name': 'Bombay_220.jpg',
'url': 'https://segmentsai-prod.s3.eu-west-2.amazonaws.com/assets/jane/a13358ef-a1ae-443c-8ea1-5f61dd9cdc26.jpg'
},
{
'name': 'shiba_inu_178.jpg',
'url': 'https://segmentsai-prod.s3.eu-west-2.amazonaws.com/assets/jane/4f47973f-5568-47f1-8a7d-44bfeb6f0f76.jpg'
},
{
'name': 'havanese_196.jpg',
'url': 'https://segmentsai-prod.s3.eu-west-2.amazonaws.com/assets/jane/2a6b3cd9-0688-422b-b555-8730d0813e1b.jpg'
}
]
for image in images:
name = image['name']
attributes = {
'image': {
'url': image['url']
}
}
sample = client.add_sample(dataset_identifier, name, attributes)
print(sample)
If the image file is on your local computer, you should first upload it to our asset storage service (using upload_asset()) or to another cloud storage service.
We can verify that the dataset now contains 3 images using client.get_samples().
Optional: visualize the instance and semantic labels
When working with image segmentation datasets, you'll probably want to visualize the image and label at this point. The segments.utils module offers some helper functions for that:
The Python SDK offers many more functions besides the ones that were shown here. Have a look at the reference for the full list.
The Python SDK can also be used to upload labels into Segments.ai. This is particularly useful for setting up model-assisted labeling workflows, where you verify and correct model predictions instead of labeling from scratch.