Python SDK

Superb AI Suite SDK Sample

다음 항목에 대한 SDK Sample을 Github에서 제공하고 있습니다.
  • Image Basic : 이미지 프로젝트를 위한 기본 SDK Examples
  • Polygon to Bitmask : Export된 폴리곤 세그멘테이션 결과물을 Bitmask로 변환
  • Suite-Pachyderm Integration : Suite와 Pachyderm Import / Export SDK Examples

초기 설정

가장 먼저, 아래에 있는 가이드를 따라서 CLI-SDK 패키지를 설치/설정할 수 있습니다.

Suite SDK 설정하기

설치 및 설정 과정이 완료되면, 아래와 같이 Python SDK를 사용할 수 있습니다.
1
import spb.sdk
2
3
4
# Print Suite SDK version
5
print(spb.sdk.__version__)
Copied!

SDK Client를 사용하여 프로젝트에 접근하기

Project List 불러오기

1
client = spb.sdk.Client()
2
3
total_project_count, projects = client.get_projects(page=1, page_size=10)
4
for project in projects:
5
print('Project Name: {}'.format(project.name))
Copied!

특정 Project 접근하기

1
# Set Project using set_project
2
project = client.get_project('<Your Project Name>')
3
client.set_project(project)
4
5
# Print project information
6
print('Project Name: {}'.format(client.get_project_name()))
7
print('Total number of data: {}'.format(client.get_num_data()))
Copied!

스위트에 이미지 업로드하기

로컬 이미지 업로드하기

1
image_path = '<Local Path to Your Image>'
2
dataset = '<Your Dataset Name>'
3
4
client.upload_image(image_path, dataset)
5
6
# The uploaded image can be seen at the Suite Web UI
Copied!

AWS S3 버킷에서 이미지 업로드하기

S3 버킷에 접근하려면 AWS 이 필요합니다.
1
bucket = '<Your S3 Bucket Name>'
2
image_path = '<Path to your Image in the Bucket>'
3
dataset = '<Your Dataset Name>'
4
5
client.upload_image_s3(bucket, image_path, dataset)
6
7
# The uploaded image can be seen at the Suite Web UI
Copied!

Suite에서 원본 데이터에 접근하기

Suite에서 원본 데이터 가져오기

1
# Generate iterator from selected project
2
data_iter = client.get_data_page(page_idx='<Index of pages>', page_size='<Number of data in page>')
3
data = next(data_iter)
4
5
# Print data information
6
print('Key: {}'.format(data.get_key()))
7
print('Dataset: {}'.format(data.get_dataset_name()))
8
print('Image URL: {}'.format(data.get_image_url()))
9
print('Status: {}'.format(data.get_status()))
Copied!

데이터 열에 해당하는 이미지 파일 읽기

1
image = data.get_numpy_image()
2
3
# Print image information
4
print('Image type: {}'.format(image.__class__))
5
print('Image dtype: {}'.format(image.dtype))
6
print('Image shape: {}'.format(image.shape))
7
8
# Plot the image
9
import matplotlib.pyplot as plt
10
plt.imshow(image)
Copied!

로컬 스토리지에 이미지 파일 다운로드 하기

1
download_path, result = data.download_image(download_to='./test.jpg')
2
3
# Print the HTTP response
4
print(result)
5
6
# Plot the downloaded image
7
import PIL.Image
8
image = PIL.Image.open(download_path)
9
plt.imshow(image)
Copied!

필터를 사용하여 원본 데이터에 접근하기

데이터셋 필터링

1
dataset = 'MSCOCO_dataset_a'
2
3
# Total number of data in your dataset
4
num_data = client.get_num_data(dataset=dataset)
5
print('Size of "{}" dataset: {}'.format(dataset, num_data))
6
7
# Get data iterator in the dataset
8
data_iter = client.get_data_page(page_idx='<Index of pages>', page_size='<Number of data in page>', dataset=dataset)
9
data = next(data_iter)
Copied!

라벨 태그 필터링

1
tags = ['<Label Tag 1>', '<Label Tag 2>', ...]
2
3
# Number of data containing all the tags
4
num_data = client.get_num_data(tags=tags)
5
print('Number of data containing tags {}: {}'.format(tags, num_data))
6
7
# Get data iterator in the filtered list of data
8
data_iter = client.get_data_page(page_idx='<Index of pages>', page_size='<Number of data in page>', tags=tags)
9
data = next(data_iter)
10
11
# Print tags of the data
12
print('Tags: {}'.format(data.get_tags()))
Copied!

Suite에서 라벨 관리하기

각 데이터 열에 대한 라벨 정보 가져오기

1
category_labels = data.get_category_labels()
2
object_labels = data.get_object_labels()
3
4
# Print labels
5
print('category_labels', category_labels)
6
print('object_labels', object_labels)
7
# Example output:
8
# category_labels ['bugatti']
9
# object_labels [
10
# {'id': 1, 'class': 'bugatti',
11
# 'shape': {'box': {'x': 83, 'y': 52, 'width': 819, 'height': 457}},
12
# 'properties': []},
13
# {'id': 2, 'class': ...},
14
# {'id': 3, 'class': ...},
15
# ...
16
# ]
Copied!

가져온 라벨 정보 수정하기

1
category_labels = ['teslaroadster']
2
object_labels[0]['class'] = 'teslaroadster'
3
4
# Print labels
5
print('category_labels', category_labels)
6
print('object_labels', object_labels)
7
# Example output:
8
# category_labels ['teslaroadster']
9
# object_labels [
10
# {'id': 1, 'class': 'teslaroadster',
11
# 'shape': {'box': {'x': 83, 'y': 52, 'width': 819, 'height': 457}},
12
# 'properties': []},
13
# {'id': 2, 'class': ...},
14
# {'id': 3, 'class': ...},
15
# ...
16
# ]
Copied!

라벨 변경사항을 Suite에 적용하여 업데이트 하기

1
data.set_category_labels(category_labels)
2
data.set_object_labels(object_labels)
3
4
# The change can be seen at the Suite Web UI
Copied!

다른 질문이 있으신가요? [email protected] 으로 문의주세요.