Exact CAD, reference video, category name, or none?
Defines instance / category / model-free / open-world settings.
Dataset Design & Real-data Annotation
A 6D pose dataset binds physical instances to CAD, frames to units, cameras to time, and labels to measurement chains, visibility, splits, versions, and errors. Ambiguity in any link grows into systematic bias as data scale, beyond collecting images and saving R and t.
Dataset Contract
Instance localization, category pose-and-size, novel objects, multiple views, tracking, and robotic grasping differ in test-time assets and outputs. Encode the task directly in the schema instead of forcing a protocol from whatever fields remain after capture.
| Layer | Minimum fields | What it guarantees |
|---|---|---|
| Identity | obj_id, instance_id, category_id, track_id | Distinguishes repeated category instances, scene re-entry, and reappearance after occlusion |
| Geometry | mesh/CAD, object frame, metric unit, diameter, bbox, symmetry | Training, rendering, PnP, evaluation, and robot chains share asset semantics |
| Camera | RGB / Depth K,D, resolution, frame, timestamp, extrinsics | Reproducible per-frame projection and RGB-D alignment without hidden defaults |
| Pose | Default ᶜTₒ, measurement chain, covariance / quality, validity | Identifies direction, units, time, and provenance beyond a sequence of 12 numbers |
| Visibility | mask, mask_visib, bbox_obj, bbox_visib, counts, visib_fract | Separates full silhouettes, visible portions, truncation, and invalid depth |
| Provenance | raw / filtered / aligned / completed, calibration / asset / annotation version | Traces labels to their inputs and tool versions |
| Protocol | train/val/test manifest, target list, license, evaluation contract | Prevents leakage and makes results comparable |
Defines instance / category / model-free / open-world settings.
Defines localization versus detection and the need for negative frames.
Determines size, velocity, identity, grasp, and uncertainty fields.
Directly determines the atomic split-grouping key.
Object Inventory & Assets
Vertices, pose translation, diameter, symmetry transforms, and robot grasps depend on one frame/unit contract. Changing CAD origins, axes, or dimensions changes label semantics even if stored matrices remain identical.
| Asset item | Required decision | Acceptance test |
|---|---|---|
| Physical instance ↔ digital asset | Bind each physical instance to a unique asset hash; record CAD, scan, or reconstruction origins | Match dimensions, quality, and distinguishing features to the real object; do not silently reuse approximate meshes within a category |
| Object frame | Fix origin, +x/+y/+z, natural upright direction, and handedness; save physical-to-model extrinsics | Render axes, silhouettes, and keypoints from independent views so reviewers can interpret every axis |
| Metric unit | Use m or mm consistently internally and convert explicitly on export; synchronize vertices, translation, and diameter | Measured caliper sizes, mesh bounds, projected sizes, and depth distances agree |
| Mesh topology | Remove isolated pieces, nonmanifold geometry, and duplicate faces; standardize normals, winding, textures, and watertightness requirements | Consistent masks/depth across renderers, outward normals, no NaNs or extreme coordinates |
| Symmetry | Label discrete/continuous equivalents and whether the task distinguishes texture orientation | Verify that equivalent rotations truly preserve indistinguishable geometry / appearance |
| Category canonical | Fix category NOCS / canonical frames, size vectors, and instance-deformation rules | Align semantic parts, up/front, and normalized scale across instances, beyond resizing bounding boxes into unit cubes |
Capture Matrix
List factors before combinations, budgets, and coverage checks. Full Cartesian products are usually infeasible; stratification, orthogonal designs, active sampling, or difficulty buckets help. Record omitted regions explicitly instead of assuming random capture covers them naturally.
Cover the task distribution beyond frontal tabletop views
Match deployed motion and occlusion patterns
Prevent fixed backgrounds from becoming object identity cues
Cover detection, association, and occlusion difficulty
Sample by strata before discovering that low-visibility examples are absent
Cover RGB appearance and sensor operating conditions
Expose structured RGB / depth failures
Define cross-device generalization; avoid treating device-specific bias as universal
Deployment logs, robot workspace, materials, failure costs
view × distance × visibility × scene × sensor
Atomic sessions, device states, assets, operators
Inspect independent groups and joint distributions alongside frame counts
Calibration Before Annotation
Intrinsics, RGB–Depth, camera–mocap, marker–object, hand–eye, robot base, turntable axes, and synchronization may all enter a label. Each needs independent data, residuals, validation, temperature/focus state, and validity periods beyond one final YAML file.
Cover field of view and distance; inspect position-dependent reprojection residuals on independent views.
Check distances and image edges; log target-from-source direction, units, and covariance.
Cover rotation axes and workspace; test pose-dependent bias and mounting repeatability.
Static spatial correctness does not establish moving synchronization; estimate offsets/jitter with observable motion.
Annotation Routes
Turntables suit systematic single-object views; mocap and robots support dynamic capture; reconstruction + CAD alignment propagates one manual alignment through long RGB-D sequences; per-frame PnP repairs selected keyframes. Systems often cross-check two routes.
| Route | Direct measurement | Core chain | Strengths | Risks |
|---|---|---|---|---|
| Fiducial / turntable | Marker / board pose, turntable angle, calibrated mount | camera ← board/marker ← object | Simple, precise, and suitable for systematic single-object view-sphere coverage | Visible markers/boards become shortcuts; mount extrinsics and fixture offsets introduce error |
| Optical mocap / tracker | Camera-rig and object-rigid-body poses in a mocap world | CTo=(WTc)⁻¹WTo, including tracker-to-optical / marker-to-object | High-rate multi-object capture with real motion/occlusion and robot synchronization | Occluded reflective markers, rigid-body swaps, time offsets, loose mounts |
| Robot kinematics | Joint encoders, base-to-end-effector, hand–eye calibration | CTo=(BTe · ETc)⁻¹BTo or the corresponding eye-to-hand chain | Repeatable automated capture with planned viewpoints and active-sensing trajectories | Backlash, compliance, and pose-dependent TCP / hand–eye / base calibration errors |
| Reconstruction + CAD alignment | RGB-D / multiview camera trajectories, scene mesh, one CAD-to-scan alignment | CTo=(STc)⁻¹STo | Propagates limited manual alignment to long sequences and dense pixel labels | Camera drift, dynamics, reconstruction deformation, and CAD misalignment propagate globally |
| Per-frame 2D–3D / PnP | Manual keypoints, edges, silhouettes, or pose gizmos | model point ↔ image pixel → candidate ᶜTₒ | No external hardware; repairs selected keyframes and unusual samples | Expensive labor, invisible keypoints, symmetric alternatives, temporal jitter |
| Hybrid refinement | Any coarse ground truth + RGB/depth render residuals + human review | measured prior → visibility-aware optimization → audit | Combines system measurements with image evidence to reveal mount and timing bias | Optimization basins, incorrect depth/masks, circular validation; the same model output is not independent ground truth |
Interactive Annotation Lab
The first view propagates rotation, translation, timing, and CAD-scale errors through 4×4 transforms. The second separately counts full silhouettes, valid depth, and visible pixels on a teaching raster. The third applies four group-split strategies to 240 deterministic records and reports scene, trajectory, and instance leakage.
Interactive · Ground Truth Production
Route contract
Pose label
Propagation error
Asset scale
Object-to-camera ground truth
bbox_obj
bbox_visib
Pixel counts
visib_fract
QA status
Evaluation claim
Split counts
Leakage audit
Coverage gap
Verdict
Masks, Visibility & Occlusion
A full mask is the model's projected silhouette; a visible mask excludes scene occlusion under the visibility rules; a depth-valid mask describes sensor measurements. Store them separately and version boundary tolerances, antialiasing, and depth deltas.
Rendered from CAD, K/D, and pose, including in-image portions occluded by other objects.
Compare object and scene depth, accounting for z-buffers, deltas, and invalid depth.
Store full amodal extent and truncation when needed; in-image boxes cannot represent off-image geometry.
First render object IDs, depth, normals, and full masks consistently.
Retain only the nearest camera surface per pixel; keep instance GTIDs distinct.
On valid scene depth, compare |z_render−z_scene|≤δ in physical units.
Specify invalid-depth treatment consistently across splits.
Record bboxes, counts, visib_fract, and failure reasons for stratified evaluation.
BOP & Export Contract
BOP uses right-handed model/camera/world frames, OpenCV optical cameras, model-to-camera poses, and commonly millimeter models/translations. Internal meters/custom schemas are valid, but export must jointly convert mesh, t, diameter, bbox, symmetry, and depth_scale.
| File | Key semantics |
|---|---|
| models/obj_XXXXXX.ply | Metric meshes, normals, textures; BOP commonly uses mm |
| models/models_info.json | Diameter, bbox, and symmetry transforms |
| scene_camera.json | Per-image cam_K, depth_scale, optional world-to-camera pose |
| scene_gt.json | Per-frame, per-instance obj_id, cam_R_m2c, cam_t_m2c |
| scene_gt_info.json | bbox_obj / bbox_visib, px_count_all / valid / visib, visib_fract |
| rgb/ · depth/ | Color and uint16 depth share image_id; depth × depth_scale gives mm |
| mask/ · mask_visib/ | IMID_GTID.png; GTID indexes instances in scene_gt |
| test_targets_*.json | Actual evaluation scene/image/object/instance targets, rather than every object in a folder |
Quality Assurance
Ten reviewed overlays cannot establish reliable million-frame ground truth; one mean reprojection error can hide an object's mount bias or a timing fault. Use per-sample metrics, stratified control charts, anomaly queues, and independent spot checks.
All T·T⁻¹≈I and alternative chain paths close; RᵀR≈I, detR≈1, consistent units
Plot axes, CAD silhouettes, keypoints, and 3D boxes per frame; inspect image centers and edges
Compare rendered object and measured scene depth only in valid, expected-visible regions
One object point projects onto matching tracks across views; adjacent poses show no unphysical jumps
Calipers, known boards, a second tracker, or robot contact verify absolute scale and local position
Inspect counts/errors by object, scene, distance, direction, visibility, material, device, and annotation route
Stratified random checks plus all extreme cases; two-person review for high-risk or uncertain samples
Internal schema→BOP/COCO/custom→internal, preserving hashes, poses, K, and mask counts
Split, Bias & Governance
Seen-instance novel views may group sessions/trajectories; new scenes isolate backgrounds; category-level unseen instances isolate physical objects and all their assets/onboarding data; cross-sensor claims isolate devices/domains. Publish separately named manifests for distinct claims.
Adjacent frames are highly correlated; use only with proven independent sampling.
Group complete sessions atomically, including lighting/operators when needed.
Keep backgrounds, calibration, sensor fingerprints, and domains from crossing splits.
All frames, scans, CAD, and reference videos of a physical object belong to one split.
Hash raw manifests, assets, calibration, labels, splits, and tools separately; revisions create new versions.
Object assets, trademarks, people, residential information, and third-party data need permissions, de-identification, and deletion policies.
Record old/new values, reasons, tools, human/automatic origins, and affected splits; avoid silent overwrites.
Release gate · 12 questions