Skip to main content
Locate landmark points, for example body joints. Each sample is one image plus one CSV row that carries the keypoint coordinates, their visibility flags and a class label.

Folder layout

  • The image folder must be named images and sit next to the labels CSV.
  • All images share one extension (.jpg, .jpeg or .png; default .jpg) and one resolution, which you declare in target_size. The ingestor copies them unchanged.

Labels CSV

Rules for Annotation:
  • Every row must name exactly number_of_keypoints keypoints, and every row must use the same keypoint names as the first row.
  • Coordinates must be numeric and non-negative, with x < width and y < height of target_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

One tracebloc 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.
For datasets that stay above the limit, see Size limit.

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