目錄
坐標系
轉向角 (yaw) 的定義
框尺寸的定義
與支持的數據集的原始坐標系的關系
KITTI
Waymo
NuScenes
Lyft
ScanNet
SUN RGB-D
S3DIS
坐標系
坐標系 — MMDetection3D 1.4.0 文檔https://mmdetection3d.readthedocs.io/zh-cn/latest/user_guides/coord_sys_tutorial.html
- 相機坐標系 – 大多數相機的坐標系,在該坐標系中 y 軸正方向指向地面,x 軸正方向指向右側,z 軸正方向指向前方。
- 激光雷達坐標系 – 眾多激光雷達的坐標系,在該坐標系中 z 軸負方向指向地面,x 軸正方向指向前方,y 軸正方向指向左側。
- 深度坐標系 – VoteNet、H3DNet 等模型使用的坐標系,在該坐標系中 z 軸負方向指向地面,x 軸正方向指向右側,y 軸正方向指向前方。
三個坐標系的圖示如下:
上面三張圖是 3D 坐標系,下面三張圖是鳥瞰圖。以后我們將堅持使用本教程中定義的三個坐標系。
轉向角 (yaw) 的定義
在目標檢測中,我們選擇一個軸作為重力軸,并在垂直于重力軸的平面 $\Pi$ 上選取一個參考方向,那么參考方向的轉向角為 0,在上的其他方向有非零的轉向角,其角度取決于其與參考方向的角度。目前,對于所有支持的數據集,標注不包括俯仰角 (pitch) 和滾動角 (roll),這意味著我們在預測框和計算框之間的重疊時只需考慮轉向角 (yaw)。
在 MMDetection3D 中,所有坐標系都是右手坐標系,這意味著如果從重力軸的負方向(軸的正方向指向人眼)看,轉向角 (yaw) 沿著逆時針方向增加。
下圖顯示,在右手坐標系中,如果我們設定 x 軸正方向為參考方向,那么 y 軸正方向的轉向角 (yaw) 為。
z 上 y 前 (yaw=0.5*pi)^ ^| /| /| /|/ 左 (yaw=pi) ------ 0 ------> x 右 (yaw=0)
對于一個框來說,其轉向角 (yaw) 的值等于其方向減去一個參考方向。在 MMDetection3D 的所有三個坐標系中,參考方向總是 x 軸的正方向,而如果一個框的轉向角 (yaw) 為 0,則其方向被定義為與 x 軸平行。框的轉向角 (yaw) 的定義如下圖所示。
y 前^ 框的方向 (yaw=0.5*pi)/|\ ^| /|\| ____|____| | | || | | | __|____|____|____|______\ x 右| | | | /| | | || |____|____||
框尺寸的定義
框尺寸的定義與轉向角 (yaw) 的定義是分不開的。在上一節中,我們提到如果一個框的轉向角 (yaw) 為 0,它的方向就被定義為與 x 軸平行。那么自然地,一個框對應于 x 軸的尺寸應該是 $dx$。但是,這在某些數據集中并非總是如此(我們稍后會解決這個問題)。
下圖展示了 x 軸和,y 軸和
對應的含義。
y 前^ 框的方向 (yaw=0.5*pi)/|\ ^| /|\| ____|____| | | || | | | dx __|____|____|____|______\ x 右| | | | /| | | || |____|____|| dy
注意框的方向總是和 邊平行。
y 前^ _________/|\ | | || | | || | | | dy| |____|____|____\ 框的方向 (yaw=0)| | | | / __|____|____|____|_________\ x 右| | | | /| |____|____|| dx|
與支持的數據集的原始坐標系的關系
KITTI
KITTI數據集的原始標注是在相機坐標系下的,詳見?get_label_anno。在 MMDetection3D 中,為了在 KITTI 數據集上訓練基于激光雷達的模型,首先將數據從相機坐標系轉換到激光雷達坐標,詳見?get_ann_info。對于訓練基于視覺的模型,數據保持在相機坐標系不變。
在 SECOND 中,框的激光雷達坐標系定義如下(鳥瞰圖):
對于每個框來說,尺寸為 $(w, l, h)$,轉向角 (yaw) 的參考方向為 y 軸正方向。更多細節請參考代碼庫。
我們的激光雷達坐標系有兩處改變:
-
轉向角 (yaw) 被定義為右手而非左手,從而保持一致性;
-
框的尺寸為 $(l, w, h)$ 而非 $(w, l, h)$,由于在 KITTI 數據集中 $w$ 對應 $dy$,$l$ 對應 $dx$。
Waymo
我們使用 Waymo 數據集的 KITTI 格式數據。因此,在我們的實現中 KITTI 和 Waymo 也共用相同的坐標系。
NuScenes
NuScenes 提供了一個評估工具包,其中每個框都被包裝成一個?Box
?實例。Box
?的坐標系不同于我們的激光雷達坐標系,在?Box
?坐標系中,前兩個表示框尺寸的元素分別對應 $(dy, dx)$ 或者 $(w, l)$,和我們的表示方法相反。更多細節請參考 NuScenes?教程。讀者可以參考?NuScenes 開發工具,了解?NuScenes 框?的定義和?NuScenes 評估的過程。
Lyft
就涉及坐標系而言,Lyft 和 NuScenes 共用相同的數據格式。請參考官方網站獲取更多信息。
ScanNet
ScanNet 的原始數據不是點云而是網格,需要在我們的深度坐標系下進行采樣得到點云數據。對于 ScanNet 檢測任務,框的標注是軸對齊的,并且轉向角 (yaw) 始終是 0。因此,我們的深度坐標系中轉向角 (yaw) 的方向對 ScanNet 沒有影響。
SUN RGB-D
SUN RGB-D 的原始數據不是點云而是 RGB-D 圖像。我們通過反投影,可以得到每張圖像對應的點云,其在我們的深度坐標系下。但是,數據集的標注并不在我們的系統中,所以需要進行轉換。
將原始標注轉換為我們的深度坐標系下的標注的轉換過程請參考?sunrgbd_data_utils.py。
S3DIS
在我們的實現中,S3DIS 與 ScanNet 共用相同的坐標系。然而 S3DIS 是一個僅限于分割任務的數據集,因此沒有標注是坐標系敏感的。