Skip to main content

3D Occupancy Prediction

3D Occupancy Prediction は、3D 空間を voxel や grid に分割し、各 cell が occupied、free、unknown、または semantic class に属するかを推定する task です。

Occupancy とは何か

Occupancy は、「その空間セルに物体が存在するか」を表します。

O(x,y,z){free,occupied,unknown}O(x, y, z) \in \{\text{free}, \text{occupied}, \text{unknown}\}

Semantic occupancy では、occupied cell に class label も付けます。

なぜ重要か

Autonomous driving や robotics では、object detection だけでは足りません。未知 object、debris、動物、工事物など、検出 class にないものでも、空間を占有していれば避ける必要があります。

Occupancy は planning に直接使える representation です。

BEV occupancy と 3D occupancy

BEV occupancy は top-down plane 上の occupancy を扱います。3D occupancy は高さ方向も含めます。自動運転では、橋、トンネル、歩道橋、坂道、障害物の高さを扱うため、3D occupancy が重要です。

数式で見る semantic occupancy の出力と loss

3D Occupancy Prediction は、ego 周りの voxel grid V\mathcal{V} の各 voxel v\mathbf{v} に対して、空きか占有か、占有ならばどの semantic class かを予測する task です。出力は class 確率分布です。

pθ(cv,I1:N)p_\theta(c\mid \mathbf{v},I_{1:N})

Voxel-wise cross-entropy loss は次の通りです。

Locc=vcyv,clogpθ(cv,I1:N)\mathcal{L}_{\mathrm{occ}} =-\sum_{\mathbf{v}}\sum_c y_{\mathbf{v},c}\log p_\theta(c\mid \mathbf{v},I_{1:N})

評価では voxel ごとの IoU をクラスごとに集計し、平均します。

mIoU=1CcTPcTPc+FPc+FNc\mathrm{mIoU}=\frac{1}{|C|}\sum_c \frac{TP_c}{TP_c+FP_c+FN_c}

Class 不均衡が大きい場合は、frequency-weighted loss や Lovasz loss を組み合わせることがあります。たとえば inverse frequency weight wc1/freq(c)w_c\propto 1/\mathrm{freq}(c) を使うと、希少 class の影響を強められます。

この式の気持ちは、「画像から見える 2D 平面の semantic segmentation を、自車周りの 3D 空間全体へ拡張し、見えない / 隠れた領域も含めて占有と semantic を割り当てる」というものです。Occupancy は object detection と semantic segmentation の中間にあり、bounding box では表せない複雑な形状や薄い構造を扱えるという利点があります。

関連ページ

主なソース