You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Summary: A small fix for the iou3d note
Reviewed By: bottler
Differential Revision: D31370686
fbshipit-source-id: 6c97302b5c78de52915f31be70f234179c4b246d
Copy file name to clipboardExpand all lines: docs/notes/iou3d.md
+6-6Lines changed: 6 additions & 6 deletions
Original file line number
Diff line number
Diff line change
@@ -16,7 +16,7 @@ In 2D, IoU is commonly applied to axis-aligned boxes, namely boxes with edges pa
16
16
In 3D, boxes are usually not axis aligned and can be oriented in any way in the world.
17
17
We introduce a new algorithm which computes the *exact* IoU of two *oriented 3D boxes*.
18
18
19
-
Our algorithm is based on the simple observation that the intersection of two oriented boxes, `box1` and `box2`, is a convex n-gon with `n > 2` comprised of connected *planar units*.
19
+
Our algorithm is based on the simple observation that the intersection of two oriented 3D boxes, `box1` and `box2`, is a convex polyhedron (convex n-gon in 2D) with `n > 2` comprised of connected *planar units*.
20
20
In 3D, these planar units are 3D triangular faces.
21
21
In 2D, they are 2D edges.
22
22
Each planar unit belongs strictly to either `box1` or `box2`.
@@ -46,12 +46,12 @@ The intersection shape is formed by the convex hull from the intersection points
46
46
47
47
Our algorithm has several advantages over Objectron's:
48
48
49
-
1. Our algorithm also computes the points of intersection, similar to Objectron, but in addition stores the *planar units* the points belong to. This eliminates the need for convex hull computation which is `O(nlogn)` and relies on a third party library which often crashes with nondescript error messages.
50
-
2. Objectron's implementation assumes that boxes are a rotation away from axis aligned. Our algorithm and implementation makes no such assumption and works for any 3D boxes.
51
-
3. Our implementation supports batching, unlike Objectron which assumes single element inputs for `box1` and `box2`.
52
-
4. Our implementation is easily parallelizable and in fact we provide a custom C++/CUDA implementation which is **450 times faster than Objectron**.
49
+
* Our algorithm also computes the points of intersection, similar to Objectron, but in addition stores the *planar units* the points belong to. This eliminates the need for convex hull computation which is `O(nlogn)` and relies on a third party library which often crashes with nondescript error messages.
50
+
* Objectron's implementation assumes that boxes are a rotation away from axis aligned. Our algorithm and implementation make no such assumption and work for any 3D boxes.
51
+
* Our implementation supports batching, unlike Objectron which assumes single element inputs for `box1` and `box2`.
52
+
* Our implementation is easily parallelizable and in fact we provide a custom C++/CUDA implementation which is **450 times faster than Objectron**.
53
53
54
-
Below we compare the performance for Objectron (in C++) and our algorithm, in C++ and CUDA. We benchmark for a common use case in object detection where `boxes1` hold M predictions and `boxes2` hold N ground truth 3D boxes in an image. We compute the `MxN` IoU matrix and report the time in ms for `M=N=16`.
54
+
Below we compare the performance for Objectron (in C++) and our algorithm, in C++ and CUDA. We benchmark for a common use case in object detection where `boxes1` hold M predictions and `boxes2` hold N ground truth 3D boxes in an image and compute the `MxN` IoU matrix. We report the time in ms for `M=N=16`.
0 commit comments