ARXIV 2026

UniPose9D

Universal Category-Agnostic Object Pose Estimation

1Stanford University · 2Amazon
Overview

One model, any object, a full 9D pose

Give UniPose9D an object's mask in one RGB-D image, or in one RGB image with predicted depth, and it returns the object's rotation, translation and metric size. It needs no category label, no CAD model, no shape prior and no reference views. Instead of regressing a canonical coordinate at every pixel, it predicts them for pairs of points, calibrates metric scale from each pair, and recovers the pose with an N-hop Kabsch–Umeyama solver; flow matching handles symmetric objects. A single set of weights, trained on a mixture of public datasets, is used for every result on this page.

1model

the same weights for all eight datasets, with no category label, CAD model, shape prior or reference view

40.1AP

3D-box AP at IoU 0.5 on PACE, vs 18.6 for GenPose++, the next best

91.9%

of YCB-Video poses within 2 cm with RGB-D input, vs 46.5% for GenPose++; its objects and scenes were never trained on

4.0°

median rotation error on YCB-Video (RGB-D), and 4.2° on HOPE, also never trained on

Four real scenes with predicted yellow 3D boxes and coloured axes: plates and a frying pan on a table, bowls and cups on chairs, a cluttered tabletop of cans and boxes, and a row of grocery items on a sofa.
With measured depth: cluttered tabletops, occlusion and many objects at once.
Predicted boxes on a glass bottle held by a robot arm, a table in a painting, and a lamb in a photo of sheep.
With predicted depth: a robot's grasp, a painting and a photo of animals.

Yellow cuboids are the predicted metric boxes; the red, green and blue axes show the predicted orientation.

What it needs

Just the image and a mask

Most pose estimators need something about the object beyond the picture. UniPose9D is category-agnostic: at inference it is not given a category name, a category template, a mean shape, an instance mesh or reference views. It learns canonical orientations from aligned pose annotations and shares one prediction head across all categories.

ApproachExamplesNeeds at inference, besides the image
Instance-levelPoseCNN, GDR-Net, SurfEmbA CAD model of each target object
Category-levelNOCS, SecondPose, CleanPoseA fixed set of trained categories; often the category label or a mean shape
Reference-basedGen6D, FoundationPose, Any6DReference images, a video or a 3D model of the target
Open-vocabularyOryon, OV9D, Pov9DA text description or category prompt; some also a second view or a shape prior
UniPose9Dthis workOnly the object's mask, with measured depth or depth predicted from the RGB image
Method

Point pairs instead of pixels

  1. FeaturesThe masked depth is back-projected to a point cloud. Each point gets a visual descriptor from DINOv2 (enhanced by 3DCorrEnhance) and a geometric one from a small multi-radius PointNet.
  2. Pairwise predictionPairs of points are sampled, each with three context points. A residual MLP and a transformer encode them, and a joint flow-matching head predicts the pair's two NOCS coordinates and the metric box size.
  3. Pose recoveryEach pair calibrates the metric scale by itself. N-hop Kabsch–Umeyama with an adaptive inlier threshold gives rotation and translation; averaging the box sizes of inlier pairs gives the size.
Pipeline in three parts. A, features: DINOv2 on the RGB crop and PointNet on the point cloud. B, pairwise prediction: a target pair with three context points and their relative offsets go through a residual MLP and transformer, then a joint flow head that outputs NOCS coordinates and size. C, pose recovery: scale calibration and N-hop Umeyama against the observed points give rotation and translation; the mean size over inliers gives the box size.
(A) DINOv2 and PointNet descriptors. (B) A target pair plus three context points; the joint flow head predicts both NOCS coordinates and the box size. (C) Scale calibration and N-hop Umeyama recover the 9D pose.

Why point pairs

Many more candidates

N sampled points give on the order of N² possible pairs. A budget of them is sampled (10,000 from 1,024 points by default), each seeing the object in a different context.

Differences cancel bias

The difference between two points removes any shared translation error, and the ratio of the two distances, observed over predicted, gives the metric scale directly.

Robust under occlusion

With pairs as hypotheses, RANSAC can reject the inconsistent ones and still keep enough consistent pairs when only part of the object is visible.

