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.1.1.tar.gz (45.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.1.1-py3-none-any.whl (50.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: mindkosh-1.1.1.tar.gz
  • Upload date:
  • Size: 45.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mindkosh-1.1.1.tar.gz
Algorithm Hash digest
SHA256 862e625e7904ebb279baf28eba538f0e47b03234deac7594228b35fc15a55111
MD5 73aafd4b4185c112202acd7f95368ff3
BLAKE2b-256 1ff8ca6461ef06db1f77f9f6192c163c9a360d8ce4f00b023bd4a07859c82eaf

See more details on using hashes here.

File details

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

File metadata

  • Download URL: mindkosh-1.1.1-py3-none-any.whl
  • Upload date:
  • Size: 50.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mindkosh-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 92d2d5f31bae7ae7bed80a9af38322be1ede41eb014df78c4559505c68e1c321
MD5 781dd1646ea879882cfb7b852045e54a
BLAKE2b-256 17cf42f4b8edcee6774083b22ab704c97e1fe6f73fa7b6c72955f159991732a7

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