Create a job
You can send your data to us through either of the following channels
API (recommended)
Sharing a cloud storage bucket
The data could be a collection of frames or a collection of sequences. A unit of work is either a single frame or a single sequence based on your requirement. The API will have to be called for each unit of work.
Following Json template gives an idea of the payload the API is expecting.
The payload is organised as follows
Each request is made of frames and sensor meta data
Each frame can have multiple sensor data
For each sensor following two types of data is expected
URL to the media which can be accessed by our servers
Pose of the sensor for that frame. Please ensure that the sensor poses and the point cloud files are with respect to the same coordinate frame of reference.
In sensor meta, each sensor has to be defined and the intrinsics of the camera sensors is expected.
Note: Following values are just placeholders and actual values will be expected in the request.
A JOB
POST
https://api.playment.io/v1/projects/:project_id/jobs
This endpoint allows you to create a job
Path Parameters
project_id
string
ID of the project in which you want to create the job
Headers
x-api-key
string
API key for authentication
Request Body
batch_id
string
A batch is a way to organize multiple jobs under one batch_id
. You can create new batches from the dashboard or by using the batch creation API.
If batch_id
is left empty or the key is not present, the job is created in the Default batch
in your project.
work_flow_id
string
The ID of the workflow inside which you want to create the job
data
object
The data
object contains all the information and attachments required to label a job. The data
object is defined below
reference_id
string
The unique identifier of the job
Payload
Payload definition
Key
Description
Type
data.sensor_data
Contains lists of frames and sensor metadata
Object
data.sensor_data.sensor_meta
Contains a list of all the sensors with each having metadata information like
id
: id of sensor
name
: name of sensor
modality
: lidar / camera
If the sensor is a camera, you can add the camera intrinsic
values as well as the camera_model
. These values are used along with the sensor_pose to create projections between sensors.
camera_model
: one of brown_conrady
or fisheye
If this key doesn't exist or is null, the tool will assume brown_conrady
.
The intrinsics
object contains the following keys:
cx
: principal point x value
cy
: principal point y value
fx
: focal length in x-axis
fy
: focal length in y-axis
k1, k2, k3, k4, k5, k6
: Radial distortion coefficients
p1, p2
: Tangential distortion coefficients
skew
: camera skew coefficient
scale_factor
: The factor by which the image has been downscaled (For example, scale_factor will be 2 if the original image is twice as large as the downscaled image)
If the camera_model
is brown_conrady
then the distortion coefficients should be one of the following combinations:
k1, k2, p1, p2
k1, k2, p1, p2, k3
k1, k2, p1, p2, k3, k4, k5, k6
If the camera_model
is fisheye
then the distortion coefficients should be the following combination:
k1, k2, k3, k4
The remaining coefficients can be ignored or be assigned a value of 0
Object
data.sensor_data.frames
List of frames, each for a particular timestamp in the order of annotation. Each having frame_id
, ego_pose
and sensors
List
data.sensor_data.frames.[i].frame_id
Unique identifier of the particular frame
String
data.sensor_data.frames.[i].ego_pose
Contains the pose of a fixed point on the ego vehicle in the world frame of reference in the form of position (in (x, y, z)) and orientation (as quaternion (w, x, y, z))
In case the pose of the ego vehicle is available in the world frame of reference, The tool can allow annotators to mark objects as stationary and toggle APC (Aggregated point cloud) mode.
Usually, if a vehicle is equipped with an IMU or Odometry sensor, then it is possible to get the pose of the ego-vehicle in the world frame of reference.
Object
data.sensor_data.frames.[i].sensors
List of all the sensors associated with this particular frame with each having:
sensor_id
: id of the sensor. This is a foreign key to the sensor id mentioned in the sensor_meta
of the sequence data
data_url
: A URL to the file containing the data captured from the sensor for this frame. In order to annotate lidar data, please share point clouds in ascii encoded PCD format.
sensor_pose
: This key specifies the pose of respective sensors in a common frame of reference.
If the ego_pose
is available in the world frame of reference, then you should specify the sensor_pose
of individual sensors in the same world frame of reference. In such cases, the pose might change in every frame, as the vehicle moves.
If the ego_pose
is not available, then all sensor_pose
can be specified with respect to a fixed point on the vehicle. In such cases, the pose will not change between frames.
Object
Please share point clouds in ascii
encoded PCD format.
If you are sharing the ego_pose
and sensor_pose
in the world frame of reference, then the points in the PCD file should also be in the world frame of reference
PCD format Specification: https://pcl.readthedocs.io/projects/tutorials/en/latest/pcd_file_format.html
Creating jobs with pre-labeled data
If you have data which has been labeled previously by an ML model or by human labelers, you can create jobs with such labels already created. To do this, you need to send the annotation data in the data.maker_response
key in the payload. The annotation data needs to be in our annotation format.
Here's an example:
You can check the structure for various annotation_object
below:
Last updated