Symmetric objects without listing symmetries

A symmetric object has several equally valid NOCS answers for the same observation. Plain regression averages them, which matches none. The head is instead a Gaussian-mixture flow over a nine-dimensional state, the two NOCS points of a pair and the log box size, so it can represent several answers and sample one of them for the whole pair. No per-object symmetry list is needed.

Pose recovery

From noisy pairs to a box, step by step

A toy version of the recovery stage in 2D, seen from above. The “network” here is simulated: predicted NOCS coordinates are the true ones plus noise, and a share of the pairs are pure outliers. Everything after that, the per-pair scale, the RANSAC hops with the adaptive threshold and the size average, is computed live as in the paper.

Camera space (metres)

observed pointinlier predictionoutlier predictionrecovered boxtrue box

Object

Noise in predicted NOCS 0.02

Outlier pairs 25%

Pairs sampled, T 400

Predicted NOCS
Per-pair scale γ
Benchmarks

Four benchmarks, the same weights

The training mixture is the training splits of PACE, Omni6DPose, NOCS and HouseCat6D; the model is evaluated on their held-out test sets with each benchmark's own metrics and no fine-tuning. On PACE it leads every reported metric, and on Omni6DPose it leads or ties every one. On NOCS REAL275 and HouseCat6D it is competitive with category-level specialists that are trained for each benchmark's fixed categories: close to SecondPose on REAL275 and ahead of it on HouseCat6D, while the recent specialist CleanPose scores higher on both.

Cat: a category-level specialist, trained for a fixed set of categories with category-specific inputs or branches. Gen: generalizable, needing no category label, mean shape, CAD model or reference view at inference.

Four PACE examples, a bin, a helmet, a shoe and a plush toy, with boxes from ground truth, NOCS, HS-Pose, CPPF++, GenPose++ and UniPose9D; UniPose9D's boxes match the ground truth most closely.
PACE: ground truth, NOCS, HS-Pose, CPPF++, GenPose++ and UniPose9D.
What if the baselines train on the same four datasets?

Retraining GenPose++, SecondPose and CleanPose on the same mixture (“All-DS”), UniPose9D leads the jointly trained models on all four benchmarks. The NOCS-only SecondPose and CleanPose checkpoints keep a higher REAL275 score; that is a different training setting. SecondPose and CleanPose stay category-conditioned, and CleanPose needs a 190-category head for the combined taxonomy.

Unseen objects

Datasets and categories it never trained on

YCB-Video and HOPE are not in the training mixture: none of their object instances or scenes were seen. With RGB-D input, more than 91% of poses are within 2 cm and the median rotation error is about 4°. With RGB alone, depth comes from MoGe-2. Rotation stays usable (median 8.9° and 7.6°), but metric translation mostly fails (3.4% and 1.5% within 2 cm), because any error in the predicted depth scale goes straight into the translation; on HOPE, GenPose++ is slightly better on that one number.

Categories absent from training

A stricter test keeps only categories with no example in the four training datasets, such as the power drill and pitcher of YCB-Video or the ladle and whisk of HANDAL. (This says nothing about what the pretrained DINOv2 or MoGe-2 saw.)

Accuracy (%) with RGB-D input on categories that are absent from the pose-training mixture: both the rotation and the translation error must be below the thresholds.
DatasetUnseen categoriesExamples5° 2 cm5° 5 cm10° 2 cm10° 5 cm
YCB-Video53,54340.640.863.864.2
HOPE222564.964.985.886.7
Omni6D139,53015.626.420.332.3
HANDAL52556.064.060.076.0

Omni6D is a different dataset from Omni6DPose. Its baselines train on Omni6D and are tested on its 13 held-out categories; UniPose9D is evaluated zero-shot on the same split. It is ahead on box IoU (50.7 vs 36.9) and on every rotation and joint metric, while the trained baselines are more accurate on translation alone. On HANDAL, 25 examples from five unseen categories serve as a small diagnostic.

In the wild

Predicted boxes on a product photo of a chair, a glass in an illustration, a cup on a cluttered table and a bench in a bedroom photo.
RGB images with predicted depth, from very different sources: a product photo, an illustration and phone photos.
Analysis

