欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

pytorch3d 上手测试

程序员文章站 2022-07-13 09:15:17
...

前言

最近Facebook放出了PyTorch3D,用于3D Computer Vision research。尚不知都可以做些什么。最近正在做3D point cloud和mesh相关的处理,也有深度学习的东西,由于前两天nvidia的一个在线webinar,还有目前老板都对我推荐了这个,所以今天上手测试一下。

后记

测试完所有4个目前的tutorial之后,可以简单总结如下。PyTorch3D提供了一组batch模式下处理3D数据的package。针对以mesh形式描述的3D数据,PyTorch3D提供了mesh的表达,点sample,io,loss计算,render,和transform等功能。这些功能不单方便了处理3D mesh,同时由于引入了torch,运算可以直接在GPU上执行。PyTorch3D不单可用于tutorial中所列举的用途(多数是对少量参数进行优化),在针对3D的深度学习上,应该也会有现实用途,之后再慢慢探索。
关于点云,并没有特别的提及,可能是目前主要的目标是mesh,后期再探索点云相关的使用场景。

系统信息

测试的计算机运行Ubuntu 18.04 LTS,nvidia driver 440.64, cuda SDK 10.2 with cudnn7。Python 3.6.9 (Native python)
PyTorch3D采用的是20200313 commit 4d3c886。目前官方要求cuda 10.1,但是本机已然是10.2了,先这么着。
目前参考的PyTroch documentation在这里

准备与安装

首先整了一个virtualenv,称为p3pt3d

virtualenv -p /usr/bin/python3 p3pt3d

activate这个virtualenv然后开始安装我平时需要的package

pip install numpy scipy matplotlib==3.0.0 ipython numba pandas visdom plyfile scikit-image opencv-python opencv-contrib-python

接下来是jupyter,由于在运行PyTorch3D的官方教程时出现了一些错误,google了一下采用了如下措施

pip install jupyterlab ipywidgets
jupyter nbextension enable --py widgetsnbextension --sys-prefix

注意最后那个--sys-prefix是由于我正在使用virtualenv。上述的处理方案出自
https://github.com/tqdm/tqdm/issues/872
https://ipywidgets.readthedocs.io/en/latest/user_install.html

之后是torch

pip install torch torchvision

我选择以在本地编译源码的方式安装PyTorch3D,原因是这个项目目前还在发展阶段,肯定会有各种bug和快速迭代更新,可以通过自己pull源码来快速获得更新。从PyTorch3D的github页面复制repo的地址在本地clone。之后根据官方的install说明尝试安装。

pip install fvcore

然后在PyTorch3D源码文件夹内 (此时virtualenv是activate状态)

pip install -e .

等了一段时间,安装成功。

官方tutorial

目前在PyTorch3D的官方github页面上,有4个tutorial。

T1: Deform a sphere mesh to dolphin

这个tutorial的官方原始notebook文件在这里。在本机上测试是可以智行的。由于jupyter会报一些错误,于是都是手工复制了cell到本地的notebook去挨个执行的,本来也是要学习,所以一个个手工搞也没有啥不好。
这是deform之前和之后的mesh,用meshlab读入然后将目标mesh渲染为grid(红色),将deform过的mesh渲染为surface(灰色)。

pytorch3d 上手测试

T2: Bundle Adjustment

官方的notebook在这里

在本机上执行的结果和官网上的结果一模一样,话说并行计算时结果很多时候不都会有一点细微差异么,这个貌似没有。

pytorch3d 上手测试
这个tutorial中展示了PyTorch3D提供的一些package,例如

  • pytorch3d.transforms 提供了处理3D空间平移,旋转,quaternion,so(3)等所需要的工具。看API描述,大部分支持batch运算,尚未仔细测试。
  • pytorch3d.renderer 提供了处理位图,相机pose,光照,表面纹理,光影渲染等用途的工具。尚未仔细测试。

T3: Render a textured mesh

目前的官方notebook里,出现的几个牛的图片是重复的,实际上的运行效果是下图所示的样子。

pytorch3d 上手测试

值得注意的是render也是可以以batch方式运行的。

T4: Camera position optimization

这个tutorial展示了从nn.Module派生出优化对象,利用pytorch提供的优化方法直接进行优化。tutorial给出的初始值挺magical的,我测了几个别的初始值,都没有成功收敛到官方的结果。但是计算流程是顺利的。以后再琢磨了。

下图是以(-3.0, 6.9, 2.5)为初始相机位置开始的迭代结果,这个是得到了和官方tutorial一样的结果。

pytorch3d 上手测试

上一篇: TIDB安装

下一篇: 使用Docker安装TiDB