影像轉換3D模型只需5行程式碼,英偉達推出3D深度學習工具Kaolin

機器之心發表於2019-11-16

近年來,3D 計算機視覺人工智慧兩個領域都取得了飛快的發展,但二者之間如何實現有效的結合還有很長的路要走。基於此,英偉達於今日推出了 Kaolin PyTorch 庫,藉助於這個庫,只需幾步即可將 3D 模型遷移至神經網路的應用範疇。

此外,Kaolin 庫還可以大大降低為深度學習準備 3D 模型的工作量,程式碼可由 300 行銳減到僅僅 5 行。

作為一個旨在加速 3D 深度學習研究的 PyTorch 庫,Kaolin 為用於深度學習系統中的可微 3D 模組提供了高效的實現。Kaolin 不僅能夠載入和預處理流行的 3D 資料集,而且具有操作網格、點雲、符號距離函式和體素柵格(voxel grid)的本地功能,因而可以減少編寫不必要的樣本程式碼。

Kaolin 庫包含渲染(rendering)、高光(lighting)、暗影(shading)和檢視合成(view warping)等幾種不同的圖形模組。此外,Kaolin 庫還支援一系列用於無縫銜接評價(seamless evaluation)的損失函式和評價度量,並提供視覺化功能來渲染 3D 效果。重要的是,英偉達建立了包含諸多當前最優 3D 深度學習架構的 model zoo,從而作為未來研究的起點。

此類工具可以使得機器人、自動駕駛、醫學成像和虛擬現實等諸多領域的研究者獲益。隨著人們對 3D 模型的興趣日益高漲,英偉達的 Kaolin 庫可以在該領域產生重大影響。線上儲存庫(repo)現已擁有很多 3D 資料集,這在一定程度上得益於世界各地所使用的、能夠捕獲 3D 影像的約 3000 萬個深度攝像頭。

GitHub 地址:https://github.com/NVIDIAGameWorks/kaolin/

那麼 Kaolin 庫的具體展示效果是怎樣的呢?英偉達給出了以下幾個實際應用示例:

影像轉換3D模型只需5行程式碼,英偉達推出3D深度學習工具Kaolin

在 3D 場景中,透過分類功能來識別物件(圖中識別出了椅子)。

影像轉換3D模型只需5行程式碼,英偉達推出3D深度學習工具Kaolin

3D 元件分割功能可以自動識別 3D 模型的不同元件,這使得「裝備」動畫角色或自定義模型以生成物件變體更加容易(圖左的 3D 模型在圖右穿上了衣服、鞋子等)。

影像轉換3D模型只需5行程式碼,英偉達推出3D深度學習工具Kaolin

影像到 3D(Image to 3D)功能可以根據訓練的神經網路識別出的影像來構建 3D 模型(圖右生成了椅子的 3D 模型)。

目前,英偉達推出的 beta 版 Kaolin 庫包含幾項處理功能,用於網格、體素、符號距離函式和點雲上的 3D 深度學習。載入的幾個流行的資料集(如 ShapeNet、ModelNet 和 SHREC)支援開箱即用。此外,英偉達還實現了幾種 3D 遷移和轉換操作。

Kaolin 庫支援的 3D 任務如下:

  • 可微渲染器(神經網格渲染器、軟光柵化器(Soft Rasterizer)、基於可微插值的渲染器以及模組化和可擴充套件的抽象可微渲染器規範);

  • 基於單張影像的網格重建(如 Pixel2Mesh、GEOMetrics、OccupancyNets 等);

  • 點雲分類和分割(PointNet、PoinNet++、DGCNN 等);

  • 網格分類和分割;

  • 體素柵格的 3D 超分辨;

  • 基本的影像處理(如高光、暗影等)。

Kaolin 庫的安裝與使用

支援的平臺

Kaolin 已經獲得了 Linux 平臺的官方支援,並已在 Ubuntu 18 上進行構建和測試。Windows 和 Mac 平臺上也應考慮展開試驗性的支援。

安裝步驟

英偉達推薦使用者在虛擬環境中安裝 Kaolin 庫(如利用 conda 或 virtualenv 建立的虛擬環境)。Kaolin 要求 Python 版本在 3.6 以上,並且目前在構建時需要啟用 CUDA 的機器(即需要安裝 nvcc)。

首先建立一個虛擬環境。下例展示瞭如何為建立安裝 Kaolin 庫所需要的 conda 虛擬環境:

$ conda create --name kaolin python=3.6 $ conda activate kaolin

接著安裝相關依賴(numpy 和 torch)。注意,設定檔案並不能自動安裝這兩種依賴。

conda install numpy

然後安裝 Pytorch,這樣就可以安裝 Kaolin 庫了。最後根據 repo 的根目錄(即包含 README 檔案的目錄),執行:

$ python setup.py install

在安裝過程中,packman 包管理器將 nv-usd 包下載到~/packman-repo/中,後者包含閱讀和編寫通用場景描述(Universal Scene Description,USD)檔案的必要包。

驗證安裝

為了驗證是否安裝完成 Kaolin 庫,使用者可以啟動 python 直譯器,並執行以下命令:

>>>import kaolin as kal>>> print(kal.__version)

建立文件

為深入研究 Kaolin 庫,使用者可以建立文件。根據 repo 的根目錄(即包含 README 檔案的目錄),執行以下命令:

$ cd docs $ sphinx-build . _build

執行單元測試

為執行單元測試,使用者可根據 repo 的根目錄(即包含 README 檔案的目錄)執行以下命令:

$ pytest tests/

Kaolin 庫的主要功能模組

repo:支援的 3D 資產表徵包括三角網格、四邊形網格、體素柵格、點雲和符號距離函式;

轉換:支援所有流行 3D 表徵的轉換;

實現的模型包括:

  • DGCNN (https://arxiv.org/abs/1801.07829v1)

  • DIB-R (https://arxiv.org/abs/1908.01210)

  • GEOMetrics (https://arxiv.org/abs/1901.11461)

  • Image2Mesh (https://arxiv.org/abs/1711.10669)

  • Occupancy Network (https://arxiv.org/abs/1812.03828)

  • Pixel2Mesh (https://arxiv.org/abs/1804.01654)

  • PointNet (https://arxiv.org/abs/1612.00593)

  • PointNet++ (https://arxiv.org/abs/1706.02413)

  • MeshEncoder: A simple mesh encoder architecture.

  • GraphResNet: MeshEncoder with residual connections.

  • OccupancyNetworks (https://arxiv.org/abs/1812.03828)

  • 其他

圖形:庫為構建可微渲染器提供了靈活的模組化框架,使得單個元件易於實現替換。此外,Kaolin 庫還提供了以下可微渲染器的實現:

  • DIB-R (https://arxiv.org/abs/1908.01210)

  • SoftRas (https://arxiv.org/abs/1904.01786)

  • Neural 3D Mesh Renderer (https://arxiv.org/abs/1711.07566)

度量:實現的度量和損失函式如下:

  • Mesh: Triangle Distance, Chamfer Distance, Edge Length regularization, Laplacian regularization, Point to Surface distance, Normal consistency

  • Point Cloud: Sided Distance, Chamfer Distance, Directed Distance

  • Voxel Grid: Interp Over Union (3D IoU), F-Score

參考連結:https://news.developer.nvidia.com/kaolin-library-research-3d/?ncid=so-twit-97892#cid=nr01_so-twit_en-us

相關文章