近年来,无论是3D计算机视觉领域还是人工智能领域,都让快速发展任重而道远。基于此,Nvidia今天推出了KaolinPyTorch库,借助这个库,只需几步就可以将3D模型迁移到神经网络的应用领域。此外,Kaolin库还可以大大减少为深度学习准备3D模型的工作量,代码可以从300行减少到只有5行。作为旨在加速3D深度学习研究的PyTorch库,Kaolin提供深度学习系统中使用的可微分3D模块的高效实现。Kaolin不仅加载和预处理流行的3D数据集,而且还具有用于操纵网格、点云、符号距离函数和体素网格的本机函数,从而减少了不必要的样板代码。Kaolin库包含几个不同的图形模块,用于渲染、照明、着色和视图变形。此外,Kaolin库还支持一系列损失函数和评估指标进行无缝评估,并提供可视化功能来渲染3D效果。重要的是,NVIDIA创建了一个模型动物园,其中包含许多最先进的3D深度学习架构,作为未来研究的起点。这些工具可以使机器人、自动驾驶、医学成像和虚拟现实等不同领域的研究人员受益。随着人们对3D模型的兴趣越来越大,Nvidia的Kaolin库可能会在该领域产生重大影响。在线存储库(repos)已经拥有许多3D数据集,这在一定程度上要归功于全球使用的约3000万台能够捕捉3D图像的深度相机。GitHub地址:https://github.com/NVIDIAGameWorks/kaolin/那么Kaolin库的具体显示效果是怎样的呢?Nvidia给出了以下实际应用的例子:在3D场景中,通过分类功能识别物体(图中识别出椅子)3D组件分割功能可以自动识别3D模型的不同组件,这使得“装备”成为可能”动画人物或自定义模型更容易生成物体变体(图片中左边的3D模型,右边的衣服,鞋子等)图像转3D(Imageto3D)功能可以从识别的图像构建3D训练好的神经网络模型(右侧生成了椅子的3D模型)目前,Nvidia推出的Kaolin库的测试版包含了meshes、voxels、signeddistancefunctions、point等3D深度学习的几个处理函数云。开箱即用地支持加载的几个流行数据集,例如ShapeNet、ModelNet和SHREC。此外,Nvidia还实施了多项3D迁移和转换操作。Kaolin库支持的3D任务有:可微分渲染器(神经网格渲染器、软光栅化器(SoftRasterizer)、基于可微分插值的渲染器以及模块化和可扩展的抽象可微分渲染器规范);基于单幅图??像的网格重建(如Pixel2Mesh、GEOMetrics、OccupancyNets等);点云分类与分割(PointNet、PoinNet++、DGCNN等);网格分类和分割;体素网格的3D超分辨率;基本图像处理(如高光、阴影等)。Kaolin库安装使用支持平台Kaolin已经在Linux平台上得到官方支持,并在Ubuntu18上进行了搭建和测试。在Windows和Mac平台上也应该考虑实验支持。安装步骤NVIDIA建议用户在虚拟环境中安装Kaolin库(例如使用conda或virtualenv创建的虚拟环境)。Kaolin需要Python3.6或更高版本,目前在构建时需要一台支持CUDA的机器(即需要安装nvcc)。首先创建一个虚拟环境。下面的例子展示了如何创建安装Kaolin库所需的conda虚拟环境:$condacreate--namekaolinpython=3.6$condaactivatekaolin,然后安装相关依赖(numpy和torch)。请注意,设置文件不会自动安装这两个依赖项。condainstallnumpy然后安装Pytorch,以便可以安装Kaolin库。最后,根据repo的根目录(即包含README文件的目录),运行:$pythonsetup.pyinstall在安装过程中,packman包管理器将nv-usd包下载到~/packman-repo/,其中包含用于编写通用场景描述(USD)文件的读取和必要包。验证安装为了验证是否安装了Kaolin库,用户可以启动python解释器并执行以下命令:>>>importkaolinaskal>>>print(kal.__version)创建文档要深入研究Kaolin库,用户可以创建文档。根据repo的根目录(即包含README文件的目录),执行如下命令:$cddocs$sphinx-build._build要运行单元测试,用户可以根据repo的根目录执行repo(即包含README文件的目录)以下命令:$pytesttests/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)占用网络(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:一个简单的网格编码器架构。GraphResNet:具有剩余连接的MeshEncoder。OccupancyNetworks(https://arxiv.org/abs/1812.03828)其他图形:该库提供了一个灵活的模块化框架,用于构建可区分的渲染器,使各个组件易于实现可替换。此外,Kaolin库提供以下可微分渲染器的实现:DIB-R(https://arxiv.org/abs/1908.01210)SoftRas(https://arxiv.org/abs/1904.01786)神经3D网格渲染器(https://arxiv.org/abs/1711.07566)Metrics:实现的metrics和损失函数如下:Mesh:TriangleDistance,ChamferDistance,EdgeLengthregularization,Laplacianregularization,PointtoSurfacedistance,NormalconsistencyPointCloud:SidedDistance,Chamfer距离、有向距离体素网格:并集交集(3DIoU)、F-Score
