近年來,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 場景中,通過分類功能來識別對象(圖中識別出了椅子)。 3D 組件分割功能可以自動識別 3D 模型的不同組件,這使得「裝備」動畫角色或自定義模型以生成對象變體更加容易(圖左的 3D 模型在圖右穿上了衣服、鞋子等)。
 圖像到 3D(Image to 3D)功能可以根據訓練的神經網絡識別出的圖像來構建 3D 模型(圖右生成了椅子的 3D 模型)。 目前,英偉達推出的 beta 版 Kaolin 庫包含幾項處理功能,用于網格、體素、符號距離函數和點云上的 3D 深度學習。加載的幾個流行的數據集(如 ShapeNet、ModelNet 和 SHREC)支持開箱即用。此外,英偉達還實現了幾種 3D 遷移和轉換操作。可微渲染器(神經網格渲染器、軟光柵化器(Soft Rasterizer)、基于可微插值的渲染器以及模塊化和可擴展的抽象可微渲染器規范); 基于單張圖像的網格重建(如 Pixel2Mesh、GEOMetrics、OccupancyNets 等); 點云分類和分割(PointNet、PoinNet++、DGCNN 等); 網格分類和分割; 體素柵格的 3D 超分辨; 基本的圖像處理(如高光、暗影等)。 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/ repo:支持的 3D 資產表征包括三角網格、四邊形網格、體素柵格、點云和符號距離函數;DGCNN (https:///abs/1801.07829v1) DIB-R (https:///abs/1908.01210) GEOMetrics (https:///abs/1901.11461) Image2Mesh (https:///abs/1711.10669) Occupancy Network (https:///abs/1812.03828) Pixel2Mesh (https:///abs/1804.01654) PointNet (https:///abs/1612.00593) PointNet++ (https:///abs/1706.02413) MeshEncoder: A simple mesh encoder architecture. GraphResNet: MeshEncoder with residual connections. OccupancyNetworks (https:///abs/1812.03828) 其他 圖形:庫為構建可微渲染器提供了靈活的模塊化框架,使得單個組件易于實現替換。此外,Kaolin 庫還提供了以下可微渲染器的實現:DIB-R (https:///abs/1908.01210) SoftRas (https:///abs/1904.01786) Neural 3D Mesh Renderer (https:///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: Intersection Over Union (3D IoU), F-Score 參考鏈接:https://news.developer./kaolin-library-research-3d/?ncid=so-twit-97892#cid=nr01_so-twit_en-us
|