由于大多数现实环境是三维的,因此理想情况下,应针对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。
1 |
$ conda create --name kaolin python=3.6$ conda activate kaolin |
安装依赖项(numpy和Torch)。请注意,安装文件不会自动安装这些依赖项。
1 |
conda install numpy |
现在,您可以安装该库。从此存储库的根目录(即包含此自述文件的目录)中运行
1 |
$ python setup.py install |
在安装过程中,packman软件包管理器会将nv-usd软件包下载到〜/ packman-repo /,其中包含用于读取和写入通用场景描述(USD)文件的必要软件包。
验证安装
要验证是否已安装kaolin,请启动您的python解释器,然后执行以下命令。
1 |
>>> 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 ++分类器所需的代码:
1 2 3 4 5 |
import torchimport kaolin as kaldata = 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表示形式之间进行转换。尽管网格,点云和体素网格仍然是最流行的3D表示形式,但高岭土广泛支持符号距离函数(SDF),正交深度图(ODM)和RGB-D图像。
Kaolin将为加快3D DL研究的重要一步,但研发人员并不打算止于此。他们打算在Kaolin周边建立一个强大的开源社区,并欢迎其他3D深度学习研究人员和实践者的贡献。
论文地址:
https://arxiv.org/pdf/1911.05063.pdf
英伟达发布kaolin:一个用于加速3D深度学习研究的PyTorch库http://t.zijieimg.com/X2Fqq2/