Skip to content

Graviti-AI/tensorbay-python-sdk

Repository files navigation

TensorBay Python SDK

Pre-commit Unit Test Documentation Status Downloads Coverage Status GitHub Slack PyPI PyPI - Python Version


IMPORTANT: TensorBay system underwent a huge refactoring, which broke the downward compatibility of OpenAPI and SDK. As a result, the SDK under version v1.6.0 does not work anymore.
Please update tensorbay SDK to v1.6.0 or a higher version.


TensorBay Python SDK is a python library to access TensorBay and manage your datasets.
It provides:

  • A pythonic way to access your TensorBay resources by TensorBay OpenAPI.
  • An easy-to-use CLI tool gas (Graviti AI service) to communicate with TensorBay.
  • A consistent dataset format to read and write your datasets.

Installation

pip3 install tensorbay

Documentation

More information can be found on the documentation site

Usage

An AccessKey is needed to communicate with TensorBay. Please visit this page to get an AccessKey first.

Authorize a client object

from tensorbay import GAS
gas = GAS("<YOUR_ACCESSKEY>")

Create a Dataset

gas.create_dataset("<DATASET_NAME>")

List Dataset names

dataset_names = gas.list_dataset_names()

Upload images to the Dataset

from tensorbay.dataset import Data, Dataset

# Organize the local dataset by the "Dataset" class before uploading.
dataset = Dataset("<DATASET_NAME>")

# TensorBay uses "segment" to separate different parts in a dataset.
segment = dataset.create_segment("<SEGMENT_NAME>")

segment.append(Data("0000001.jpg"))
segment.append(Data("0000002.jpg"))

dataset_client = gas.upload_dataset(dataset, jobs=8)

# TensorBay provides dataset version control feature, commit the uploaded data before using it.
dataset_client.commit("Initial commit")

Read images from the Dataset

from PIL import Image

dataset = Dataset("<DATASET_NAME>", gas)
segment = dataset[0]

for data in segment:
    with data.open() as fp:
        image = Image.open(fp)
        width, height = image.size
        image.show()

Delete the Dataset

gas.delete_dataset("<DATASET_NAME>")