Claim
State the claim first: pose of a known instance, end-to-end 6D detection, tracking stability, grasping/assembly success, or real-time system constraints.
The same model can have entirely different 'best metrics' for different claims.Pose Evaluation & Error Analysis
Pose evaluation is more than subtracting a predicted matrix from ground truth. First choose the error space and equivalence relation, then set thresholds, match candidates, handle misses and duplicates, and finally aggregate across instances, objects, thresholds, and datasets. Changing any step can produce a different ranking from the same predictions.
01 · Evaluation Contract
A comparable number must specify at least the claim, units, equivalence, thresholds, matching, aggregation, and independent sampling unit. Simply saying 'we use ADD-S / AR' is far from enough.
State the claim first: pose of a known instance, end-to-end 6D detection, tracking stability, grasping/assembly success, or real-time system constraints.
The same model can have entirely different 'best metrics' for different claims.A frame, object instance, scene, sequence, physical instance, dataset, or task episode.
This unit determines statistical independence, bootstrap clusters, and averaging weights.Rotation / translation, surface distance, visible depth, image projection, box overlap, or task cost.
The error space determines what the metric captures and what it overlooks.Object geometry / appearance symmetry, current-view ambiguity, visibility, and task equivalence.
These must come from frozen metadata / protocols and must not change after seeing the results.Continuous error, success at one threshold, threshold curves, prediction-set coverage, or calibrated probability.
Thresholds, units, diameter normalization, and strict < versus ≤ are all part of the protocol.Class constraints between predictions and GT, one-to-one assignment, score order, top-N, and ignore / visibility rules.
Misses, duplicates, and incorrect ranking become TP / FP / FN only after matching.instance micro, object macro, dataset macro, threshold average, AUC / AR / AP.
The headline score is a multilevel reduction, not a new pose distance.Multiple seeds, paired differences, scene/sequence cluster bootstrap, effect sizes, and intervals.
A CI covers only the specified sampling process; it does not automatically cover domain shift or systematic label errors.Slice by object, scale, range, visibility fraction, symmetry, material, sensor, scene, and failure stage.
Overall scores rank methods; slices identify what to fix.Dataset split/hash, evaluation mesh, symmetry, targets, toolkit commit, renderer, thresholds, and result CSV.
Without any one of these, a paper's reported numbers may be irreproducible.Protocol ID · Make result tables machine-traceable
task: ModelBased-6DDet-Unseen dataset: ycbv/test + targets_bop24@sha256:... prediction: class + ᶜTₒ(mm) + confidence + runtime assets: models_eval@sha256:... + models_info@sha256:... errors: [MSSD, MSPD] @ bop_toolkit:<commit> thresholds: <named config> # never inferred from test matching: score_ordered_one_to_one aggregation: threshold → object → metric → dataset independent_unit: scene # for paired bootstrap failure_rule: missing/timeout → FN hardware: GPU / driver / precision / batch / warmup
02 · Component Pose Errors
Decomposing 6DoF quickly reveals problems in orientation, metric depth, scale, frames, or calibration. These components do not automatically account for object size, surface shape, or visibility.
Trace / quaternion geodesics, angular thresholds, and symmetry-aware extensions
Open metric page → ℝ³Units, frames, lateral/depth components, and fairness across scales
Open metric page → joint thresholdSuccess event requiring both rotation and translation to fall below their thresholds
Open metric page →03 · Surface & Projection Errors
ADD, ADD-S, MSSD, and MSPD all use model surfaces, but differ in correspondence, symmetry, mean versus maximum, and 3D versus 2D space.
| Metric | Space | Requires | Symmetry | Visibility | Most sensitive to | Blind spots / risks |
|---|---|---|---|---|---|---|
| Rotation geodesic | Shortest angle on SO(3) | R̂, R* | None by default; can minimize over 𝒮 | None | Orientation error, decoupled from model size and translation | Translation, surface radius, image scale, and task contact |
| Translation L2 | Metric 3D in camera / world coordinates | t̂, t* and their units/frame | Rotational symmetry leaves the center unchanged; take care with off-axis definitions | None | Center position, depth scale, and extrinsic calibration bias | Rotation, worst surface-point error, and difficulty relative to object size |
| ADD | Mean 3D displacement of corresponding model points | Fixed model points and two poses | Not handled | Full model | Rotation + translation; points farther from the origin contribute more | Occlusion; penalizes visually equivalent symmetry representatives |
| ADD-S | Mean nearest-point 3D distance | Model point set and nearest-neighbor implementation | Implicitly through nearest surface points | Full model | Overall surface proximity; accommodates axial / repeated geometry | Imperfectly repeated structures, texture orientation, and point-sampling bias |
| 2D Projection | Mean pixel displacement of corresponding points | Model points, pose, K / camera model | None by default | Usually the projection of the full model | Mean image displacement of the final overlay | 3D errors along the viewing ray; resolution / focal length changes the meaning of a pixel |
| VSD | Depth discrepancy of surfaces visible in the current image | Model, pose, K, test depth, renderer, δ / τ | Through indistinguishable visible surfaces | Explicit and central | Observable surface alignment under occlusion | Invisible back surfaces; depends on depth validity and the rendering contract |
| MSSD | Maximum 3D surface displacement after accounting for symmetry | eval vertices, pose, global symmetry set | Explicit minimization over 𝒮 | Full model | Worst local 3D misalignment, safety / contact tolerances | Whether the current view distinguishes poses; sensitive to extreme vertices / sampling |
| MSPD | Maximum projection displacement after accounting for symmetry | eval vertices, pose, 𝒮, K | Explicit minimization over 𝒮 | Does not use test depth | Worst perceptible pixel misalignment, RGB / AR | Metric 3D errors along the optical axis; depends on focal length / resolution |
| Task success / cost | Grasping, insertion, collision, trajectory, or control outcomes | Robot, environment, action policy, and repeated trials | Defined by action equivalence | Enters indirectly through the entire closed loop | The failure costs that matter in deployment | Hard to isolate perception; simulation / hardware and policy jointly affect outcomes |
04 · Visibility, Thresholds & BOP
VSD uses test depth and rendering to determine surface visibility; MSSD/MSPD use previously identified global symmetry. They are complementary metrics with different purposes.
| Threshold form | Example | Interpretation and risks |
|---|---|---|
| Absolute metric | 5 mm, 20 mm, 5 px, 5° | Directly matches an engineering tolerance, but is unfair across sizes, ranges, and resolutions |
| Diameter normalized | ADD / MSSD < αd, commonly α=0.1 | More comparable across object sizes; small critical features and task tolerances can still differ |
| Image normalized | Normalize pixel thresholds by image width or focal length | More stable across cameras, but requires reinterpretation for actual human / AR tolerances |
| Multiple thresholds | Average recall / precision over a set of θ values | Reduces dependence on a single threshold; the threshold set and weights still determine the headline |
| AUC / integral | Integrate the recall–error-threshold curve | Fix the upper limit, normalization, and numerical integration; 0.1 m and 0.1d are not interchangeable |
| Task calibrated | Choose from insertion clearance, gripper contact, collision margin, or control stability | Most meaningful for applications; requires independent task validation, without tuning thresholds on the test set |
Compute VSD / MSSD / MSPD for every estimate–GT pair.
At each θ (and τ for VSD), test e<θ.
Compute the correctly localized fraction under the target and matching rules.
Average recall across threshold settings for that error.
Average equally across 3 errors, then across core datasets.
05 · Task, Matching & Candidate Semantics
Task inputs determine what the system may know. Candidate sets, scores, top-K, and one-to-one matching determine how misses and duplicates enter the denominator.
Save image / object / pose / score / time for every candidate; first apply the benchmark's allowed maximum predictions and target rules.
Class, image/view, GT ignore / visibility, metric threshold, and task-target conditions must be satisfied before matching.
Each GT can match at most one prediction, and each prediction can explain at most one GT. Duplicates become FP or are filtered by task rules.
Detection usually sorts confidence from high to low. Incorrect high scores create FP at low recall, depressing the entire PR curve.
Greedy, Hungarian, target-count, and metric-specific matching can differ. Use the official implementation directly and freeze its version.
Follow the protocol for low-visibility GT / predictions and those outside the targets file. 'Excluded from FN' does not necessarily mean the corresponding prediction counts as FP.
Treating top-K as K detections, one prediction set, or oracle best-of-K defines three protocols with entirely different results.
Stable sorting of equal scores, numerical precision, NMS / symmetry deduplication can change boundary outcomes; deterministic rules are required.
Localization mental model
input: image + [(object_id, visible_count), ...] for each object: keep task-allowed number of hypotheses compute error matrix to same-object GTs one-to-one match under each threshold recall = matched targets / all targets AR_e = average recall over threshold settings headline = aggregate AR_e / datasets
Detection mental model
input: image only (no visible-instance list) predictions = class + pose + confidence sort / cap predictions by protocol for each metric threshold and object: score-ordered one-to-one matching duplicate / wrong / threshold-fail -> FP unmatched GT -> FN AP_e,o = area under precision–recall headline = aggregate objects / metrics / datasets
06 · Interactive Lab
The first experiment computes eight error types for the same transform. The second sends identical candidates through localization / detection. The third switches micro/macro aggregation, pose oracles, and scene-cluster bootstrap over 240 records.
Interactive · Error, Matching & Statistical Diagnosis
Rotation
Translation
ADD / ADD-S
Proj2D
MSSD / MSPD
VSD-style
Task input
Considered
Match counts
Recall / Precision
Headline
Headline A / B
Paired delta
Worst slice
Pose-oracle gap
Protocol diagnosis
07 · Aggregation & Statistical Evidence
Save every prediction, GT, error, and matching outcome before generating aggregate tables. Retain more than the final average.
| Level | How it averages | Changed weights / risks |
|---|---|---|
| Per-instance micro | Pool and average all annotated instances | Objects / scenes with more samples dominate; appropriate for claims about actual frequencies |
| Per-object macro | Compute each object's score, then weight objects equally | Long-tail objects receive equal weight; objects with few samples have higher variance |
| Per-dataset macro | Compute each dataset score, then weight core datasets equally | Prevents large datasets from overwhelming small ones; changing the dataset definition changes the overall score |
| Across thresholds | Average recall / precision across correctness thresholds | These are not independent trials; disclose the threshold grid and range |
| Across metrics | For example, BOP localization averages AR_VSD / AR_MSSD / AR_MSPD | The three metrics target different applications; averaging can hide conflicts |
| Across seeds / runs | Report mean±SD / CI over complete training and evaluation runs, retaining every seed | Per-image variance cannot substitute for training-seed variance |
| Across time | Per frame, per sequence, per failure episode, or within a fixed time window | Aggregate tracking by sequence / episode and report failure duration |
Removes shared variation in sample difficulty
If preprocessing, detector targets, or failed-sample sets differ, define missing-data rules before pairingPreserves within-cluster correlation rather than treating adjacent frames as independent
Percentile CIs are unstable with very few clusters; also report the original cluster countsReveals instability from optimization and random data order
Repeating only the evaluator with a fixed checkpoint does not measure training-seed varianceShows whether an improvement exceeds engineering tolerances
Relative percentages exaggerate changes near a zero baseline; p-values alone do not establish practical significanceReveals tails and the distribution near thresholds beyond the mean
Different sample weights or filtering rules can make percentiles incomparablePrevents an incidental 100% on a small slice from becoming a conclusion
Many slices invite selective reporting; freeze the slice schema in advance08 · Error Slicing & Stage Oracles
Define every slice in advance, report sample counts and intervals, and retain links to original images / depth / overlays / error heatmaps. Otherwise, slices invite post hoc selection.
| Slice axis | Diagnostic target | Suggested reporting |
|---|---|---|
| Object / category / instance | Geometry, texture, symmetry, training frequency, and CAD quality | per-object table, macro score, worst-K objects |
| Visible fraction / truncation | Distinguishes occlusion handling in the front end, amodal reasoning, and VSD | Use visib_fract bins and treat truncation separately |
| Image footprint / diameter | Small-object pixel quantization, MSPD, and detector recall | Stratify by bbox area, projected diameter, and metric diameter |
| Range / depth | Z error, focal–translation coupling, and depth noise | By camera Z, sensor range, and translation components |
| Rotation / viewpoint | Training-pose coverage, in-plane / out-of-plane rotation, and canonical boundaries | SO(3) bins, view sphere, roll bins, symmetry quotient |
| Material / illumination | Transparent, specular, dark, weakly textured materials, and domain gaps | Asset labels + bins for sensor validity / exposure / lighting |
| Scene / clutter / count | Detector overload, inter-object occlusion, and duplicates | scene-level count, occluder type, background domain |
| Modality health | RGB blur, depth holes, synchronization / calibration, and missing modalities | raw sensor QA, confidence, dropout / fallback route |
| Failure stage | detector, mask, correspondence, solver, refiner, score, tracking | GT crop / GT mask / oracle PnP / oracle selection stage ablations |
| Task / robot state | Reachability, grasp family, contact tolerance, calibration, and motion | pose-only / calibrated chain / simulated / hardware success ladder |
Retain all deployed candidates, misses, duplicates, and timeouts.
Upper bound on current candidate coverage; the gap from actual score-based selection diagnoses ranking / calibration.
Diagnoses PnP / RANSAC / the refinement attraction basin.
Upper bound for the pose head; cannot serve as the end-to-end headline.
Per-instance error record · Make every plot recomputable
scene_id / image_id / gt_id / object_id / physical_instance visibility / truncation / projected_size / camera_z / material_tags prediction_id / rank / confidence / runtime / failure_stage rotation_raw / rotation_sym / translation_xyz ADD / ADD-S / Proj2D / VSD[tau] / MSSD / MSPD matched_gt / TP-FP-FN per threshold / ignore_reason asset_hash / symmetry_hash / evaluator_commit / render_backend overlay_path / depth_diff_path / log_path
09 · Robotics, Tracking & Efficiency
Evaluate deployment along a ladder: pose-only → calibrated robot chain → planner / simulator → hardware trials. Retain inputs, failure stages, and pose oracles at each level to identify what to improve.
MSSD's worst surface displacement is closer to local contact risk than mean ADD, but task trials must still account for grasp family, jaw width, collision, and force closure.
Separate insertion-axis, lateral, roll, and key-feature errors; an overall 5°5cm threshold cannot express submillimeter clearance.
Report control-rate latency, jitter, tracking failure duration, recovery, and jumps between quotient representatives alongside per-frame mean pose errors.
P95 / worst-slice results, risk–coverage, OOD / sensor-health fallbacks, and hardware interlocks often matter more than mean AR.
| Efficiency dimension | Required details |
|---|---|
| Latency definition | End-to-end wall-clock time per image, object, hypothesis, or batch throughput; whether warmup and preprocessing are included |
| Hardware | CPU/GPU/accelerator, memory, driver, precision, power mode, threads, and batch size |
| Onboarding / training | Per-object onboarding time for seen/unseen-object tasks, rendering/templates/cache, and maximum resource limits |
| Memory | Peak VRAM / RAM, model size, template / feature database, and persistent cache |
| Throughput vs tail | Alongside mean FPS, report median / P95 latency, queuing, synchronization, and worst-case candidate count |
| Energy / deployment | Power consumption, thermal throttling, edge device, network / server latency, and fallback resources |
| Accuracy–cost frontier | Sweep refinement iterations, top-K, resolution, and ensembles under the same protocol; report the Pareto frontier |
10 · Reproducibility & Release Gates
First reconcile expected targets, prediction records, and evaluated records. Then verify assets, cameras, symmetry, renderer, thresholds, and aggregation.
| Failure modes | Symptoms | Detection | Fix |
|---|---|---|---|
| Wrong units / frame | All methods show huge translation errors on one axis; ADD is off by 1000× | Matrix projection, known synthetic poses, m/mm, and m2c/c2m round trips | Stop evaluation first; do not hide the error with a larger threshold |
| Wrong evaluation mesh / origin | Rotation error looks normal while all surface metrics are biased | Hash models_eval; check bbox, diameter, vertex count, and frame overlays | Freeze asset versions and archive them with the results |
| Inconsistent symmetry metadata | Equivalent representatives yield conflicting ADD/MSSD results and per-object anomalies | Render symmetry orbits; audit surface invariance, texture, and instances | Freeze geometry/appearance symmetry and toolkit discretization |
| Overly permissive ADD-S | Large errors on imperfectly repeated structures still yield nearby nearest points | Report ADD, MSSD, rendered overlays, and task outcomes together | Do not treat ADD-S as a general explicit symmetry metric |
| VSD depth / renderer mismatch | Anomalous scores on transparent/specular or invalid-depth samples | Record depth validity, renderer conventions, δ/τ, and visual heatmaps | Use the official renderer/toolkit; report sensor failures separately |
| Comparing 5px across cameras | High-resolution / long-focal-length datasets appear worse | Compare pixel error with image width, fx, and metric displacement | Fix the camera protocol or also report normalized / 3D metrics |
| Evaluating only matched detections | The pose head scores highly while the end-to-end system misses many objects | Report GT-crop / detector-crop results, the pose-oracle gap, and AP/AR together | Retain detector failures and identify their stage |
| The illusion that duplicates help | Oracle top-K scores are high, but actual scores select the wrong candidate and AP drops | One-to-one matching, top-1/top-K, NLL/calibration, and duplicates | Train ranking / deduplication; evaluate through the deployed interface |
| Micro hides the long tail | Common large objects improve and the overall score rises, while small objects fail | micro vs object-macro, per-object / scale bins | Preregister weights and disclose counts |
| False per-frame independence | Extremely narrow CIs and tiny p-values, yet failure on a different sequence | Account for correlation by scene/sequence/physical instance | cluster bootstrap / grouped split |
| Test-set tuning | Thresholds, symmetry tolerances, NMS, and temperature are optimized on test data | Track configuration provenance and access logs | Freeze validation/calibration splits; run only the final protocol on test data |
| Silently dropping failed samples | NaN, missing poses, timeouts, or missing files are excluded from the denominator | Reconcile counts/checksums of expected targets and evaluated records | Explicitly convert failures to FN / maximum error and record reasons according to the protocol |
| Incomplete AUC / AR names | Scores with the same 'AR' or 'AUC' name differ by tens of points | Check error, threshold grid, upper bound, dataset/year/aggregation | Include the full protocol ID in field names |
| Irreproducible speed | Reported FPS measures only network forward passes; deployment is several times slower | End-to-end profiler, warmup, synchronization, P95, and candidate count | Report stage breakdowns and hardware/precision together |
Release gate · Before publishing any pose-benchmark number