前言
今天要來看一篇 3D point cloud data augmentation 的論文,裡面的概念雖然很簡單,但可以把現有的 model performance 再往上推,就讓我們開始吧。
Motivation
2D 影像的物體偵測已經有很多 data augmentation 的方法,不過目前對於 3D object detection model 的相關方法還沒有太多研究,大多數人都是沿用 translation, random flipping, shifting, scaling and rotation 這些 2D 的方法。
但這麼做並沒有完全使用到 3D data 的特性,例如跟 2D image 比起來,3D bounding box 通常不會包含到背景的其他 noise,而且 3D bounding box 是有 parts 的 geometric features,例如車子的 3D bounding box 的四個角落通常就是輪子,所以如何利用這些 features 就是一個有趣的問題。
主要演算法
這篇論文把他們的方法簡稱為 PA-AUG(part-aware data augmentation),主要的概念就是把 ground truth bounding box 切成多份(在這篇論文中,他們把 pedestrian/clilist 都切成 4 parts,car 切成 8 parts),然後對每 part 都可以做獨立的 augmentation。
如此一來,就能做到更細緻的 augmentation。
然後關於每個 part 可以使用的 operation,總共有 5 種:
- Dropout:丟掉所有 point cloud
- Swap:跟同一 class 的 ground truth bounding box 互換 point cloud
- Mix:加上同一 class 的 ground truth bounding box 的 point cloud
- Sparse:讓 point cloud 變稀疏
- Noise:加上一些原本不存在的 noise point
其中各個 operation 的操作都很簡單,數學上的表示我就不說明了,有興趣了解細節的話,可以直接去看論文。
最後,PA-AUG 只是把這 5 種 operation 都拿來用(唯一要注意的地方是,因為 operation 順序會影響結果,例如先加上 noise 才做 sparsify 有點不合理,所以他們使用的順序是 Dropout-Swap-Mix-Sparse-Noise)。
實驗結果
了解演算法之後,大家最好奇的應該就是,現有的一些 3D object detection 方法加上 PA-AUG 的表現會變得如何:
從上面的 table 中可以看出 PointPillars 跟 PV-RCNN 的表現在 Car/Cyclist 這兩類都是有進步的,雖然進步的幅度不大,但是這演算法相對簡單,也只是在 training 時有額外的計算,我覺得算是值得使用。
另外他們也有做 ablation study,順便加上 robustness 的測試,去了解各 operation 的優缺點,robustness 測試的做法是把 KITTI dataset 裡面的 point cloud 做一些預處理,讓這些 data 變得更糟,來測試各種 data augmentation operation 分別可以幫助哪種情況(KITTI-D 是把一部分的 point cloud 直接 drop out,KITTI-S 是把 point cloud 變得更 sparse,KITTI-J 是會把 points 做些擾動,讓 point cloud 更亂):
而結果如下:
實驗結果也滿符合直覺,例如使用 dropout 在 KITTI-D 的表現上就會比較好。
總結
今天跟大家簡單介紹了 PA-AUG 這個 3D data augmentation 的演算法,方法簡單但有些幫助,如果有興趣使用的朋友可以點下面的延伸閱讀,直接參考他們的 code。