英偉達發佈kaolin:一個用於加速3D深度學習研究的PyTorch庫

由於大多數現實環境是三維的,因此理想情況下,應針對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深度學習研究人員和實踐者的貢獻。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章