Skip to main content

Mindkosh Python SDK

Project description

mindkosh_logo_small

Mindkosh is the platform for labeling multi-sensor data, from Lidar point clouds to multiple camera images. Our powerful automatic annotation features and a particular focus on making Quality checking easier and faster, helps ML teams obtain high quality labeled datasets at scale.

Read documentation here

github-sdk-page-image

Table of contents:

Setup

Requirements

  • Python >= 3.7
  • Account on the Mindkosh platform (Create on now)
  • SDK Token (contact us to get one)

Installation

  • Install the package
pip install mindkosh

Getting started

from mindkosh import Client, PointCloudFile, ImageFile, Label
client = Client(token)

To get started, create a Task/Project object using the token provided to you. You can also set the token in an environment variable(MK_TOKEN) instead of passing as a parameter to the object constructor.

Datasets

Create dataset

client.create_dataset(
    name: str, 
    data_type: str
) 

Parameters:

  • name - unique dataset name
  • data_type - image, pointcloud or video

Example:

dataset = client.create_dataset(
    name = 'test-1',
    data_type = 'pointcloud'
)

Get datasets

datasets = client.get_datasets(
    dataset_id = 1
)

Get dataset files

files = client.get_dataset_files(
    dataset_id = 1,
    max_files = 100
)

Update tags

updated_dataset_files = client.update_tags(
    dataset_id = 1,
    datasetfile_ids = [1,2,3,4,5,6,8],
    add = ['tag1','tag2'],
    remove = ['tag2'],
    all = False
)

Upload data

Uploads images from a list of directories or/and files. Useful when all the images same tags/extra.

client.upload_data(
    dataset_id = 1,
    tags = ['tag4'],
    resources = ['/home/user/Desktop/my-images/', '/home/user/Downloads/test1.jpg'],
    recursive = False,
    manifest_file = None,
    save_files_dir = None,
    **kwargs
)

Upload pointcloud data

Uploads images from a list of directories or/and files. Useful when all the images same tags/extra.

pcdfile1 = PointCloudFile(
    filepath = '/file/path1/',
    related_files = [
        ImageFile(
            filepath='/path/to/image1',
            tags=[],
            extra={
                "intrinsic": [255.520403, 449.883682, 250.828738, 255.237477],

                # Projection matrix from lidar to camera
                "extrinsic": [
                    [-0.735827, -0.65789, -0.0384775, 0],
                    [0.6567956, -0.70452916, 0.00140833, 0],
                    [-0.02255652, -0.0248216, 0.9993586, 0],
                    [0, 0, 0, 1]
                ],

                # Camera projection model - PINHOLE OR FISHEYE
                # For FISHEYE, mirrorParameter is also needed
                "cameraModel": "PINHOLE",
                "device_id": 1
            }
        )
    ]
)

client.upload_pointcloud_data(
    dataset_id = 1,
    pcdfiles = [pcdfile1, pcdfile2]
    **kwargs
)

Upload imagefiles

Uploads images with tags/extra for each image

client.upload_imagefiles(
    dataset_id = 1,
    imagefiles = [
        ImageFile(
            filepath='/path/to/image1',
            tags=["city1"]
        ),
        ImageFile(
            filepath='path/to/image2',
            tags=["city2"]
        )
    ]
)

Delete files from dataset

Delete select files or delete all the files from a dataset

client.delete_files_from_dataset(
    dataset_id = 1,
    file_ids = [1,2,3,4],
    delete_all = False
)

Delete dataset

Delete a dataset along with its files

client.delete_dataset(dataset_id=1)

Projects

Create project

project = client.project.create(name, description=None) 

To create a project, enter a name and an optional description.

Get all projects

Get list of all project objects

myprojects = client.project.get()

Update project details

project.update_name("new name")
project.update_description("New description")

Delete project

project.delete()

Tasks

Create task

Create a new task :

labels = [
    Label(
      name='car',
      color='#fffccc',
      sequence=1,
      type='non_mask'
    ),
    Label(
      name='bus',
      color='#fcf0fc',
      sequence=2,
      type='instance_mask'
      attributes =[]
    )
]

Note : Each label should have a unique name.

task = client.task.create( 
    name='task1',
    labels=labels,
    dataset_id=1,
    tags=['tag1'],
    project_id=None,
    job_modes=['validation','qc']
    batches=3
)

To create a task and upload images/video, user must provide either resources/manifest.

Parameters:

  • name - A valid task name.
  • batches - Number of images in each job. Only valid for resource_type="imageset".
  • project_id - Optional - ID of the project this task should belong to.

Get all tasks

Get list of all the tasks

mytasks = client.task.get()

Update task details

task.update_name("New name")
task.update_project_id(new_valid_project_id)  

Download annotations

Get releases

releases = task.get_releases()

Create a release

releases = task.create_release(
    format="coco", 
    batches=[1,2], 
    description=None, 
    webhook_url=None
)

format can be any of the following:

  • Available formats and their parameter names:
  • COCO - "coco"
  • Datumaro - "datumaro"
  • Pascal VOC - "voc"
  • Segmentation mask - "segmentation_mask"
  • YOLO - "yolo"

Download a release

task.download_release(
    release_id=1,
    local_path='/local/dir/'
)

Delete a release

task.delete_release(release_id=1)

Upload annotations

task.upload_annotations(
    annotation_format='coco',
    local_path='annotation_file.zip'
) 

Delete task

Delete a task -

task.delete()

Frames

Get frames

frames = t1.frames()
frame = frames[frame_id]

Download frame

frame.download(location)

Show frame annotations

frame.annotations

Download frame annotations

frame.download_annotations(location,format=None)

Parameters :

  • location - local dir location where you want to save annotations
  • format - None if you want to download row annotations. Any of ("coco", "datumaro", "voc", "yolo") if you want to download datasets in specific format.

Visualize frame annotations

frame.visualize(show_annotations=True,fill_color=0.30)

Parameters :

  • show_annotations - False to see raw image, True to see image with annotations.
  • fill_color - 0 <= Color transparency <= 1

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mindkosh-1.0.4.tar.gz (47.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mindkosh-1.0.4-py3-none-any.whl (54.7 kB view details)

Uploaded Python 3

File details

Details for the file mindkosh-1.0.4.tar.gz.

File metadata

  • Download URL: mindkosh-1.0.4.tar.gz
  • Upload date:
  • Size: 47.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.18

File hashes

Hashes for mindkosh-1.0.4.tar.gz
Algorithm Hash digest
SHA256 57fb843516afe0b6261b6503f786d4d764b3de6c0690f044ea136c58bb735130
MD5 68a264bacbed85169de2d8fda62ccf4a
BLAKE2b-256 b8446402c1d11e5d9057133b7624cce9cb1c177f323da21d44e3da1f6e3fb35c

See more details on using hashes here.

File details

Details for the file mindkosh-1.0.4-py3-none-any.whl.

File metadata

  • Download URL: mindkosh-1.0.4-py3-none-any.whl
  • Upload date:
  • Size: 54.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.18

File hashes

Hashes for mindkosh-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 a329ff16ac47c5fce5d9358c28a31bef3ad82ec81f03429ec076ad092bc86143
MD5 5130291af28603110b1f75ae8ccd6fdd
BLAKE2b-256 5bd99ea9f12badd3872fef3ef1dd421e55d078658468cbe2a4d73b409f1c5016

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page