git《Tangent Space Backpropogation for 3D Transformation Groups》(CVPR 2021) GitHub:1]

Overview

LieTorch: Tangent Space Backpropagation

Introduction

The LieTorch library generalizes PyTorch to 3D transformation groups. Just as torch.Tensor is a multi-dimensional matrix of scalar elements, lietorch.SE3 is a multi-dimensional matrix of SE3 elements. We support common tensor manipulations such as indexing, reshaping, and broadcasting. Group operations can be composed into computation graphs and backpropagation is automatically peformed in the tangent space of each element. For more details, please see our paper:

Tangent Space Backpropagation for 3D Transformation Groups
Zachary Teed and Jia Deng, CVPR 2021

@inproceedings{teed2021tangent,
  title={Tangent Space Backpropagation for 3D Transformation Groups},
  author={Teed, Zachary and Deng, Jia},
  booktitle={Conference on Computer Vision and Pattern Recognition},
  year={2021},
}

Installation

Requirements:

  • Cuda >= 10.1 (with nvcc compiler)
  • PyTorch >= 1.6

We recommend installing within a virtual enviornment. Make sure you clone using the --recursive flag. If you are using Anaconda, the following command can be used to install all dependencies

git clone --recursive https://github.com/princeton-vl/lietorch.git
cd lietorch

conda create -n lie_env
conda activate lie_env
conda install scipy pyyaml pytorch torchvision torchaudio cudatoolkit=10.2 -c pytorch

To run the examples, you will need OpenCV and Open3D. Depending on your operating system, OpenCV and Open3D can either be installed with pip or may need to be built from source

pip install opencv-python open3d

Installing:

Clone the repo using the --recursive flag and install using setup.py (may take up to 10 minutes)

git clone --recursive https://github.com/princeton-vl/lietorch.git
python setup.py install
./run_tests.sh

Overview

LieTorch currently supports the 3D transformation groups.

Group Dimension Action
SO3 3 rotation
RxSO3 4 rotation + scaling
SE3 6 rotation + translation
Sim3 7 rotation + translation + scaling

Each group supports the following operations:

Operation Map Description
exp g -> G exponential map
log G -> g logarithm map
inv G -> G group inverse
mul G x G -> G group multiplication
adj G x g -> g adjoint
adjT G x g*-> g* dual adjoint
act G x R3 -> R3 action on point (set)
act4 G x P3 -> P3 action on homogeneous point (set)

 

Simple Example:

Compute the angles between all pairs of rotation matrices

import torch
from lietorch import SO3

phi = torch.randn(8000, 3, device='cuda', requires_grad=True)
R = SO3.exp(phi)

# relative rotation matrix, SO3 ^ {100 x 100}
dR = R[:,None].inv() * R[None,:]

# 100x100 matrix of angles
ang = dR.log().norm(dim=-1)

# backpropogation in tangent space
loss = ang.sum()
loss.backward()

Examples

We provide real use cases in the examples directory

  1. Pose Graph Optimization
  2. Deep SE3/Sim3 Registrtion
  3. RGB-D SLAM / VO

Acknowledgements

Many of the Lie Group implementations are adapted from Sophus.

