← Open Source
naver

roma

RoMa: A lightweight library to deal with 3D rotations in PyTorch.

Model DevelopmentDomain-specific trainingPython
Open on GitHub
Momentum
+0stars in 24 hours0.0%
645
Stars
25
Forks
+0
This week
4
Contributors
Created 2021-06-29 · Updated 2026-10-13 · #15589 today
Top developers
rbregierAfloat16eigenvivek

naver/roma is ranked 15,589 with 645 stars.

Same-category comparison

naver/roma is ranked 15,589 among these 7 peers; malllabiisc/CompGCN is ranked 15,588.

Same-category comparison
NameRankMetrics
erdogant/bnlearn15,583
Language:
Jupyter Notebook
Stars:
645
Forks:
61
Description:
Python package for Causal Discovery by learning the graphical structure of Bayesian networks. Structure Learning, Parameter Learning, Inferences, Sampling methods.
huanghoujing/AlignedReID-Re-Production-Pytorch15,584
Language:
Python
Stars:
645
Forks:
189
Description:
Reproduce AlignedReID: Surpassing Human-Level Performance in Person Re-Identification, using Pytorch.
jvanvugt/pytorch-domain-adaptation15,586
Language:
Python
Stars:
645
Forks:
107
Description:
A collection of implementations of adversarial domain adaptation algorithms.
malllabiisc/CompGCN15,588
Language:
Python
Stars:
645
Forks:
110
Description:
ICLR 2020: Composition-Based Multi-Relational Graph Convolutional Networks.
OpenGVLab/GITM15,597
Stars:
644
Forks:
25
Description:
Ghost in the Minecraft: Generally Capable Agents for Open-World Environments via Large Language Models with Text-based Knowledge and Memory.
yinguobing/cnn-facial-landmark15,607
Language:
Python
Stars:
644
Forks:
177
Description:
Training code for facial landmark detection based on deep convolutional neural network.
JIA-Lab-research/Seg-Zero15,611
Language:
Python
Stars:
643
Forks:
31
Description:
Project Page For "Seg-Zero: Reasoning-Chain Guided Segmentation via Cognitive Reinforcement".
Key parameters and specifications
Key parameters and specifications
ParameterValue
LanguagePython
CategoryModel Development
SubcategoryDomain-specific training
Keywords3D
Stars645
Forks25
Contributors4
Created date2021-06-29
Updated date2026-10-13
Stars in 1 day0
Stars in 7 days0
Rank15,589
Previous rank15,397
Rank change-192
7-day stars rank15,076
Previous 7-day stars rank15,077
7-day stars rank change1
Total stars rank15,872
Previous total stars rank15,842
Total stars rank change-30
CountrySouth Korea
README summary

*RoMa*: A lightweight library to deal with 3D rotations in PyTorch. *RoMa* (which stands for Rotation Manipulation) provides differentiable mappings between 3D rotation representations, mappings from Euclidean to rotation space, and various utilities related to rotations. It is implemented in PyTorch and aims to be an easy-to-use and reasonably efficient toolbox for Machine Learning and gradient-based optimization. Documentation Latest documentation is available here: Below are some examples of use of *RoMa*: Installation The easiest way to install

*RoMa* is to use pip: Alternatively one can install the latest version of *RoMa* directly from the source repository: License *RoMa*, Copyright (c) 2020 NAVER Corp. , is licensed under the 3-Clause BSD License (see license). Documentation is generated, distributed and displayed with the support of Sphinx and other materials (see notice). Contributing Please open an issue on GitHub if you have any suggestions. We aim at keeping RoMa reliable and maintainable, and may accept contribution (whether submitted as suggestions

or pull requests) at our discretion to that aim. By contributing to RoMa, you are agreeing that your contributions (whether suggestions or pull requests) for which you have the right or authority to submit are licensed under its LICENSE. References For a more in-depth discussion regarding differentiable mappings on the rotation space, please refer to: __Romain Brégier, Deep Regression on Manifolds: a 3D Rotation Case Study. __ in _2021 International Conference on 3D Vision (3DV)_, 2021. Please cite this

