Liecasadi - liecasadi implements Lie groups operation written in CasADi

Overview

liecasadi

liecasadi implements Lie groups operation written in CasADi, mainly directed to optimization problem formulation.

Inspired by A micro Lie theory for state estimation in robotics and the library Manif.

Install

pip install "liecasadi @ git+https://github.com/ami-iit/lie-casadi.git"

Implemented Groups

Group Description
SO3 3D Rotations
SE3 3D Rigid Transform

Example

from liecasadi import SE3, SO3, SE3Tangent, SO3Tangent

# Random quaternion + normalization
quat = (np.random.rand(4) - 0.5) * 5
quat = quat / np.linalg.norm(quat)
# Random vector
vector3d = (np.random.rand(3) - 0.5) * 2 * np.pi

# Create SO3 object
rotation = SO3(quat)

# Create Identity
identity = SO3.Identity()

# Create SO3Tangent object
tangent = SO3Tangent(vector3d)

# Random translation vector
pos = (np.random.rand(3) - 0.5) * 5

# Create SE3 object
transform = SE3(pos=pos, xyzw=quat)

# Random vector
vector6d = (np.random.rand(3) - 0.5) * 5

# Create SE3Tangent object
tangent = SO3Tangent(vector6d)
You might also like...
Accelerated SMPL operation, commonly used in generate 3D human mesh, STAR included.

SMPL2 An enchanced and accelerated SMPL operation which commonly used in 3D human mesh generation. It takes a poses, shapes, cam_trans as inputs, outp

A python-image-classification web application project, written in Python and served through the Flask Microframework. This Project implements the VGG16 covolutional neural network, through Keras and Tensorflow wrappers, to make predictions on uploaded images. git《Tangent Space Backpropogation for 3D Transformation Groups》(CVPR 2021) GitHub:1]
git《Tangent Space Backpropogation for 3D Transformation Groups》(CVPR 2021) GitHub:1]

LieTorch: Tangent Space Backpropagation Introduction The LieTorch library generalizes PyTorch to 3D transformation groups. Just as torch.Tensor is a m

Nicely is a real-time Feedback and Intervention Program Depression is a prevalent issue across all age groups, socioeconomic classes, and cultural identities.
Nicely is a real-time Feedback and Intervention Program Depression is a prevalent issue across all age groups, socioeconomic classes, and cultural identities.

Nicely is a real-time Feedback and Intervention Program Depression is a prevalent issue across all age groups, socioeconomic classes, and cultural identities.

Model search is a framework that implements AutoML algorithms for model architecture search at scale
Model search is a framework that implements AutoML algorithms for model architecture search at scale

Model search (MS) is a framework that implements AutoML algorithms for model architecture search at scale. It aims to help researchers speed up their exploration process for finding the right model architecture for their classification problems (i.e., DNNs with different types of layers).

Implements Gradient Centralization and allows it to use as a Python package in TensorFlow
Implements Gradient Centralization and allows it to use as a Python package in TensorFlow

Gradient Centralization TensorFlow This Python package implements Gradient Centralization in TensorFlow, a simple and effective optimization technique

Implements MLP-Mixer: An all-MLP Architecture for Vision.
Implements MLP-Mixer: An all-MLP Architecture for Vision.