Comments
  • RuntimeError: CUDA error: no kernel image is available for execution on the device

    RuntimeError: CUDA error: no kernel image is available for execution on the device

    Thanks for providing such a library!

    I want to use the lietorch library in my project where I'm trying to optimize over the SE3 space. I've installed the required dependencies as stated. However, I'm receiving the below error when I try to run the ./run_test.sh script. So, I wanted to check if anyone can tell what could be the source of this error and how to rectify it?

    Note: torch.cuda.get_device_name(0) returns correctly the GPU's name.

    Testing lietorch forward pass (CPU) ...                                                                                                                                                                                    
    - <class 'lietorch.groups.SO3'> Passed exp-log test                                                                                                                                                               
     - <class 'lietorch.groups.SO3'> Passed inv test                                                                                                                                                                   
     - <class 'lietorch.groups.SO3'> Passed adj test                                                                                                                                                                    
    - <class 'lietorch.groups.SO3'> Passed act test                                                                                                                                                                   
     - <class 'lietorch.groups.RxSO3'> Passed exp-log test                                                                                                                                                            
      - <class 'lietorch.groups.RxSO3'> Passed inv test                                                                                                                                                                 
     - <class 'lietorch.groups.RxSO3'> Passed adj test                                                                                                                                                                 
     - <class 'lietorch.groups.RxSO3'> Passed act test                                                                                                                                                                  
    - <class 'lietorch.groups.SE3'> Passed exp-log test                                                                                                                                                                
    - <class 'lietorch.groups.SE3'> Passed inv test                                                                                                                                                                    
    - <class 'lietorch.groups.SE3'> Passed adj test                                                                                                                                                                   
     - <class 'lietorch.groups.SE3'> Passed act test                                                                                                                                                                  
      - <class 'lietorch.groups.Sim3'> Passed exp-log test                                                                                                                                                              
     - <class 'lietorch.groups.Sim3'> Passed inv test                                                                                                                                                                   
    - <class 'lietorch.groups.Sim3'> Passed adj test                                                                                                                                                                  
     - <class 'lietorch.groups.Sim3'> Passed act test                                                                                                                                                           
    Testing lietorch backward pass (CPU)...                                                                                                                                                                                    
    - <class 'lietorch.groups.SO3'> Passed eye-grad test                                                                                                                                                              
     - <class 'lietorch.groups.SO3'> Passed inv-grad test                                                                                                                                                             
      - <class 'lietorch.groups.SO3'> Passed adj-grad test                                                                                                                                                               
    - <class 'lietorch.groups.SO3'> Passed adjT-grad test                                                                                                                                                            
      - <class 'lietorch.groups.SO3'> Passed act-grad test                                                                                                                                                              
     - <class 'lietorch.groups.RxSO3'> Passed eye-grad test                                                                                                                                                            
     - <class 'lietorch.groups.RxSO3'> Passed inv-grad test                                                                                                                                                             
    - <class 'lietorch.groups.RxSO3'> Passed adj-grad test                                                                                                                                                            
     -
     <class 'lietorch.groups.RxSO3'> Passed adjT-grad test                                                                                                                                                            
    - <class 'lietorch.groups.RxSO3'> Passed act-grad test                                                                                                                                                             
    - <class 'lietorch.groups.SE3'> Passed eye-grad test                                                                                                                                                               
    - <class 'lietorch.groups.SE3'> Passed inv-grad test                                                                                                                                                             
      - <class 'lietorch.groups.SE3'> Passed adj-grad test                                                                                                                                                               
    - <class 'lietorch.groups.SE3'> Passed adjT-grad test                                                                                                                                                              
    - <class 'lietorch.groups.SE3'> Passed act-grad test                                                                                                                                                               
    - <class 'lietorch.groups.Sim3'> Passed eye-grad test                                                                                                                                                             
     - <class 'lietorch.groups.Sim3'> Passed inv-grad test                                                                                                                                                             
     - <class 'lietorch.groups.Sim3'> Passed adj-grad test                                                                                                                                                             
     - <class 'lietorch.groups.Sim3'> Passed adjT-grad test                                                                                                                                                            
     - <class 'lietorch.groups.Sim3'> Passed act-grad test                                                                                                                                                      
    Testing lietorch forward pass (GPU) ...                                                                                                                                                                            
    Traceback (most recent call last):                                                                                                                                                                                   
    File "lietorch/run_tests.py", line 217, in <module>                                                                                                                                                                 
     test_exp_log(Group, device='cuda')                                                                                                                                                                               
    File "lietorch/run_tests.py", line 19, in test_exp_log                                                                                                                                                              
     b = Group.exp(a).log()                                                                                                                                                                                           
    File "/home/abhishek_peri/anaconda3/envs/nerfing/lib/python3.6/site-packages/lietorch-0.1-py3.6-linux-x86_64.egg/lietorch/groups.py", line 132, in log                                                              
     return self.apply_op(Log, self.data)                                                                                                                                                                             
    File "/home/abhishek_peri/anaconda3/envs/nerfing/lib/python3.6/site-packages/lietorch-0.1-py3.6-linux-x86_64.egg/lietorch/groups.py", line 122, in apply_op                                                         
     data = op.apply(cls.group_id, *inputs)                                                                                                                                                                           
    File "/home/abhishek_peri/anaconda3/envs/nerfing/lib/python3.6/site-packages/lietorch-0.1-py3.6-linux-x86_64.egg/lietorch/group_ops.py", line 12, in forward                                                        
     out = cls.forward_op(ctx.group_id, *inputs)                                                                                                                                                                   
     RuntimeError: CUDA error: no kernel image is available for execution on the device
    
    opened by abhishek-peri 6
  • Question about the Euclidean embeddings

    Question about the Euclidean embeddings

    Hi, thank you for your great work! Since I am new to the Lie groups and Lie algebra, I met some difficulties when reading the code:

    1. For SE(3) representation, the Euclidean embeddings (that is, the 7-dim vector from ToVec() function) has two parts: 3-dim translation and 4-dim quaternion (for rotation) (related code). When I tried to create a pose from the axis-angle representation (i.e. SE3.exp(axis_angle_rep)), this code multiplies left Jacobian with tau, which should correspond to the translation from axis-angle representation:

      Vector3 t = SO3<Scalar>::left_jacobian(phi) * tau;

      My question is, why should we multiply tau with left Jacobian of phi? Could you explain a little bit more on the connection between the Euclidean embeddings and axis-angle (or transformation matrix)? I found some webpage shows the connections among various representations but I think it still a bit unclear. Thanks!

    opened by xwjabc 3
  • act does not seem to work with multiple points

    act does not seem to work with multiple points

    Hi,

    Thanks for the great project and paper. I'm trying to use to act operator on multiple points, but can't seem to get it to work. As a toy example, consider:

    a = torch.FloatTensor([0.4230, 0.5557, 0.3167, 0.6419])
    so3 = SO3(a)
    b = torch.rand(10, 3)
    so3.act(b)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/data/hturki/miniconda3/envs/test/lib/python3.8/site-packages/lietorch-0.1-py3.8-linux-x86_64.egg/lietorch/groups.py", line 163, in act
        return self.apply_op(Act3, self.data, p)
      File "/data/hturki/miniconda3/envs/test/lib/python3.8/site-packages/lietorch-0.1-py3.8-linux-x86_64.egg/lietorch/groups.py", line 120, in apply_op
        inputs, out_shape = broadcast_inputs(x, y)
      File "/data/hturki/miniconda3/envs/test/lib/python3.8/site-packages/lietorch-0.1-py3.8-linux-x86_64.egg/lietorch/broadcasting.py", line 15, in broadcast_inputs
        check_broadcastable(x, y)
      File "/data/hturki/miniconda3/envs/test/lib/python3.8/site-packages/lietorch-0.1-py3.8-linux-x86_64.egg/lietorch/broadcasting.py", line 5, in check_broadcastable
        assert len(x.shape) == len(y.shape)
    AssertionError
    

    And note that so3.act(b.T) doesn't fail but seems to silently return None. Am I calling this operation incorrectly?

    opened by hturki 3
  • ToMatrix() does not have backward operation implemented

    ToMatrix() does not have backward operation implemented

    Hi,

    I just read through your paper and code and really adore this project on lie group in tangent space.

    I hope that the ToMatrix() operation could be fully differentiable for researchers to use. Do you have a plan to implement the ToMatrix(), or may be FromMatrix() in the future? and a planned date in mind?

    Cheers

    Lixin

    opened by lixiny 2
  • Broadcasting of action on point cloud

    Broadcasting of action on point cloud

    I would like to know how I can broadcast the action on a point cloud:

    SE3: T, shape(n) point cloud: P, shape(n, m, 4) expect transformed point cloud: P_trans = T * P, shape(n,m,4)

    Can anyone help?

    opened by mhayoz 1
  • bug in SE3.matrix()?

    bug in SE3.matrix()?

    Hi, thanks so much for your awsome work. I've been trying to apply the libary in my project, but got some comfusions.

    I was looking for the defininaiton of the se(3)'s 6D vector (i.e. if it's (rot_vec, trans_vec) or. (trans_vec, rot_vec)), but got the following results which seems wrong.

    a.vec() tensor([0.7433, 0.4080, 0.7250, 0.0628, 0.2401, 0.2408])

    a.matrix() tensor([[ 0.6560, -0.5883, 0.9783, 0.0628], [ 0.5775, -0.4621, 0.1977, 0.2401], [-0.4860, 0.6636, 0.0627, 0.2408], [ 0.0000, 0.0000, 0.0000, 1.0000]])

    a * torch.Tensor([0,0,0]) tensor([0.7433, 0.4080, 0.7250])

    a.matrix() @ torch.Tensor([0,0,0,1]) tensor([0.0628, 0.2401, 0.2408, 1.0000])

    it looks like matrix() is treating the se(3) 6D embedding as [rotation_vec, translation_vec], which conflits to the act() or * operations, where the embedding is apparently [translation_vec, rotation_vec].

    opened by MightyChaos 1
  • CPU only version?

    CPU only version?

    Hi thanks for the great work. Is it possible to compile the library for CPU-only use? Do you have some simple instructions on how to modify the setup.py for this purpose? Thanks in advance.

    opened by w-hc 1
  • CUDA version mismatch

    CUDA version mismatch

    After sudo python3 setup.py install, I get the following error:

    running install
    running bdist_egg
    running egg_info
    writing lietorch.egg-info/PKG-INFO
    writing dependency_links to lietorch.egg-info/dependency_links.txt
    writing top-level names to lietorch.egg-info/top_level.txt
    reading manifest file 'lietorch.egg-info/SOURCES.txt'
    writing manifest file 'lietorch.egg-info/SOURCES.txt'
    installing library code to build/bdist.linux-x86_64/egg
    running install_lib
    running build_py
    running build_ext
    Traceback (most recent call last):
      File "/home/adriel/Documents/mestrado/projeto/repos/lietorch/setup.py", line 9, in <module>
        setup(
      File "/usr/lib/python3/dist-packages/setuptools/__init__.py", line 153, in setup
        return distutils.core.setup(**attrs)
      File "/usr/lib/python3.9/distutils/core.py", line 148, in setup
        dist.run_commands()
      File "/usr/lib/python3.9/distutils/dist.py", line 966, in run_commands
        self.run_command(cmd)
      File "/usr/lib/python3.9/distutils/dist.py", line 985, in run_command
        cmd_obj.run()
      File "/usr/lib/python3/dist-packages/setuptools/command/install.py", line 67, in run
        self.do_egg_install()
      File "/usr/lib/python3/dist-packages/setuptools/command/install.py", line 109, in do_egg_install
        self.run_command('bdist_egg')
      File "/usr/lib/python3.9/distutils/cmd.py", line 313, in run_command
        self.distribution.run_command(command)
      File "/usr/lib/python3.9/distutils/dist.py", line 985, in run_command
        cmd_obj.run()
      File "/usr/lib/python3/dist-packages/setuptools/command/bdist_egg.py", line 164, in run
        cmd = self.call_command('install_lib', warn_dir=0)
      File "/usr/lib/python3/dist-packages/setuptools/command/bdist_egg.py", line 150, in call_command
        self.run_command(cmdname)
      File "/usr/lib/python3.9/distutils/cmd.py", line 313, in run_command
        self.distribution.run_command(command)
      File "/usr/lib/python3.9/distutils/dist.py", line 985, in run_command
        cmd_obj.run()
      File "/usr/lib/python3/dist-packages/setuptools/command/install_lib.py", line 23, in run
        self.build()
      File "/usr/lib/python3.9/distutils/command/install_lib.py", line 109, in build
        self.run_command('build_ext')
      File "/usr/lib/python3.9/distutils/cmd.py", line 313, in run_command
        self.distribution.run_command(command)
      File "/usr/lib/python3.9/distutils/dist.py", line 985, in run_command
        cmd_obj.run()
      File "/usr/lib/python3/dist-packages/setuptools/command/build_ext.py", line 79, in run
        _build_ext.run(self)
      File "/usr/lib/python3.9/distutils/command/build_ext.py", line 340, in run
        self.build_extensions()
      File "/usr/local/lib/python3.9/dist-packages/torch-1.10.0-py3.9-linux-x86_64.egg/torch/utils/cpp_extension.py", line 404, in build_extensions
        self._check_cuda_version()
      File "/usr/local/lib/python3.9/dist-packages/torch-1.10.0-py3.9-linux-x86_64.egg/torch/utils/cpp_extension.py", line 781, in _check_cuda_version
        raise RuntimeError(CUDA_MISMATCH_MESSAGE.format(cuda_str_version, torch.version.cuda))
    RuntimeError: 
    The detected CUDA version (11.2) mismatches the version that was used to compile
    PyTorch (10.2). Please make sure to use the same CUDA versions.
    

    But my nvcc version is 11.2.

    opened by yriuss 1
  • Torch Version Requirement

    Torch Version Requirement

    In README, it says torch>=1.7 is fine. However, in the source code, the lietorch requires torch.linalg.pinv, which seems only exists in torch 1.9+.

    opened by Iven-Wu 1
  • fixed grad check for pytorch 1.9

    fixed grad check for pytorch 1.9

    Hi @zachteed

    Thanks for your great work! There is an offending commit (https://github.com/pytorch/pytorch/commit/58eb23378f2a376565a66ac32c93a316c45b6131) in torch 1.9.0 that breaks the testing functions. I added some sanity checks to make sure it runs properly. Since in the requirement there is no restriction of the torch version, this may help whoever uses the library.

    Let me know!

    opened by mli0603 1
  • direct installation via pip

    direct installation via pip

    A useful top that you may add to the documentation: You can directly clone the repo and install via pip in one step:

    sudo -H pip3 install git+https://github.com/princeton-vl/lietorch.git
    
    opened by christian-rauch 1
  • Possible bug in gradient size of mul_backward_kernel()?

    Possible bug in gradient size of mul_backward_kernel()?

    Hi guys,

    First of all, congratulations on this great work and thank you for making the code open-source.

    While going through the implementation details, I noticed that the Grad type in the mul_backward_kernel() method in https://github.com/princeton-vl/lietorch/blob/0fa9ce8ffca86d985eca9e189a99690d6f3d4df6/lietorch/src/lietorch_cpu.cpp#L124 is accessed from the memory with the dimension N which appears to be the embedding size (or the representation size). Shouldn't this instead be accessed with dimension K https://github.com/princeton-vl/lietorch/blob/0fa9ce8ffca86d985eca9e189a99690d6f3d4df6/lietorch/src/lietorch_cpu.cpp#L119 which is the dimension of the tangent space that satisfies the chain rule described in Eq. (14) of the paper.

    Please let me know if this observation is correct or I have misunderstood this as a bug? Thanks in advance. Keep up the great work :)

    opened by prashanthr05 0
  • cannot install the package

    cannot install the package

    OS: Windows 11 Python version: Python 3.8.13

    when I install it from the source (python setup.py install), I got the issue looked like:

    No CUDA runtime is found, using CUDA_HOME='User\local\Cuda'
    running install
    C:\Users\nicol\miniconda3\envs\cir\lib\site-packages\setuptools\command\install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
      warnings.warn(
    C:\Users\nicol\miniconda3\envs\cir\lib\site-packages\setuptools\command\easy_install.py:156: EasyInstallDeprecationWarning: easy_install command is deprecated. Use build and pip and other standards-based tools.
      warnings.warn(
    running bdist_egg
    running egg_info
    writing lietorch.egg-info\PKG-INFO
    writing dependency_links to lietorch.egg-info\dependency_links.txt
    writing top-level names to lietorch.egg-info\top_level.txt
    reading manifest file 'lietorch.egg-info\SOURCES.txt'
    adding license file 'LICENSE'
    writing manifest file 'lietorch.egg-info\SOURCES.txt'
    installing library code to build\bdist.win-amd64\egg
    running install_lib
    running build_py
    running build_ext
    C:\Users\nicol\miniconda3\envs\cir\lib\site-packages\torch\utils\cpp_extension.py:346: UserWarning: Error checking compiler version for cl: [WinError 2] The system cannot find the file specified
      warnings.warn(f'Error checking compiler version for {compiler}: {error}')
    Traceback (most recent call last):
      File "setup.py", line 9, in <module>
        setup(
      File "C:\Users\nicol\miniconda3\envs\cir\lib\site-packages\setuptools\__init__.py", line 153, in setup
        return distutils.core.setup(**attrs)
      File "C:\Users\nicol\miniconda3\envs\cir\lib\distutils\core.py", line 148, in setup
        dist.run_commands()
      File "C:\Users\nicol\miniconda3\envs\cir\lib\distutils\dist.py", line 966, in run_commands
        self.run_command(cmd)
      File "C:\Users\nicol\miniconda3\envs\cir\lib\distutils\dist.py", line 985, in run_command
        cmd_obj.run()
      File "C:\Users\nicol\miniconda3\envs\cir\lib\site-packages\setuptools\command\install.py", line 74, in run
        self.do_egg_install()
      File "C:\Users\nicol\miniconda3\envs\cir\lib\site-packages\setuptools\command\install.py", line 116, in do_egg_install
        self.run_command('bdist_egg')
      File "C:\Users\nicol\miniconda3\envs\cir\lib\distutils\cmd.py", line 313, in run_command
        self.distribution.run_command(command)
      File "C:\Users\nicol\miniconda3\envs\cir\lib\distutils\dist.py", line 985, in run_command
        cmd_obj.run()
      File "C:\Users\nicol\miniconda3\envs\cir\lib\site-packages\setuptools\command\bdist_egg.py", line 164, in run
        cmd = self.call_command('install_lib', warn_dir=0)
      File "C:\Users\nicol\miniconda3\envs\cir\lib\site-packages\setuptools\command\bdist_egg.py", line 150, in call_command
        self.run_command(cmdname)
      File "C:\Users\nicol\miniconda3\envs\cir\lib\distutils\cmd.py", line 313, in run_command
        self.distribution.run_command(command)
      File "C:\Users\nicol\miniconda3\envs\cir\lib\distutils\dist.py", line 985, in run_command
        cmd_obj.run()
      File "C:\Users\nicol\miniconda3\envs\cir\lib\site-packages\setuptools\command\install_lib.py", line 11, in run
        self.build()
      File "C:\Users\nicol\miniconda3\envs\cir\lib\distutils\command\install_lib.py", line 107, in build
        self.run_command('build_ext')
      File "C:\Users\nicol\miniconda3\envs\cir\lib\distutils\cmd.py", line 313, in run_command
        self.distribution.run_command(command)
      File "C:\Users\nicol\miniconda3\envs\cir\lib\distutils\dist.py", line 985, in run_command
        cmd_obj.run()
      File "C:\Users\nicol\miniconda3\envs\cir\lib\site-packages\setuptools\command\build_ext.py", line 79, in run
        _build_ext.run(self)
      File "C:\Users\nicol\miniconda3\envs\cir\lib\distutils\command\build_ext.py", line 340, in run
        self.build_extensions()
      File "C:\Users\nicol\miniconda3\envs\cir\lib\site-packages\torch\utils\cpp_extension.py", line 434, in build_extensions
        self._check_cuda_version(compiler_name, compiler_version)
      File "C:\Users\nicol\miniconda3\envs\cir\lib\site-packages\torch\utils\cpp_extension.py", line 808, in _check_cuda_version
        torch_cuda_version = packaging.version.parse(torch.version.cuda)
      File "C:\Users\nicol\miniconda3\envs\cir\lib\site-packages\pkg_resources\_vendor\packaging\version.py", line 49, in parse
        return Version(version)
      File "C:\Users\nicol\miniconda3\envs\cir\lib\site-packages\pkg_resources\_vendor\packaging\version.py", line 264, in __init__
        match = self._regex.search(version)
    TypeError: expected string or bytes-like object
    

    When i install from the pip (pip install lietorch), It can be installed, but I got the following error:

    >>> import lietorch
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "E:\Windows\GitHub\lietorch\lietorch\__init__.py", line 2, in <module>
        from .groups import LieGroupParameter, SO3, RxSO3, SE3, Sim3, cat, stack
      File "E:\Windows\GitHub\lietorch\lietorch\groups.py", line 5, in <module>
        from .group_ops import Exp, Log, Inv, Mul, Adj, AdjT, Jinv, Act3, Act4, ToMatrix, ToVec, FromVec
      File "E:\Windows\GitHub\lietorch\lietorch\group_ops.py", line 1, in <module>
        import lietorch_backends
    ModuleNotFoundError: No module named 'lietorch_backends'
    

    Could someone who successfully installed the package before give me some suggestions? Thanks!

    opened by ykzzyk 2
  • Question about the Jacobian of the exponential map

    Question about the Jacobian of the exponential map

    Thanks for your excellent work. But I have some doubts about the shape of the jaobian of the exponential map.

    Let's take the $SE3$ for example. Its exponential function map $\mathbb{R}^{6}$ to $\mathbb{R}^{4\times4}$. Thus I think the jacobian matrix of this fun should be in $\mathbb{R}^{16\times6}$ or $\mathbb{R}^{6\times16}$. But you state that:

    The Jacobian of the exponential map $\mathbf{J}_{l}=\frac{\partial }{\partial \mathbf{x}}Exp(\mathbf{x})$ is referred to as the left-Jacobian

    And the left Jacobian of $SE3$ should be a $6\times6$ matrix. Where does the shape difference comes from. Is there any misunderstood about your statements?

    opened by xianshunw 0
  • Not available on win10

    Not available on win10

    Hello, I can successfully compile and install lietorch on Windows, but I cannot pass the gpu related tests. When running the simplest multiplication, likes X1 = Ts * X0, it will get stuck and exit.

    opened by 863689877 1
Owner
Princeton Vision & Learning Lab
Princeton Vision & Learning Lab
The official implementation of NeurIPS 2021 paper: Finding Optimal Tangent Points for Reducing Distortions of Hard-label Attacks

The official implementation of NeurIPS 2021 paper: Finding Optimal Tangent Points for Reducing Distortions of Hard-label Attacks

machen 11 Nov 27, 2022
git《FSCE: Few-Shot Object Detection via Contrastive Proposal Encoding》(CVPR 2021) GitHub: [fig8]

FSCE: Few-Shot Object Detection via Contrastive Proposal Encoding (CVPR 2021) This repo contains the implementation of our state-of-the-art fewshot ob

null 233 Dec 29, 2022
git《Investigating Loss Functions for Extreme Super-Resolution》(CVPR 2020) GitHub:

Investigating Loss Functions for Extreme Super-Resolution NTIRE 2020 Perceptual Extreme Super-Resolution Submission. Our method ranked first and secon

Sejong Yang 0 Oct 17, 2022
git《Self-Attention Attribution: Interpreting Information Interactions Inside Transformer》(AAAI 2021) GitHub:

Self-Attention Attribution This repository contains the implementation for AAAI-2021 paper Self-Attention Attribution: Interpreting Information Intera

null 60 Dec 29, 2022
git《Pseudo-ISP: Learning Pseudo In-camera Signal Processing Pipeline from A Color Image Denoiser》(2021) GitHub: [fig5]

Pseudo-ISP: Learning Pseudo In-camera Signal Processing Pipeline from A Color Image Denoiser Abstract The success of deep denoisers on real-world colo

Yue Cao 51 Nov 22, 2022
[CVPR'21] Locally Aware Piecewise Transformation Fields for 3D Human Mesh Registration

Locally Aware Piecewise Transformation Fields for 3D Human Mesh Registration This repository contains the implementation of our paper Locally Aware Pi

sfwang 70 Dec 19, 2022
[CVPR'21] Projecting Your View Attentively: Monocular Road Scene Layout Estimation via Cross-view Transformation

Projecting Your View Attentively: Monocular Road Scene Layout Estimation via Cross-view Transformation Weixiang Yang, Qi Li, Wenxi Liu, Yuanlong Yu, Y

null 118 Dec 26, 2022
git《Beta R-CNN: Looking into Pedestrian Detection from Another Perspective》(NeurIPS 2020) GitHub:[fig3]

Beta R-CNN: Looking into Pedestrian Detection from Another Perspective This is the pytorch implementation of our paper "[Beta R-CNN: Looking into Pede

null 35 Sep 8, 2021
git《Learning Pairwise Inter-Plane Relations for Piecewise Planar Reconstruction》(ECCV 2020) GitHub:

Learning Pairwise Inter-Plane Relations for Piecewise Planar Reconstruction Code for the ECCV 2020 paper by Yiming Qian and Yasutaka Furukawa Getting

null 37 Dec 4, 2022
git《Commonsense Knowledge Base Completion with Structural and Semantic Context》(AAAI 2020) GitHub: [fig1]

Commonsense Knowledge Base Completion with Structural and Semantic Context Code for the paper Commonsense Knowledge Base Completion with Structural an

AI2 96 Nov 5, 2022
git《Joint Entity and Relation Extraction with Set Prediction Networks》(2020) GitHub:

Joint Entity and Relation Extraction with Set Prediction Networks Source code for Joint Entity and Relation Extraction with Set Prediction Networks. W

null 130 Dec 13, 2022
git《USD-Seg:Learning Universal Shape Dictionary for Realtime Instance Segmentation》(2020) GitHub: [fig2]

USD-Seg This project is an implement of paper USD-Seg:Learning Universal Shape Dictionary for Realtime Instance Segmentation, based on FCOS detector f

Ruolin Ye 80 Nov 28, 2022
FuseDream: Training-Free Text-to-Image Generationwith Improved CLIP+GAN Space OptimizationFuseDream: Training-Free Text-to-Image Generationwith Improved CLIP+GAN Space Optimization

FuseDream This repo contains code for our paper (paper link): FuseDream: Training-Free Text-to-Image Generation with Improved CLIP+GAN Space Optimizat

XCL 191 Dec 31, 2022
Space robot - (Course Project) Using the space robot to capture the target satellite that is disabled and spinning, then stabilize and fix it up

Space robot - (Course Project) Using the space robot to capture the target satellite that is disabled and spinning, then stabilize and fix it up

Mingrui Yu 3 Jan 7, 2022
Improving Contrastive Learning by Visualizing Feature Transformation, ICCV 2021 Oral

Improving Contrastive Learning by Visualizing Feature Transformation This project hosts the codes, models and visualization tools for the paper: Impro

Bingchen Zhao 83 Dec 15, 2022
CVPR 2021 Challenge on Super-Resolution Space

Learning the Super-Resolution Space Challenge NTIRE 2021 at CVPR Learning the Super-Resolution Space challenge is held as a part of the 6th edition of

andreas 104 Oct 26, 2022
PyTorch implementation of paper "Neural Scene Flow Fields for Space-Time View Synthesis of Dynamic Scenes", CVPR 2021

Neural Scene Flow Fields PyTorch implementation of paper "Neural Scene Flow Fields for Space-Time View Synthesis of Dynamic Scenes", CVPR 20

Zhengqi Li 585 Jan 4, 2023
Efficient Householder transformation in PyTorch

Efficient Householder Transformation in PyTorch This repository implements the Householder transformation algorithm for calculating orthogonal matrice

Anton Obukhov 49 Nov 20, 2022
Only a Matter of Style: Age Transformation Using a Style-Based Regression Model

Only a Matter of Style: Age Transformation Using a Style-Based Regression Model The task of age transformation illustrates the change of an individual

null 444 Dec 30, 2022