Folder layout
- The image folder must be named
imagesand sit next to the labels CSV. - All images share one extension (
.jpg,.jpegor.png; default.jpg) and one resolution, which you declare intarget_size. The ingestor copies them unchanged.
Labels CSV
Rules for
Annotation:
- Every row must name exactly
number_of_keypointskeypoints, and every row must use the same keypoint names as the first row. - Coordinates must be numeric and non-negative, with
x < widthandy < heightoftarget_size. - Use pixel coordinates or 0–1 fractions of the image size, as in the sample. Training detects fractions and converts them to pixels for every keypoint model. Use one unit for the whole dataset: if any coordinate is above 1, training reads every coordinate as pixels.
- At least two keypoints must differ in both x and y, so the keypoints span a real bounding box.
Ingest with the tracebloc CLI
--number-of-keypoints is required and has no default. --label-column names the class column; the CLI asks for it at a terminal, but a run with --no-input or in CI fails without it. The CLI reads target_size from the first image; pass --target-size WxH to override it.
ingest.yaml
What the ingestor checks
Plus the checks every ingest runs.
Size limit
Onetracebloc data ingest takes at most 1 GiB in total and 500 MiB per file. If your dataset is larger:
- Save the images as JPEG instead of PNG.
- Lower the resolution: resize every image to one smaller size, and scale the keypoint coordinates to match.
- Use fewer images.
Sample dataset
The template ships three 448×448 RGB JPEG images with nine upper-body keypoints each (nose, left_eye, right_eye, left_shoulder, right_shoulder, left_elbow, right_elbow, left_wrist, right_wrist) and three classes. The ingest.yaml above ingests it as is. Its coordinates are 0–1 fractions. Training converts them to pixels, so you do not need to convert them yourself.
Next steps
- Ingest the data: Prepare Data
- Shared rules for every template: Dataset templates