MLP-Mixer-CIFAR10 This repository implements MLP-Mixer as proposed in MLP-Mixer: An all-MLP Architecture for Vision. The paper introduces an all MLP (

QueryFuzz implements a metamorphic testing approach to test Datalog engines.
QueryFuzz implements a metamorphic testing approach to test Datalog engines.

Datalog is a popular query language with applications in several domains. Like any complex piece of software, Datalog engines may contain bugs. The mo

This repository implements and evaluates convolutional networks on the Möbius strip as toy model instantiations of Coordinate Independent Convolutional Networks.
This repository implements and evaluates convolutional networks on the Möbius strip as toy model instantiations of Coordinate Independent Convolutional Networks.

Orientation independent Möbius CNNs This repository implements and evaluates convolutional networks on the Möbius strip as toy model instantiations of

Comments
  • Problems running the example

    Problems running the example

    I tried installing the library as documented in the README and running the example.

    By installing the example as documented in the README:

    (castest) [email protected]:~$ pip install "liecasadi @ git+https://github.com/ami-iit/lie-casadi.git"
    Collecting liecasadi@ git+https://github.com/ami-iit/lie-casadi.git
      Cloning https://github.com/ami-iit/lie-casadi.git to /tmp/pip-install-jld36pa2/liecasadi_02974e872e9a41da95da2ba742a2bb6a
      Running command git clone --filter=blob:none --quiet https://github.com/ami-iit/lie-casadi.git /tmp/pip-install-jld36pa2/liecasadi_02974e872e9a41da95da2ba742a2bb6a
      Resolved https://github.com/ami-iit/lie-casadi.git to commit 4f538f354781243e600ce771c9236a43df83745d
      Installing build dependencies ... done
      Getting requirements to build wheel ... done
      Preparing metadata (pyproject.toml) ... done
    Collecting numpy>=1.20
      Using cached numpy-1.22.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (16.8 MB)
    Collecting casadi
      Using cached casadi-3.5.5-cp38-none-manylinux1_x86_64.whl (34.2 MB)
    Building wheels for collected packages: liecasadi
      Building wheel for liecasadi (pyproject.toml) ... done
      Created wheel for liecasadi: filename=liecasadi-0.1.dev39-py3-none-any.whl size=7882 sha256=078ab323d4479d39e5aa0a577a6150df54d9224d416b94c89d26adc5db0616be
      Stored in directory: /tmp/pip-ephem-wheel-cache-v0j9nv_a/wheels/7a/26/6a/62ad9ab4f348e178408f7d79d44555ed51514496949fcdb644
    Successfully built liecasadi
    Installing collected packages: casadi, numpy, liecasadi
    Successfully installed casadi-3.5.5 liecasadi-0.1.dev39 numpy-1.22.1
    

    You can see that casadi got installed via pip.

    Then, I tried to run the example and the example fails with:

    (castest) [email protected]:~/liecasadi/examples$ python manifold_optimization.py
    Traceback (most recent call last):
      File "manifold_optimization.py", line 4, in <module>
        import matplotlib.pyplot as plt
    ModuleNotFoundError: No module named 'matplotlib'
    

    This is due to matplotlib missing, and it make sense that this is not part of the dependencies of the library. If I then install matplot lib, then the example fails with:

    (castest) [email protected]:~/liecasadi/examples$ python manifold_optimization.py
    Traceback (most recent call last):
      File "manifold_optimization.py", line 9, in <module>
        from liecasadi import SO3, SO3Tangent
      File "/home/traversaro/mambaforge/envs/castest/lib/python3.8/site-packages/liecasadi/__init__.py", line 3, in <module>
        from .so3 import SO3, SO3Tangent
      File "/home/traversaro/mambaforge/envs/castest/lib/python3.8/site-packages/liecasadi/so3.py", line 9, in <module>
        from attr import field
    ModuleNotFoundError: No module named 'attr'
    

    This is a bit more tricky, as it requires to install the attrs package (note the final s, as the attr package will not work).

    After installing also attr, I get this error:

    (castest) [email protected]:~/liecasadi/examples$ python manifold_optimization.py
    Traceback (most recent call last):
      File "manifold_optimization.py", line 21, in <module>
        opti.subject_to(quat[k + 1] == (vector_SO3 + rotation_SO3).as_quat())
      File "/home/traversaro/mambaforge/envs/castest/lib/python3.8/site-packages/casadi/casadi.py", line 28146, in subject_to
        ret = self._subject_to(*args)
      File "/home/traversaro/mambaforge/envs/castest/lib/python3.8/site-packages/casadi/casadi.py", line 27470, in _subject_to
        return _casadi.Opti__subject_to(self, *args)
    RuntimeError: Error in Opti::subject_to [OptiNode] at .../casadi/core/optistack.cpp:96:
    .../casadi/core/optistack_internal.cpp:905: Assertion "!g.is_constant()" failed:
    You passed a constant to `subject_to`. You need a symbol to form a constraint.
    

    Furthermore, even if I did not reached this point, I noticed that the example refers ma27 (https://github.com/ami-iit/liecasadi/blob/c79d29e87d6d654e78d258a10bac9b2bbae35773/examples/manifold_optimization.py#L47), but by following the instruction of the repo casadi gets installed by pip, and I do not think that that version of casadi has hsl support enabled.

    Environments in which I run the tests:

    (castest) [email protected]:~/liecasadi/examples$ mamba list
    # packages in environment at /home/traversaro/mambaforge/envs/castest:
    #
    # Name                    Version                   Build  Channel
    _libgcc_mutex             0.1                 conda_forge    conda-forge
    _openmp_mutex             4.5                       1_gnu    conda-forge
    attrs                     21.4.0                   pypi_0    pypi
    ca-certificates           2021.10.8            ha878542_0    conda-forge
    casadi                    3.5.5                    pypi_0    pypi
    cycler                    0.11.0                   pypi_0    pypi
    fonttools                 4.29.1                   pypi_0    pypi
    kiwisolver                1.3.2                    pypi_0    pypi
    ld_impl_linux-64          2.36.1               hea4e1c9_2    conda-forge
    libffi                    3.4.2                h7f98852_5    conda-forge
    libgcc-ng                 11.2.0              h1d223b6_12    conda-forge
    libgomp                   11.2.0              h1d223b6_12    conda-forge
    libnsl                    2.0.0                h7f98852_0    conda-forge
    libstdcxx-ng              11.2.0              he4da1e4_12    conda-forge
    libzlib                   1.2.11            h36c2ea0_1013    conda-forge
    liecasadi                 0.1.dev39                pypi_0    pypi
    matplotlib                3.5.1                    pypi_0    pypi
    ncurses                   6.3                  h9c3ff4c_0    conda-forge
    numpy                     1.22.1                   pypi_0    pypi
    openssl                   3.0.0                h7f98852_2    conda-forge
    packaging                 21.3                     pypi_0    pypi
    pillow                    9.0.0                    pypi_0    pypi
    pip                       22.0.2             pyhd8ed1ab_0    conda-forge
    pyparsing                 3.0.7                    pypi_0    pypi
    python                    3.8.12          h0744224_3_cpython    conda-forge
    python-dateutil           2.8.2                    pypi_0    pypi
    python_abi                3.8                      2_cp38    conda-forge
    readline                  8.1                  h46c0cb4_0    conda-forge
    setuptools                60.6.0           py38h578d9bd_0    conda-forge
    six                       1.16.0                   pypi_0    pypi
    sqlite                    3.37.0               h9cd32fc_0    conda-forge
    tk                        8.6.11               h27826a3_1    conda-forge
    wheel                     0.37.1             pyhd8ed1ab_0    conda-forge
    xz                        5.2.5                h516909a_1    conda-forge
    zlib                      1.2.11            h36c2ea0_1013    conda-forge
    (castest) [email protected]:~/liecasadi/examples$ pip list --verbose
    Package         Version   Location                                                             Installer
    --------------- --------- -------------------------------------------------------------------- ---------
    attrs           21.4.0    /home/traversaro/mambaforge/envs/castest/lib/python3.8/site-packages pip
    casadi          3.5.5     /home/traversaro/mambaforge/envs/castest/lib/python3.8/site-packages pip
    cycler          0.11.0    /home/traversaro/mambaforge/envs/castest/lib/python3.8/site-packages pip
    fonttools       4.29.1    /home/traversaro/mambaforge/envs/castest/lib/python3.8/site-packages pip
    kiwisolver      1.3.2     /home/traversaro/mambaforge/envs/castest/lib/python3.8/site-packages pip
    liecasadi       0.1.dev39 /home/traversaro/mambaforge/envs/castest/lib/python3.8/site-packages pip
    matplotlib      3.5.1     /home/traversaro/mambaforge/envs/castest/lib/python3.8/site-packages pip
    numpy           1.22.1    /home/traversaro/mambaforge/envs/castest/lib/python3.8/site-packages pip
    packaging       21.3      /home/traversaro/mambaforge/envs/castest/lib/python3.8/site-packages pip
    Pillow          9.0.0     /home/traversaro/mambaforge/envs/castest/lib/python3.8/site-packages pip
    pip             22.0.2    /home/traversaro/mambaforge/envs/castest/lib/python3.8/site-packages
    pyparsing       3.0.7     /home/traversaro/mambaforge/envs/castest/lib/python3.8/site-packages pip
    python-dateutil 2.8.2     /home/traversaro/mambaforge/envs/castest/lib/python3.8/site-packages pip
    setuptools      60.6.0    /home/traversaro/mambaforge/envs/castest/lib/python3.8/site-packages
    six             1.16.0    /home/traversaro/mambaforge/envs/castest/lib/python3.8/site-packages pip
    wheel           0.37.1    /home/traversaro/mambaforge/envs/castest/lib/python3.8/site-packages
    
    opened by traversaro 6
  • Fix manifpy test dependency

    Fix manifpy test dependency

    In order to check the correctness of the computations, I wrote some tests against Manif.

    It seems manifpy cannot be installed via PyPI. However, they provide installation instruction in https://github.com/artivis/manif/blob/devel/docs/pages/python/Quick-start.md.

    Although I can install the library using conda on my system, I'm not able to move the same logic in a workflow. manifpy seems to be installed but it is not found:

    ModuleNotFoundError: No module named 'manifpy'
    

    Am I doing something wrong?

    @traversaro @GiulioRomualdi do you have any suggestions?

    opened by Giulero 4
  • Remove `R_from_rpy(rpy)` method

    Remove `R_from_rpy(rpy)` method

    The method was badly implemented. Moreover, it's not really useful (it should be ok to call SO3.from_euler(rpy).as_matrix().

    • changed from_angle to from_euler
    • implemented to_euler
    opened by Giulero 1
Releases(v0.0.4)
  • v0.0.4(Nov 21, 2022)

    What's Changed

    • Remove R_from_rpy(rpy) method and add from/to Euler methods by @Giulero in https://github.com/ami-iit/liecasadi/pull/6

    Full Changelog: https://github.com/ami-iit/liecasadi/compare/v0.0.3...v0.0.4

    Source code(tar.gz)
    Source code(zip)
  • v0.0.3(Oct 12, 2022)

    What's Changed

    • Add quaternion derivative by @Giulero in https://github.com/ami-iit/liecasadi/pull/4
    • Add dual quaternion class by @Giulero in https://github.com/ami-iit/liecasadi/pull/5

    Full Changelog: https://github.com/ami-iit/liecasadi/compare/v0.0.2...v0.0.3

    Source code(tar.gz)
    Source code(zip)
  • v0.0.2(May 18, 2022)

    What's Changed

    • Deploy library on PyPi by @Giulero in https://github.com/ami-iit/liecasadi/pull/3

    Full Changelog: https://github.com/ami-iit/liecasadi/compare/v0.0.1...v0.0.2

    Source code(tar.gz)
    Source code(zip)
  • v0.0.1(Feb 16, 2022)

Owner
Artificial and Mechanical Intelligence
Artificial and Mechanical Intelligence
Running AlphaFold2 (from ColabFold) in Azure Machine Learning

Running AlphaFold2 (from ColabFold) in Azure Machine Learning Colby T. Ford, Ph.D. Companion repository for Medium Post: How to predict many protein s

Colby T. Ford 3 Feb 18, 2022
Code for Transformers Solve Limited Receptive Field for Monocular Depth Prediction

Official PyTorch code for Transformers Solve Limited Receptive Field for Monocular Depth Prediction. Guanglei Yang, Hao Tang, Mingli Ding, Nicu Sebe,

stanley 152 Dec 16, 2022
Learning embeddings for classification, retrieval and ranking.

StarSpace StarSpace is a general-purpose neural model for efficient learning of entity embeddings for solving a wide variety of problems: Learning wor

Facebook Research 3.8k Dec 22, 2022
A Convolutional Transformer for Keyword Spotting

☢️ Audiomer ☢️ Audiomer: A Convolutional Transformer for Keyword Spotting [ arXiv ] [ Previous SOTA ] [ Model Architecture ] Results on SpeechCommands

49 Jan 27, 2022
Implementation of self-attention mechanisms for general purpose. Focused on computer vision modules. Ongoing repository.

Self-attention building blocks for computer vision applications in PyTorch Implementation of self attention mechanisms for computer vision in PyTorch

AI Summer 962 Dec 23, 2022
A collection of 100 Deep Learning images and visualizations

A collection of Deep Learning images and visualizations. The project has been developed by the AI Summer team and currently contains almost 100 images.

AI Summer 65 Sep 12, 2022
Codes for "Template-free Prompt Tuning for Few-shot NER".

EntLM The source codes for EntLM. Dependencies: Cuda 10.1, python 3.6.5 To install the required packages by following commands: $ pip3 install -r requ

77 Dec 27, 2022
2021:"Bridging Global Context Interactions for High-Fidelity Image Completion"

TFill arXiv | Project This repository implements the training, testing and editing tools for "Bridging Global Context Interactions for High-Fidelity I

Chuanxia Zheng 111 Jan 08, 2023
Basit bir burç modülü.

Bu modulu burclar hakkinda gundelik bir sekilde bilgi alin diye yaptim ve sizler icin kullanima sunuyorum. Modulun kullanimi asiri basit: Ornek Kullan

Special 17 Jun 08, 2022
A benchmark dataset for emulating atmospheric radiative transfer in weather and climate models with machine learning (NeurIPS 2021 Datasets and Benchmarks Track)

ClimART - A Benchmark Dataset for Emulating Atmospheric Radiative Transfer in Weather and Climate Models Official PyTorch Implementation Using deep le

21 Dec 31, 2022
This repo provides function call to track multi-objects in videos

Custom Object Tracking Introduction This repo provides function call to track multi-objects in videos with a given trained object detection model and

Jeff Lo 51 Nov 22, 2022
A numpy-based implementation of RANSAC for fundamental matrix and homography estimation. The degeneracy updating and local optimization components are included and optional.

Description A numpy-based implementation of RANSAC for fundamental matrix and homography estimation. The degeneracy updating and local optimization co

AoxiangFan 9 Nov 10, 2022
CR-FIQA: Face Image Quality Assessment by Learning Sample Relative Classifiability

This is the official repository of the paper: CR-FIQA: Face Image Quality Assessment by Learning Sample Relative Classifiability A private copy of the

Fadi Boutros 33 Dec 31, 2022
A curated list of awesome game datasets, and tools to artificial intelligence in games

🎮 Awesome Game Datasets In computer science, Artificial Intelligence (AI) is intelligence demonstrated by machines. Its definition, AI research as th

Leonardo Mauro 454 Jan 03, 2023
Unadversarial Examples: Designing Objects for Robust Vision

Unadversarial Examples: Designing Objects for Robust Vision This repository contains the code necessary to replicate the major results of our paper: U

Microsoft 93 Nov 28, 2022
StackRec: Efficient Training of Very Deep Sequential Recommender Models by Iterative Stacking

StackRec: Efficient Training of Very Deep Sequential Recommender Models by Iterative Stacking Datasets You can download datasets that have been pre-pr

25 May 29, 2022
Qt-GUI implementation of the YOLOv5 algorithm (ver.6 and ver.5)

YOLOv5-GUI 🎉 YOLOv5算法(ver.6及ver.5)的Qt-GUI实现 🎉 Qt-GUI implementation of the YOLOv5 algorithm (ver.6 and ver.5). 基于YOLOv5的v5版本和v6版本及Javacr大佬的UI逻辑进行编写

EricFang 12 Dec 28, 2022
Repo for the paper Extrapolating from a Single Image to a Thousand Classes using Distillation

Extrapolating from a Single Image to a Thousand Classes using Distillation by Yuki M. Asano* and Aaqib Saeed* (*Equal Contribution) Extrapolating from

Yuki M. Asano 16 Nov 04, 2022
CCPD: a diverse and well-annotated dataset for license plate detection and recognition

CCPD (Chinese City Parking Dataset, ECCV) UPdate on 10/03/2019. CCPD Dataset is now updated. We are confident that images in subsets of CCPD is much m

detectRecog 1.8k Dec 30, 2022
Scalable implementation of Lee / Mykland (2012) and Ait-Sahalia / Jacod (2012) Jump tests for noisy high frequency data

JumpDetectR Name of QuantLet : JumpDetectR Published in : 'To be published as "Jump dynamics in high frequency crypto markets"' Description : 'Scala

LvB 12 Jan 01, 2023