work in your publications:

Frequently asked questions

How many stars and forks are recorded?

naver/roma has 645 stars and 25 forks.

What is the repository rank?

naver/roma is ranked 15,589.

What language and category are recorded?

naver/roma has 645 stars, uses Python and belongs to Model Development.

Which repository is closest in rank?

naver/roma is compared with malllabiisc/CompGCN, ranked 15,588 with 645 stars.

README

RoMa: A lightweight library to deal with 3D rotations in PyTorch.

RoMa (which stands for Rotation Manipulation) provides differentiable mappings between 3D rotation representations, mappings from Euclidean to rotation space, and various utilities related to rotations.

It is implemented in PyTorch and aims to be an easy-to-use and reasonably efficient toolbox for Machine Learning and gradient-based optimization.

Documentation

Latest documentation is available here: https://naver.github.io/roma/.

Below are some examples of use of RoMa:

import torch
import roma

# Arbitrary numbers of batch dimensions are supported, for convenience.
batch_shape = (2, 3)

# Conversion between rotation representations
rotvec = torch.randn(batch_shape + (3,))
q = roma.rotvec_to_unitquat(rotvec)
R = roma.unitquat_to_rotmat(q)
Rbis = roma.rotvec_to_rotmat(rotvec)
euler_angles = roma.unitquat_to_euler("xyz", q, degrees=True)

# Regression of a rotation from an arbitrary input:
# Special Procrustes orthonormalization of a 3x3 matrix
R1 = roma.special_procrustes(torch.randn(batch_shape + (3, 3)))
# Conversion from a 6D representation
R2 = roma.special_gramschmidt(torch.randn(batch_shape + (3, 2)))
# From the 10 coefficients of a 4x4 symmetric matrix
q = roma.symmatrixvec_to_unitquat(torch.randn(batch_shape + (10,)))

# Metrics on the rotation space
R1, R2 = roma.random_rotmat(size=5), roma.random_rotmat(size=5)
theta = roma.utils.rotmat_geodesic_distance(R1, R2)
cos_theta = roma.utils.rotmat_cosine_angle(R1.transpose(-2, -1) @ R2)

# Operations on quaternions
q_identity = roma.quat_product(roma.quat_conjugation(q), q)

# Spherical interpolation between rotation vectors (shortest path)
rotvec0, rotvec1 = torch.randn(batch_shape + (3,)), torch.randn(batch_shape + (3,))
rotvec_interpolated = roma.rotvec_slerp(rotvec0, rotvec1, steps)

# Rigid transformation T composed of a rotation part R and a translation part t
t = torch.randn(batch_shape + (3,))
T = roma.Rigid(R, t)
# Composing and inverting transformations
identity = T @ T.inverse()
# Casting the result to a batch of 4x4 homogeneous matrices
M = identity.to_homogeneous()

Installation

The easiest way to install RoMa is to use pip:

pip install roma

Alternatively one can install the latest version of RoMa directly from the source repository:

pip install git+https://github.com/naver/roma

License

RoMa, Copyright (c) 2020 NAVER Corp., is licensed under the 3-Clause BSD License (see license).

Bits of code were adapted from SciPy. Documentation is generated, distributed and displayed with the support of Sphinx and other materials (see notice).

Contributing

Please open an issue on GitHub if you have any suggestions. Pull requests are also welcome. We aim at keeping RoMa reliable and maintainable, and may accept contribution (whether submitted as suggestions or pull requests) at our discretion to that aim.

By contributing to RoMa, you are agreeing that your contributions (whether suggestions or pull requests) for which you have the right or authority to submit are licensed under its LICENSE.

References

For a more in-depth discussion regarding differentiable mappings on the rotation space, please refer to:

Please cite this work in your publications:

@inproceedings{bregier2021deepregression,
	title={Deep Regression on Manifolds: a {3D} Rotation Case Study},
	author={Br{\'e}gier, Romain},
	journal={2021 International Conference on 3D Vision (3DV)},
	year={2021}
}
Nearby in the ranking
Similar items