由於大多數現實環境是三維的,因此理想情況下,應針對3D數據訓練旨在分析視頻或現實環境中的完整任務的深度學習模型。諸如機器人,自動駕駛汽車,智能手機和其他設備之類的技術工具目前正在產生越來越多的3-D數據,最終可以由深度學習算法對其進行處理。
但是,到目前爲止,在如此大量的3D數據上訓練深度學習算法一直相對困難,因爲某些人工智能(AI)研究人員只能訪問必要的工具和平臺。爲了解決缺乏現成的工具的不足,NVIDIA的一個研究人員團隊最近創建了Kaolin,這是一個PyTorch開源庫,旨在推進和促進3-D深度學習研究。
目前,還沒有一個單一的開源軟件庫可以支持3-D數據的多種表示形式,多種任務和評估標準。” “我們決定通過創建第一個全面的3D深度學習庫Kaolin來彌補文獻中的這一空白。”
由Jatavallabhula和他的同事提出的PyTorch庫Kaolin包含各種工具,可用於構建可分析3-D數據的深度學習架構,這些架構既高效又易於使用。它還允許研究人員在用於訓練深度學習算法之前加載,預處理和操縱3D數據。
它包括多個圖形模塊,可編輯3D圖像,並具有渲染,照明,陰影和視圖變形等功能。此外,它支持廣泛的損失函數和評估指標,使研究人員可以輕鬆評估其深度學習算法。
功能性
當前,該版本包含多個處理功能,用於在網格,體素,有符號距離功能和點雲上進行3D深度學習。開箱即用地支持加載幾個流行的數據集(例如ShapeNet,ModelNet,SHREC)。我們還實現了幾種3D轉換和變換操作(在上述表示形式之內和之間)。
kaolin支持多種3D任務,例如:
- 可區分的渲染(請參見神經網格渲染器,其PyTorch端口,Soft Rasterizer,基於可區分插值的渲染器以及模塊化和可擴展的抽象DifferentiableRenderer規範)。
- 基於單圖像的網格重建(Pixel2Mesh,GEOMetrics,OccupancyNets等)
- Pointcloud分類和細分(PointNet,PoinNet ++,DGCNN ……)
- 網格分類和分割(MeshCNN,GCN)
- 三維像素網格上的3D超分辨率(ODM,VoxelUNet等)
- 基本的圖形實用程序(照明,陰影等)
模型動物園
kaolin策劃了一個大型模型動物園,其中包含流行的3D DL體系結構的參考實現。
注意:對於其中的某些模型,實現是由原始作者完成的。我們架起了通往圖書館的橋樑,並在可能的地方引入了優化。如果您使用模型動物園中的任何模型或圖形包(例如,可區分的渲染器,例如NMR,SoftRas,DIB-R),請引用高嶺土之外的原始論文。爲了方便起見,每種提供的模型的文檔中均包含了每篇原始論文的BibTeX引用格式。
支持平臺
在Linux平臺上受到正式支持,並已在Ubuntu 18上進行了構建和測試。Windows和Mac支持也將全面支持。
安裝kaolin
我們強烈建議在虛擬環境(例如使用conda或virtualenv創建的虛擬環境)中安裝高嶺土。Kaolin期望使用Python 3.6以上版本,並且當前需要使用支持CUDA的計算機(即安裝了nvcc的計算機)進行構建。
首先創建一個虛擬環境。在這個例子中,我們展示瞭如何創建一個conda虛擬環境來安裝kaolin。
$ conda create --name kaolin python=3.6
$ conda activate kaolin
安裝依賴項(numpy和Torch)。請注意,安裝文件不會自動安裝這些依賴項。
conda install numpy
現在,您可以安裝該庫。從此存儲庫的根目錄(即包含此自述文件的目錄)中運行
$ python setup.py install
在安裝過程中,packman軟件包管理器會將nv-usd軟件包下載到〜/ packman-repo /,其中包含用於讀取和寫入通用場景描述(USD)文件的必要軟件包。
驗證安裝
要驗證是否已安裝kaolin,請啓動您的python解釋器,然後執行以下命令。
>>> import kaolin as kal
>>> print(kal.__version__)
主要模塊
rep:支持的3D資產表示包括:三角形網格,四邊形網格,體素網格,點雲,符號距離函數(SDF)。
conversions:支持所有流行3D表示形式之間的轉換。
models:提供的型號包括以下。對於每個實現,我們還提供了指向其移植的原始實現的鏈接。
- DGCNN
- DIB-R
- GEOMetrics
- Image2Mesh
- Occupancy Network
- Pixel2Mesh
- PointNet
- PointNet++
- MeshEncoder
- GraphResNet:
- OccupancyNetworks
- MeshCNN
- VoxelGAN
- AtlasNet
- And many more to come!
演示
kaolin訓練3D DL模型變得簡單, 我們以5行代碼說明了訓練和測試用於汽車與飛機的PointNet ++分類器所需的代碼:
import torch
import kaolin as kal
data = torch.utils.data.DataLoader(kal.datasets.ShapeNet(...))
model = kal.models.PointNet2()
engile = kal.Engine()
engine.fit(model, data, ...)
engine.test()
支持的格式
- Polygon meshes
- Pointclouds
- Voxel grids
- Signed distance functions and level sets
- Depth images (2.5D)
kaolin提供了有效的PyTorch操作,可在3D表示形式之間進行轉換。論文或源碼數據集,關注“圖像算法”工衆號 回覆“kaolin”,儘管網格,點雲和體素網格仍然是最流行的3D表示形式,但高嶺土廣泛支持符號距離函數(SDF),正交深度圖(ODM)和RGB-D圖像。
Kaolin將爲加快3D DL研究的重要一步,但研發人員並不打算止於此。他們打算在Kaolin周邊建立一個強大的開源社區,並歡迎其他3D深度學習研究人員和實踐者的貢獻。