FaceBook开源PyTorch3D:基于PyTorch的新3D计算机视觉库

共 2619字,需浏览 6分钟

 ·

2022-08-01 02:10

点击上方小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达


PyTorch 进军三维计算机视觉了,专用库已出炉。


3D 计算机视觉是一个重要的课题,如何选择合适的框架进行计算,使得处理效果更好、更高效?近日,FaceBook 博客更新了一篇新的文章,介绍了团队开发的针对 3D 计算机视觉的框架——PyTorch3D。这是一个基于 PyTorch 的库,在 3D 建模,渲染等多方面处理操作上有更好的表现。

项目地址:https://github.com/facebookresearch/pytorch3d

基于 PyTorch 的 3D 计算机视觉处理库

据项目介绍,PyTorch3d 是一个高效、可复用的 3D 计算机视觉库。在这一项目中,开发者实现了以下新特性:

1. 他们提出了新的 3D 数据结构——Meshes,这种数据结构可以更好地存储和修改三角网格的数据;
2. 高效处理三角网格的算子,如投影变换、图卷积、采样、损失函数等;
3. 一个可微分的网格生成器;

由于是基于 PyTorch 的,这个框架主要面向的是深度学习方面的模型。项目目标是将 3D 计算机视觉和深度学习结合,用于对三维数据的预测和计算。在 PyTorch3D 中,所有的算子都:

1. 使用 PyTorch 的算子;
2. 可以使用异构的批数据;
3. 可微分;
4. 能够使用 GPU 加速;

这样一来,PyTorch3D 吸收了深度学习框架的优势,同时能够专门针对 3D 建模渲染等进行计算,有着很好的性能和应用优势。

主要特性

PyTorch3D 主要有三个值得注意的新特性,这些特性在 FaceBook 的博客中进行了介绍。

3D 网格数据的新格式:Meshes

由于三维网格包含顶点坐标以及面的索引这两者的集合,因此在批量处理不同尺寸的三维网格时会需要进行一些调整。为了解决这个问题,研究者们提出了 Meshes,一种在深度学习应用中可以批量处理异构网络的数据结构。

Mesh 的数据结构。

这种数据结构使得研究人员很容易将底层的网格数据转换为合适的格式,从而让相应的算子能够匹配到最高效的数据表示。Pytorch3D 为用户提供了在不同的表示视图间高效切换的方法,同时还可以获得不同数据表示的属性,具有很好的灵活性。

对 3D 数据的高效处理

团队已经完成了部分工作,如优化一些常用运算符、优化三维数据的损失函数,以及支持异构批数据输入等。

这说明,用户可以在 Pytorch3D 中直接导入这些算子,以便于更快的进行实验。这些算子包括倒角损失(chamfer loss),它是一种用于比较两组点云的方法,可以用作三维网格的损失函数。开发团队还使用 CUDA 内核为这个损失函数创建了一个算力资源密集型的最近邻计算优化方法。

通过对倒角损失等进行收敛,从而建模。

可微的图像渲染方法

将 3D 模型渲染为 2D 图像是这一领域的核心部分。这种渲染采用的思路是将 3D 的场景属性转换为 2D 图像的像素点信息。传统的渲染方法一般是不可微的,因此无法和深度学习结合。可微的渲染方法是一个新的研究领域,而研究者希望通过 PyTorch3D 来实现。

将 3D 模型转换为 2D 图像的过程。

在项目中,研究者采用了高效、模块化且可微的渲染器(renderer)。而且,这些都是可以扩展的,用户可以很容易地进行定制,比如在渲染的时候改变光影效果。而在计算密集的模型转像素点阶段,计算可以在 PyTorch、C++和 CUDA 上并行化,还能够全面地进行测试,验证其准确性。和其他 PyTorch3D 的算子一样,渲染器也是支持异构批量数据的。

使用教程

除了在博客中介绍了项目之外,项目研究者还提供了四个相关教程。

将球形点云分解为海豚: https://github.com/facebookresearch/pytorch3d/blob/master/docs/tutorials/deform_source_mesh_to_target_mesh.ipynb

渲染带有材质的点云:https://github.com/facebookresearch/pytorch3d/blob/master/docs/tutorials/render_textured_meshes.ipynb

 网格调整:https://github.com/facebookresearch/pytorch3d/blob/master/docs/tutorials/bundle_adjustment.ipynb

相机视角优化:https://github.com/facebookresearch/pytorch3d/blob/master/docs/tutorials/camera_position_optimization_with_differentiable_rendering.ipynb

好消息!

小白学视觉知识星球

开始面向外开放啦👇👇👇




下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲
小白学视觉公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲
小白学视觉公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群


欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~


浏览 19
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报