pytorch3d旋转矩阵转四元数transforms.matrix_to_quaternion函数隐藏的大坑及其解决方法

这篇具有很好参考价值的文章主要介绍了pytorch3d旋转矩阵转四元数transforms.matrix_to_quaternion函数隐藏的大坑及其解决方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  在pytorch旋转矩阵转四元数及各种旋转表示方式之间的转换实现代码这篇博客里,我提到可以使用pytorch3d实现批量旋转表示方法之间的转换。但是最近在使用它的matrix_to_quaternion函数的时候,发现了一个隐藏的巨大bug:它不会确保输出的四元数中的那个实数w恒为正。这样就存在一个非常大的隐患,因为我们知道,对四元数中的所有数字同时取负,那么它所表示的旋转是不变的。也就是说,matrix_to_quaternion函数转换获得的四元数本身并没有错,但是它没有限制其中的实数w为正,这样就会在诸如我们需要使用四元数的二范数作为网络loss的时候,埋下巨大的隐患(毕竟如果同一个旋转量,一会是正一会是负,网络该信哪个?)。
  如下图所示,就是使用pytorch3d.transforms.matrix_to_quaternion函数将一个batch的旋转矩阵转化为四元数后的结果。按照官方解释,每个四元数的第一个数字为实部w,通常我们会规范实部为正数,而如下图所示的输出,很明显,它没有进行这一约束。
pytorch3d旋转矩阵转四元数transforms.matrix_to_quaternion函数隐藏的大坑及其解决方法,python,debug,pytorch,pytorch,3d,矩阵
  而当我们知道了这一bug以后,针对性的解决方法也比较简单,只需要对第一个数字是负的四元数取反即可,实现代码可参考如下:

neg_row_ids = torch.where(quats_gt[:,0]<0)
quats_gt[neg_row_ids] *= -1

  如下图所示,对输出的四元数tensor进行规范化,第一个数字就全部是正的了(使用的数据与上图不一样,仅展示效果用)。
pytorch3d旋转矩阵转四元数transforms.matrix_to_quaternion函数隐藏的大坑及其解决方法,python,debug,pytorch,pytorch,3d,矩阵文章来源地址https://www.toymoban.com/news/detail-546809.html

到了这里,关于pytorch3d旋转矩阵转四元数transforms.matrix_to_quaternion函数隐藏的大坑及其解决方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • PyTorch3D 安装记录

    PyTorch 官网:PyTorch 官网 最新版本的 PyTorch:最新版本的 PyTorch 以 cuda 11.3,Python 3.9,Pytorch 1.12.1 为例 直接使用 pip 安装 PyTorch3D 会提示错误 进入 Anaconda 官网找到 PyTorch3D :PyTorch3D Anaconda 官网 找到和 cuda 以及 Python 版本对应的 Pytorch3D 版本 ,找到正确的版本后,右键绿色的文件

    2024年02月14日
    浏览(46)
  • Windows安装Pytorch3d

    安装Visual Studio 2019 【我记得必须是2017-2019之间的版本,我一开始用的是2022的版本就安装不了】网址 pytorch和pytorch3d、cuda和NVIDIA CUB版本需要相互对应 pytorch和pytorch3d版本对应关系如下:https://github.com/facebookresearch/pytorch3d/releases cuda和NVIDIA CUB版本对应关系如下:https://github.com/

    2024年02月09日
    浏览(40)
  • 欧拉角,轴角,四元数与旋转矩阵详解

    入门小菜鸟,希望像做笔记记录自己学的东西,也希望能帮助到同样入门的人,更希望大佬们帮忙纠错啦~侵权立删。 目录 一、欧拉角 1、静态定义 2、欧拉角的表示  3、欧拉角表示的优缺点  4、欧拉角的万向节死锁(静态不存在万向锁的问题) 二、四元数 1、提出意义和定

    2024年01月17日
    浏览(46)
  • 四元数,旋转矩阵,欧拉角互转(python)

    运行代码之前需要安装pyquaternion和scipy。 pip install pyquaternion pip install scipy 代码之前放下面,main函数有使用的方式

    2024年02月12日
    浏览(45)
  • 四元数,欧拉角和旋转矩阵相互转换

    打印输出: 在线转换网站:1、三维在线旋转变换网站 https://www.andre-gaschler.com/rotationconverter/ 2、 Rotation Conversion Tool https://danceswithcode.net/engineeringnotes/quaternions/conversion_tool.html 3、角度、弧度在线转换工具 https://www.osgeo.cn/app/sc210 参考链接:https://www.jianshu.com/p/4fda4c34b829 https://

    2024年02月14日
    浏览(43)
  • 安装pytorch3d最简单方法

    安装pytorch3d踩了很多坑,现将最简单的方法公布如下: PyTorch3D的目标是帮助加速深度学习和3D交叉点的研究。3D数据比2D图像更复杂,在从事Mesh R-CNN和C3DPO等项目时,我们遇到了一些挑战,包括3D数据表示、批处理和速度。我们开发了许多有用的算子和抽象,用于3D深度学习,

    2023年04月09日
    浏览(38)
  • linux 安装pytorch3d的坑

    事实上,只要按照官方文档的说明就可以完美安装。其中坑的地方在于conda的管理可能会导致下载的版本 不符合你的要求 (例如下载成了cpu版本、下载的cuda版本)而同样尝试使用源码编译以及其他方式下载库都会导致同样的问题,这里主要的原因是由于python的版本不对以及

    2024年02月16日
    浏览(43)
  • win下配置pytorch3d

    你可能觉得pytorch3d 0.6.0版本有点低,但是折腾不如先配上用了,以后有需要再说。 (后话:py 3.9 + pytorch 1.12.1 + cuda 11.3_cudnn 8_0 + pytorch3d 0.7.1 + CUB 1.11.0 也OK的) 1.1 创建新环境 1.2 找之前的pytorch版本,我这里直接给出我的选择的版本 一行行复制粘贴运行下面的命令 1.3 下载对应

    2024年02月08日
    浏览(37)
  • Pytorch3d中的倒角损失函数Chamfer Distance Loss的用法(pytorch3d.loss.chamfer_distance)

    API文档在这里 源码在这里 之前看到的一个干货满满的Pytorch3D安装指导与简单例子的帖子在这里  官方tutorials中提到的用法在下面这个代码块里面,前面后面东西都挺多的就把和chamfer_distance相关的摘到了这里

    2024年02月15日
    浏览(49)
  • 转换矩阵、平移矩阵、旋转矩阵关系以及python实现旋转矩阵、四元数、欧拉角之间转换

    由于在平时总是或多或少的遇到平移旋转的问题,每次都是现查资料,然后查了忘,忘了继续查,这次弄明白之后干脆写一篇文章,给人方便同时于己方便,后续如有扩充或变动也方便添加。 假设有两个向量 a 1 = ( x 1 , y 1 , z 1 ) a_1 = (x_1, y_1, z_1) a 1 ​ = ( x 1 ​ , y 1 ​ , z 1 ​

    2024年02月03日
    浏览(79)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包