Tutorial: Annotating Poses¶
This tutorial walks through the full annotation workflow — from creating your first skeleton instance to building up a labeled dataset across frames and camera views.
Overview¶
The annotation workflow in LUC3D follows this pattern:
For multi-view 3D work, you then group instances across cameras and triangulate.
Creating Your First Instance¶
Step 1: Navigate to a Frame¶
Use any of these to find a good frame to annotate:
- Left / Right — Step one frame at a time
- Space — Play/pause to scan through the video
- Click on the timeline to jump to a specific frame
- Ctrl+J — Jump to a specific frame number
Pick a frame where your subject is clearly visible in multiple camera views.
Step 2: Select a Camera View¶
Click on a camera view to make it active, or press V to cycle through views. The active view has a highlighted border.
Step 3: Add an Instance¶
Press N to create a new skeleton instance. A skeleton appears in the active camera view with all keypoints at default positions.
Step 4: Position Keypoints¶
For each keypoint in the skeleton:
- Click and drag the keypoint node to its correct position on the animal/subject
- Place it precisely at the anatomical landmark
Work through all keypoints systematically (e.g., head → spine → limbs → tail).
Moving the whole skeleton
If the skeleton spawned far from your subject, hold Alt and drag any node to move the entire instance at once, then fine-tune individual keypoints.
Step 5: Handle Occluded Keypoints¶
Not every keypoint is visible in every camera view. For hidden keypoints:
- Right-click the node to mark it as occluded (the node becomes hollow)
- Right-click again to mark as not visible (the node disappears)
- Right-click once more to return to visible
Warning
Don't guess the position of occluded keypoints — mark them as occluded. Guessed positions will degrade triangulation quality.
Annotating Multiple Views¶
After annotating in one camera view, repeat for other views:
- Click on the next camera view (or press V)
- Press N to add a new instance
- Position all visible keypoints
- Mark occluded keypoints
How Many Views?¶
- Minimum 2 views required for triangulation
- More views = better accuracy — annotate in as many views as the keypoints are visible
- You don't need to annotate in views where the subject is barely visible or heavily occluded
Annotating Multiple Subjects¶
If multiple animals/people are in the scene:
- Create one instance per subject per camera view
- Use tracks to label which instance belongs to which subject:
- Select an instance
- Press Shift+1 to assign Track 1, Shift+2 for Track 2, etc.
- Consistent track assignment across views enables auto-grouping
Editing Existing Annotations¶
Selecting an Instance¶
- Click any keypoint or edge to select that instance
- Press Tab to cycle through instances in the current frame
- The selected instance is highlighted in the Instances panel
Adjusting Keypoints¶
- Drag any keypoint to reposition it
- Hold Alt + drag to move the entire instance
Deleting¶
- Press Del to remove the selected instance from the current view
- Press Shift+Del to remove it from all camera views
Working with Predictions¶
If you've loaded SLEAP predictions:
- Predictions appear as dashed outlines (predicted instances)
- Review each prediction for accuracy
- Double-click a correct prediction to convert it to a user instance
- Adjust any mispositioned keypoints
- Delete any incorrect predictions
This is much faster than annotating from scratch — you only need to fix errors.
Frame-by-Frame Workflow¶
For efficient labeling of many frames:
Labeling Strategy¶
- Don't label every frame — label representative frames spread throughout the video
- Focus on frames with diverse poses (different body positions, orientations)
- Include frames where the subject is in different locations within the scene
- Label frames where predictions are poor or missing (if using active learning)
Efficient Navigation¶
- Shift+Right / Shift+Left — Jump to the next/previous labeled frame
- Use the timeline to see which frames already have annotations (marked with dots)
- Play through the video at normal speed to identify key frames to label
Speed Up with Reprojection-Aided Labeling¶
You don't need to annotate every camera view manually. After labeling just 2 views, you can triangulate and get free reprojections in all other views. See the full Reprojection-Aided Labeling tutorial for the complete workflow.
The short version:
- Label 2 camera views carefully
- Group and triangulate (T)
- Press R to see reprojected annotations in all other views
- Double-click reprojections to convert them to editable instances
- Fine-tune and re-triangulate for even better accuracy
This also ensures all your annotations are 3D-consistent across views — reprojections respect the camera geometry, so your labels are geometrically coherent.
Building a Complete Dataset¶
Recommended Workflow¶
- First pass: Label 10–20 diverse frames across the video
- Use reprojection-aided labeling to fill in additional camera views for free
- Group and triangulate to verify annotation quality
- Fix any instances with high reprojection error (> 5px)
- Second pass: Add more frames, focusing on underrepresented poses
- Export when satisfied with coverage and quality
Quality Checks¶
After annotating, use these tools to verify quality:
- Triangulate (T) — Check reprojection errors
- 3D viewport (\) — Verify the 3D skeleton looks anatomically correct
- Reprojection overlays (R) — See if reprojected points align with the video
High reprojection error on specific keypoints usually means those keypoints need adjustment in one or more camera views.