What matters, what it costs, where it fails

On REAL275, removing the geometric PointNet features or replacing flow matching with plain regression costs the most. Predicting NOCS per point instead of per pair, dropping the pairwise scale calibration, or using plain RANSAC instead of the N-hop loop each lose a few points.

Speed

Estimating one object's pose takes 2.8 s on an RTX A6000 with the default 10,000 pairs, and most of that is flow sampling. With 3,000 pairs the REAL275 accuracy is the same and it takes about 1 s. Mask and depth prediction for RGB input are not included.

Where the 2.8 s go

Sensitivity

How the REAL275 score moves with the pair budget, the solver settings, and corrupted masks or depth.

Limitations

The model targets rigid indoor objects of moderate size and needs an instance mask. Its accuracy depends on the mask and the depth; with RGB input, errors of the predicted depth mainly hurt the metric translation. Flow sampling dominates the runtime, which limits uses that need frequent pose updates.

Two typical failures are shown on the right: under severe occlusion too few reliable correspondences remain, and very thin objects leave the box size and orientation ambiguous.

Failure cases: a heavily occluded brush on a chair with a wrong box, and a thin pen with an ambiguous box.
Failure cases. Left: severe occlusion. Right: a very thin object.
Live demo

Try it on your own image

The demo runs on Hugging Face Spaces: upload an image, mark the object with point prompts, and estimate its 9D pose. Depth and camera intrinsics are predicted when you only have RGB.

The demo is a separate app hosted by Hugging Face; it loads when you ask for it.

Open on Hugging Face
Code

Run it locally

  • Inference release with the checkpoint (Git LFS), a command-line tool and an interactive app.
  • Masks come from SAM2 with a point prompt, or from a text prompt through GroundingDINO.
  • Depth and intrinsics are optional: when missing, MoGe estimates them from the RGB image.
  • Licence: Apache 2.0. The curated training set is announced as coming soon.

UniPose9D builds on DINOv2, SAM2, GroundingDINO and MoGe, each under its own licence.

git clone https://github.com/qq456cvb/UniPose9D && cd UniPose9D
git lfs install
git lfs pull --include=checkpoints/last.ckpt
conda env create -f environment.yml
conda activate unipose9d
# the bundled example: RGB only, mask from a point prompt
python infer/unipose9d_inference.py \
  --rgb examples/desktop_scene/example.jpg \
  --sam2-point 540 430 1

# your own image, with a text prompt and sensor depth in mm
python infer/unipose9d_inference.py --rgb rgb.png \
  --sam2-text "object" --depth depth.npy --depth-scale 0.001

python infer/app_unipose9d_pose.py   # interactive app
Abstract
Read the full abstract

Object pose estimation is a fundamental problem in 3D vision. Although recent state-of-the-art approaches achieve strong performance, generalization to novel categories and unseen scenes remains challenging. We propose UniPose9D, a unified model for category-agnostic 9D object pose estimation: given an instance mask/ROI and either an RGB-D observation or an RGB image with predicted depth, the model estimates rotation, translation, and metric size without category labels, CAD models, mean-shape priors, or reference views. Specifically, UniPose9D samples point pairs from the observed object geometry and uses DINOv2 and PointNet features to predict NOCS coordinates for each pair. To improve accuracy, we introduce a point-pair-based RANSAC N-hop Kabsch–Umeyama algorithm with an adaptive threshold. We further employ flow matching to address symmetric ambiguities and construct a large-scale training set by curating and aligning pose annotations from existing public datasets. Experiments across eight datasets show that a single unified model achieves competitive performance on standard benchmarks while generalizing to unseen objects, unseen categories, and in-the-wild scenarios.

Cite

BibTeX

@misc{you2026unipose9duniversalcategoryagnosticobject,
  title={UniPose9D: Universal Category-Agnostic Object Pose Estimation},
  author={Yang You and Yi Du and Cole Harrison and Leonidas Guibas},
  year={2026},
  eprint={2607.09985},
  archivePrefix={arXiv},
  primaryClass={cs.CV},
  url={https://arxiv.org/abs/2607.09985}
}