---
kind: concept
slug: oriented-3d-box-iou
title: Oriented 3D box IoU
summary: >-
  Intersection over union between two oriented 3D boxes, the metric behind 3D AP. The exact method clips the boxes against each other and takes the convex hull of the clipped points. Axis-aligned and ground-plane shortcuts drop tilt. Symmetric objects need a rotation search that the released evaluator does not run. One source card so far.
tags: [geometry, evaluation, 3d-object-detection]
papers: ["2012.09988"]
related: [object-detection, oriented-object-detection, perspective-n-point]
status: draft
updated_at: 2026-11-06
---

## Overview

3D detection and pose papers score a predicted box against a ground-truth box
with 3D intersection over union: the intersection volume divided by the union
volume [arxiv:2012.09988 §5.1]. The metric is invariant to scale and to rigid
transforms of both boxes [arxiv:2012.09988 §5.1]. The hard part is the
intersection. For boxes that can rotate in all directions, it is the volume of
a convex polyhedron, not a simple product of overlaps.

The core idea of the exact method is to clip each box's faces against the
other box, collect the points that survive, and take their convex hull as the
intersection [arxiv:2012.09988 §5.1]. Every variant on this page either keeps
that exact geometry or simplifies it by assuming something about the boxes.

## Variants

### Exact oriented IoU (polygon clipping and convex hull)

The approach described in the Objectron paper. Clip the faces of one box in the
frame of the other, repeat with the roles swapped, then take the convex hull of
the points that remain [arxiv:2012.09988 §5.1]. The paper calls this the exact
3D IoU for oriented boxes. Card: [Objectron](/papers/2012.09988).

### Symmetric-object rule

For objects that look the same under some rotation, such as cups and bottles,
the paper rotates the predicted box about its symmetry axis and keeps the
rotation that maximises IoU [arxiv:2012.09988 §5.1]. This is a rule layered on
top of the exact method, not a different metric. It is described in the paper
but not implemented in the released evaluator (see Contradictions).
Card: [Objectron](/papers/2012.09988).

### Monte Carlo estimate (released code only)

The released repository also contains a sampling-based IoU, with 10,000 samples
per box by default. The paper does not describe it, and the released evaluator
uses the exact method instead. Card notes: [Objectron, Paper vs code](/papers/2012.09988).
Use it only with your own accuracy check, because the paper gives no error
analysis for it.

### Simplifications the paper rejects

Two cheaper forms are named in the paper as too simple for oriented boxes
[arxiv:2012.09988 §5.1]:

- **Axis-aligned IoU**, which assumes both boxes are aligned with the axes.
- **Ground-plane IoU**, which projects the boxes onto the ground plane and
  assumes a shared height. Because of this, it removes roll and pitch.

Both are correct only when their assumption holds. Do not use them for
boxes that can tilt. Card: [Objectron](/papers/2012.09988).

## When to use which

| Situation | Use | Why |
|---|---|---|
| Boxes can tilt in roll or pitch, or rotate freely | Exact oriented IoU | The paper says the ground-plane form drops roll and pitch, and the axis-aligned form assumes no rotation [arxiv:2012.09988 §5.1]. |
| Boxes are axis-aligned by construction | Axis-aligned IoU | It matches the boxes' geometry. The paper's critique concerns oriented boxes [arxiv:2012.09988 §5.1]. |
| Symmetric objects (cups, bottles) in the evaluation | Exact IoU plus a rotation search over the symmetry axis | The paper describes this rule for these objects [arxiv:2012.09988 §5.1]. The released evaluator does not run it, so you must implement it and say so in your results. |
| Large-scale evaluation where exact clipping is too slow | Monte Carlo estimate (released code) | The released code uses it with 10,000 samples by default. The paper does not say how accurate it is, so measure the error on your own data. |
| Boxes in units other than metres | Convert to metres first | The released clipping tolerance is absolute (1e-6), and the dataset's boxes are metric [arxiv:2012.09988 §3.2]. |

Whatever the variant, report the threshold you used. The paper's headline
numbers are AP at a fixed 3D IoU threshold, and the paper reports them per
category [arxiv:2012.09988 tab. 2a]. Across nine categories, the MobilePose-style
baseline reaches 0.18 to 0.71 and the two-stage model 0.52 to 0.85
[arxiv:2012.09988 tab. 2a]. These are model results at 0.5 IoU, not properties of
the IoU itself.

## Implementation sketch

The exact method, as described in [arxiv:2012.09988 §5.1]. Fill in the helper
functions for your box representation. The empty-input guard is an
implementation choice and is not in the paper.

```pseudocode
# Exact IoU of two oriented 3D boxes  [arxiv:2012.09988 §5.1]
# Input:  boxes a, b, each with eight corners, metric units
# Output: IoU in [0, 1]

def oriented_iou(a, b):
    # Clip the faces of each box against the other, both ways  [§5.1]
    pts = clipped_points(a, b)
    pts += clipped_points(b, a)
    # Implementation guard, not from the paper: no points, no overlap
    if not pts:
        return 0.0
    # Intersection volume is the convex hull of the surviving points  [§5.1]
    inter = hull_volume(pts)
    # Union is the two box volumes minus the intersection  [§5.1]
    union = volume(a) + volume(b) - inter
    return inter / union


def clipped_points(moving, fixed):
    # Express the moving box in the frame of the fixed box  [§5.1]
    # Clip its faces against the fixed box and keep the surviving
    # corners of the moving box that lie inside it  [§5.1]
    # Return the points in world coordinates
    ...
```

Where variants differ: the symmetric-object rule wraps `oriented_iou` in a
search over rotations about the symmetry axis [arxiv:2012.09988 §5.1]. The
Monte Carlo estimate replaces the hull with sampled points inside both
boxes (released code only). The axis-aligned and ground-plane forms replace
the clipping with interval or plane tests and are not recommended for tilted
boxes [arxiv:2012.09988 §5.1].

## Contradictions

Only one paper has a card on this page, so there is no paper-against-paper
disagreement. There is a gap between the paper and its released code, reported
in the Objectron card:

- **Symmetric objects.** The paper describes a rotation search for cups and
  bottles [arxiv:2012.09988 §5.1]. The released evaluator scores the box as given,
  with no rotation search. Its only symmetry code computes a different metric,
  ADD-S [Objectron, Paper vs code](/papers/2012.09988).
- **Which IoU is used.** The paper describes the exact method. The released
  repository also has a Monte Carlo estimate, which the paper does not
  describe, and the evaluator uses the exact one [Objectron, Paper vs code](/papers/2012.09988).

## Papers

- [Objectron](/papers/2012.09988): proposes the exact 3D IoU for oriented boxes and the symmetric-object rule, and reports 3D-AP baselines on nine categories.
