魚羊 發自 麥蒿寺
量子位 報道 | 公眾號 QbitAI
現在,你的神經網絡可以更輕鬆地和 3D 數據搭配使用了。
Facebook AI 已經推出了用於 3D 深度學習的開源工具包,PyTorch3D。
顧名思義,PyTorch3D 是一個基於 PyTorch 的高度模塊化,且經過優化的庫。旨在通過 PyTorch 簡化 3D 深度學習。
PyTorch3D 帶有常用的 3D 運算符和用於 3D 數據的損失函數,以及模塊化可微渲染API。
作為版本的一部分,Facebook 同時還開源了 Mesh R-CNN,一個能夠對照片中的 2D 物體進行 3D 建模的神經網絡模型。
並且,Facebook 把 PyTorch3D 與 2D 識別庫 Detectron2 結合在了一起,將對物體的理解進一步推向三維。
那麼,就一起來看看 PyTorch3D 是怎樣讓 3D 深度學習變更快更靈活的。
PyTorch3D:更快、更靈活的 3D 深度學習研究
與可以用簡單張量表示的 2D 圖像相比,3D 數據輸入更加複雜,內存需求和計算需求也相對較高。
此外,3D 運算也必須是可微分的,如此,梯度才能從模型輸出返回到輸入,通過系統反向傳播。
針對這些問題,PyTorch3D 通過提供批處理功能,以及對 3D 運算符和損失函數的支持,來優化訓練和推理過程。
其主要的新增特性有以下三點。
1. 新數據結構:Meshes
3D 網格是頂點座標和麵索引的集合。為了更好地對其進行處理,Facebook 提出了新的數據結構Meshes。
Meshes 對象代表一批三角網格,每個 mesh 可以有不同數量的頂點或面。可以用於存儲與網格有關的數據,比如面法線、面區域和紋理等。
這樣的數據結構讓用戶可以更輕鬆地將底層網格數據轉換為不同的視圖,從而使運算符和最高效的數據表示相匹配。
2. 高效處理三角網格
那麼,要怎樣讓一個 mesh 變形為目標形狀呢?
在 PyTorch3D 中,Facebook 實現了通用運算符、3D 數據損失函數的優化,且支持異構批數據的輸入。
用戶可以在 PyTorch3D 中直接導入這些運算符,快速開始實驗。
3. 可微分網格渲染器(renderer)
渲染是將 3D 模型轉換為 2D 圖像的核心。
傳統的渲染方法是不可微的,因此無法和深度學習相結合。
為了能夠訪問到下游應用程序所需的各種中間值,在 PyTorch3D 中,研究人員編寫了一個模塊化微分渲染器。
渲染器由可組合單元構成,具有擴展性,因此用戶可以輕鬆實現自定義,比如在渲染時改變照明、陰影效果。
計算量較大的柵格化步驟可以在 PyTorch、C++和 CUDA 中並行實現。
同樣,依靠 Mesh 數據格式,渲染器也支持異構批量數據。
Facebook 表示,推出 PyTorch3D 是為了推動「深度學習 + 3D」的研究。
憑藉可微渲染功能,無需耗時的手動 3D 註釋,就可能構建高質量的 3D 預測系統。
研究人員也能夠更為輕鬆地渲染出 AR、VR 中的 3D 對象和場景。
在機器人、自動駕駛感知研究當中,PyTorch3D 無疑將成為新的助力。
傳送門
Facebook AI 博客:https://ai.facebook.com/blog/-introducing-pytorch3d-an-open-source-library-for-3d-deep-learning/
PyTorch3D 項目:https://github.com/facebookresearch/pytorch3d
Mesh R-CNN 項目:https://github.com/facebookresearch/meshrcnn
— 完 —
量子位 QbitAI · 頭條號簽約作者
關注我們,第一時間獲知前沿科技動態