在過去的幾年中,三維感測器(如鐳射雷達、深度感應相機)得到了迅猛的發展和普及。這也帶來了一種新的需求,對三維資料(即三維場景獲取到的資料)的分析與理解,比如分析下圖這樣一個三維空間的資料。
這樣的三維資料分析技術,可以為自動駕駛、機器人、虛擬現實等帶有三維感測器的系統提供強而有力的支援。
在計算機視覺領域,學者們和從業人員已經開始了相應的研究,包括移動三維物體識別、透明物體識別等等。然而,針對三維資料分析的工具,卻仍舊非常的缺乏。
為了支援對三維空間資料的分析與理解,降低這一領域研究的難度,谷歌AI研究組釋出了名為TensorFlow 3D (縮寫為TF 3D)的庫。這是一個高度模組化並且高效的機器學習庫,專門為三維資料分析而設計。
TF 3D可以提供一系列的操作,包括基礎的損失函式、資料處理工具、神經網路模型等等,用於支援對三維資料的分析。
與此同時,TF 3D還包括了三維資料訓練和測試的模組,支援但不限於三維物體識別(3D object detection)、三維語義分割(3D semantic segmentation)、三維例項分割(instance segmentation)。同時,它還可以支援分散式的機器學習。
二維示例:(a)分類,(b)物體識別,(c)語義分割,(d)例項分割。https://arxiv.org/abs/1704.06857
TF 3D 提供了多個用於訓練和測試的三維資料集,包括Waymo Open, ScanNet, and Rio。它也可以輔助使用者,將其他的資料集轉換為TF 3D所支援的格式。
左:三維物體識別,右:三維例項分割。
三維稀疏卷積神經網路(3D Sparse Convolutional Network)這是針對三維資料處理,目前最有效的方法。
具體來講,三維感測器獲取的三維資料,往往包括一個三維空間的資料。在這個空間裡,有一些物品(如汽車、行人),也有很多空餘的空間。這些空餘空間的資料,往往是我們不感興趣的。
也就是說,三維資料往往是自身稀疏的(sparse),即有很多資料是無意義的。針對這樣的稀疏三維資料,使用傳統的卷積神經網路,往往會帶來很大的計算消耗和記憶體需求。
因此,TF 3D使用了針對三維資料的稀疏卷積神經網路,以及相應的其他技術支援,來提高計算和記憶體使用效率。同時,TF 3D為使用者提供了多種計算框架,來提升計算速度。
TF 3D使用三維稀疏U-Net架構,來提取每個單位體積的特徵。這一架構可以同時獲取三維影象高層次(更概括)和低層次(更細緻)的特徵,並透過這些特徵共同推測或分類。
U-Net架構
三維語義分割三維語義分割,輸出每個體積元素的語義評分(semantic scores),這個語義評分會被用來推測每個體積元素的語義標記,即每個體積元素對應的物品是什麼。
三維語義分割:只區分物品種類,但不區別這類物品的不同個體。
三維例項分割在三維語義分割的基礎上,三維例項分割,需要將屬於同一物品的畫素組合起來,也就是說,需要區分不同畫素是否屬於同一個物品。
TF 3D中的三維例項分割演算法,是基於先前tensorflow中的二維影象分割的方法。
主要想法是,針對每個體積元素,推測一個例項嵌入向量(instance embedding vector),以及一個語義評分。這個例項嵌入向量,可以對映體積元素到嵌入空間(space),在這個嵌入空間中,指向相同物品的體積元素相鄰,而指向不同物品的體積元素相距很遠。
在推斷階段,使用貪婪演算法,來推測每個體積元素對應的例項,並根據體積元素之間的距離,來將它們聚合成例項。
三維例項分割:在區分物品種類的基礎上,進一步區分同類物品的不同個體。
三維物體識別三維物體識別模型,推測每個體積元素的中心、大小、方向以及物體語義評分(object semantic scores)。在推斷階段,成千上萬的對體積元素的推測,會被歸納為若干個以框架(如長方體)為單位的推測。在訓練階段,損失函式被定義為,在每個框架中,所有體積元素的推測結果和實際結果的區別。
三維物體識別:識別物體的種類、大小、方向、中心,用框架標記。
參考文獻:
A. Fathi, and R. Huang, "3D Scene Understanding with TensorFlow 3D", https://ai.googleblog.com/2021/02/3d-scene-understanding-with-tensorflow.html, accessed on Feb. 14, 2021.A. Garcia-Garcia, S. Orts-Escolano, S. Oprea, V. Villena-Martinez, J. Garcia-Rodriguez, "A Review on Deep Learning Techniques Applied to Semantic Segmentation", https://arxiv.org/abs/1704.06857.