Computations and statistics on manifolds with geometric structures.

Overview

Geomstats

Code PyPI version Downloads Zenodo
Continuous Integration Build Status python
Code coverage (numpy) Coverage Status np
Code coverage (autograd, tensorflow, pytorch) Coverage Status autogradCoverage Status tfCoverage Status torch
Documentation doc binder tutorial
Community contributions Slack Twitter

NEWS:

Geomstats is an open-source Python package for computations and statistics on manifolds. The package is organized into two main modules: geometry and learning.

The module geometry implements concepts in differential geometry, and the module learning implements statistics and learning algorithms for data on manifolds.

If you find geomstats useful, please kindly cite our paper:

@article{JMLR:v21:19-027,
  author  = {Nina Miolane and Nicolas Guigui and Alice Le Brigant and Johan Mathe and Benjamin Hou and Yann Thanwerdas and Stefan Heyder and Olivier Peltre and Niklas Koep and Hadi Zaatiti and Hatem Hajri and Yann Cabanes and Thomas Gerald and Paul Chauchat and Christian Shewmake and Daniel Brooks and Bernhard Kainz and Claire Donnat and Susan Holmes and Xavier Pennec},
  title   = {Geomstats:  A Python Package for Riemannian Geometry in Machine Learning},
  journal = {Journal of Machine Learning Research},
  year    = {2020},
  volume  = {21},
  number  = {223},
  pages   = {1-9},
  url     = {http://jmlr.org/papers/v21/19-027.html}
}

Install geomstats via pip3

From a terminal (OS X & Linux), you can install geomstats and its requirements with pip3 as follows:

pip3 install geomstats

This method installs the latest version of geomstats that is uploaded on PyPi. Note that geomstats is only available with Python3.

Install geomstats via Git

From a terminal (OS X & Linux), you can install geomstats and its requirements via git as follows:

git clone https://github.com/geomstats/geomstats.git
pip3 install -r requirements.txt

This method installs the latest GitHub version of geomstats.

To add the requirements.txt into a conda environment, you can use the enviroment.yml file as follows:

conda env create --file environment.yml

Note that this only installs the minimum requirements. To add the optional, development, continuous integration and documentation requirements, refer to the files *-requirements.txt.

Install geomstats : Developers

Developers should git clone the master branch of this repository, together with the development requirements and the optional requirements to enable tensorflow and pytorch backends:

pip3 install -r dev-requirements.txt -r opt-requirements.txt

Additionally, we recommend installing our pre-commit hook, to ensure that your code follows our Python style guidelines:

pre-commit install

Choose the backend

Geomstats can run seamlessly with numpy, tensorflow or pytorch. Note that pytorch and tensorflow requirements are optional, as geomstats can be used with numpy only. By default, the numpy backend is used. The visualizations are only available with this backend.

To get the tensorflow and pytorch versions compatible with geomstats, install the optional requirements:

pip3 install -r opt-requirements.txt

You can choose your backend by setting the environment variable GEOMSTATS_BACKEND to numpy, tensorflow or pytorch, and importing the backend module. From the command line:

export GEOMSTATS_BACKEND=pytorch

and in the Python3 code:

import geomstats.backend as gs

Getting started

To use geomstats for learning algorithms on Riemannian manifolds, you need to follow three steps: - instantiate the manifold of interest, - instantiate the learning algorithm of interest, - run the algorithm.

The data should be represented by a gs.array. This structure represents numpy arrays, or tensorflow/pytorch tensors, depending on the choice of backend.

The following code snippet shows the use of tangent Principal Component Analysis on simulated data on the space of 3D rotations.

from geomstats.geometry.special_orthogonal import SpecialOrthogonal
from geomstats.learning.pca import TangentPCA

so3 = SpecialOrthogonal(n=3, point_type="vector")
metric = so3.bi_invariant_metric

data = so3.random_uniform(n_samples=10)

tpca = TangentPCA(metric=metric, n_components=2)
tpca = tpca.fit(data)
tangent_projected_data = tpca.transform(data)

All geometric computations are performed behind the scenes. The user only needs a high-level understanding of Riemannian geometry. Each algorithm can be used with any of the manifolds and metric implemented in the package.

To see additional examples, go to the examples or notebooks directories.

Contributing

See our contributing guidelines!

Acknowledgements

This work is supported by:

  • the Inria-Stanford associated team GeomStats,
  • the European Research Council (ERC) under the European Union's Horizon 2020 research and innovation program (grant agreement G-Statistics No. 786854),
  • the French society for applied and industrial mathematics (SMAI),
  • the National Science Foundation (grant NSF DMS RTG 1501767).
Comments
  • Make submersion and tangent_submersion abstract in LevelSet

    Make submersion and tangent_submersion abstract in LevelSet

    Partially answers #1680 for LevelSet.

    Missing:

    • docstrings

    Need to discuss:

    • should value somehow also be forced to be defined or passing as argument to parent works fine? (I think it should be OK as argument)
    • is the API naming OK? e.g. point and vector, point, respectively?

    @ninamiolane @ymontmarin

    opened by luisfpereira 27
  • Sasaki metric

    Sasaki metric

    Checklist

    • [x] My pull request has a clear and explanatory title.
    • [x] If neccessary, my code is vectorized.
    • [x] I have added apropriate unit tests.
    • [x] I have made sure the code passes all unit tests. (refer to comment below)
    • [x] My PR follows PEP8 guidelines. (refer to comment below)
    • [x] My PR follows geomstats coding style and API.
    • [x] My code is properly documented ~~and I made sure the documentation renders properly.~~ (Link) (Code is documented, but I cannot get sphinx-build docs/ docs/html running, as it fails immediately.)

    Description

    A natural choice of metric on the tangent bundle of a Riemannian manifold is the Sasaki metric and this PR implements it.

    Additional context

    This implementation was originally part of the submission 'Sasaki Metric and Applications in Geodesic Analysis' to the ICLR Computational Geometry & Topology Challenge 2022.

    opened by ambellan 22
  • Doc overview

    Doc overview

    Opening this PR to provide the package with an 'overview.md' file, following the discussion we had with Nina on classes and inheritance friday afternoon! (read here)

    This may or may not be the right place to put it... Most of it could for instance be moved to the geomstats/geometry/README.md and referenced from the index readme, should also be configured available to the website... I'm sure @cshewmake2 will have some ideas about this :)

    I think it would be good for us to have some kind of common reference, for us to work on, available somewhere as soon as possible!

    In the meantime we can discuss here :)

    PS: I also have a Mat(n,p) PR ready to open but I have to go! I'll submit those stepwise, i.e. 'merge-matrices', 'merge-general-linear', 'merge-special-orthogonal' branches ...

    opened by opeltre 18
  • Function spaces implementation : starting with infinite dimensional spheres

    Function spaces implementation : starting with infinite dimensional spheres

    Hello, This is a follow-up for #1194 (apologies for the extreme delay on this) This PR:

    • Introduces function spaces module with the implementation of infinite-dimensional spheres with L2 metrics that are mentioned in Chapter 4.3.2 in the book Functional and Shape Data Analysis.
    • This class will later be used to aid the implementation of general probability measures under the Fisher-Rao metric and SRSF for functions to be added later.
    opened by kiranvad 17
  • Geodesic regression

    Geodesic regression

    Hi Geomstats dev team --

    I'm interested in performing geodesic regression on the Grassmann manifold (see this paper by Thomas Fletcher). I have dependent variables Y sampled from this manifold, where each sample Y_i is in ( R^{n x k} ). For each Y_i, I also have a vector of scalar-valued independent variables, X_i, (like age, sex, other demographic information).

    I'm hoping to use Geomstats to fit the regression of Y ~ X but am unsure of how to go about doing this. It seems that the ML tutorials assume the manifold-valued data will be used as the independent, rather than dependent, variable.

    Any help is much appreciated.

    opened by kristianeschenburg 16
  • Simple new pullbackdiffeo

    Simple new pullbackdiffeo

    Checklist

    • [x] My pull request has a clear and explanatory title.
    • [x] If neccessary, my code is vectorized.
    • [x] I have added apropriate unit tests.
    • [x] I have made sure the code passes all unit tests. (refer to comment below)
    • [x] My PR follows PEP8 guidelines. (refer to comment below)
    • [x] My PR follows geomstats coding style and API.
    • [x] My code is properly documented and I made sure the documentation renders properly. (Link)
    • [x] I have linked to issues and PRs that are relevant to this PR.

    Description

    Issue

    Additional context

    opened by ymontmarin 15
  • Debugging SO(3) in vector form for all backends

    Debugging SO(3) in vector form for all backends

    A number of definitions and changes in functions to make Pytorch and Tensorflow cope with SO(3) in vector form.

    • Another way of computing the rotation vector from a rotation matrix, based on the axis-angle representation for the case theta ~ pi (https://en.wikipedia.org/wiki/Axis%E2%80%93angle_representation#Log_map_from_SO(3)to%7F'%22%60UNIQ--postMath-0000000D-QINU%60%22'%7F(3)). The other one made Tensorflow and Pytorch output wrong results (and I did not have the courage to dig into it). Many tests are now successful with Pytorch and Tensorflow, to the price of raising the threshold a bit. The limit cases are indeed troubling for them, might come from the fact that many computations are done in float32. In particular, it fails some tests that numpy passes (e.g. gs.allclose(base_point, self.group.identity)), which induces more computations and increases numerical errors.

    • set_diag and get_slice were defined to mimic numpy's behavior (and, of course, because of Tensorflow).

    opened by pchauchat 15
  • Create DiscretizedCurvesSpace

    Create DiscretizedCurvesSpace

    I have implemented two different metrics for curves:

    • the L2 metric
    • the Square Root Velocity (SRV) metric (see e.g. https://ieeexplore.ieee.org/abstract/document/5601739)

    The SRV framework is implemented only for curves in a Euclidean space for starters (I have to figure out how to test the fact that the base manifold is Euclidean), because the formulas are considerably simpler in that setting.

    I needed the inner_product_matrix method of Hypersphere so I added it.

    opened by alebrigant 15
  • Reserve `scale` parameter to ScalarProductMetric

    Reserve `scale` parameter to ScalarProductMetric

    Closes #1757 and closes #1758 by removing the scale parameter from various manifolds.

    These are the Hyperbolic, HPDMatrices and PoincarePolydisk manifolds, along with all their related classes.

    @YannCabanes The tests are failing on PoincarePolydisk and I don't understand the objects well enough to remedy the issue. Maybe you could have a look?

    opened by johnharveymath 13
  • Support product manifolds of matrices

    Support product manifolds of matrices

    This PR is related to the PR #1727 adding a product manifold ProductHPDMatricesAndSiegelDisks which is a product manifold of matrices. To add this manifold, we have to modify the way that ProductManifold handles the points shape. This PR is inspired by a discussion with @lpereira95 and @johnharveymath in PR #1727.

    opened by YannCabanes 13
  • Curvature implementation

    Curvature implementation

    Implementation of methods for metric and connection, so that riemannian metrics can return :

    • riemannian tensor
    • curvature
    • ricci tensor
    • scalar curvature
    • sectional curvature (was already implemented if curvature was)

    Tests on shapes of curvature tensors symmetries of riemannian tensor on test files (geometry_test_cases and data_generation), and on negativity of sectional curvature of dirichlet distributions (on another script file, I did not know if I should add it in the test file).

    opened by Jules-Deschamps 13
  • Refactor Product and NFold

    Refactor Product and NFold

    Description

    This PR is a straightforward refactoring. It places all code for products together in product_manifold.py and all code for n-fold manifolds together in nfold_manifold.py.

    Issue

    ProductManifold and NFoldManifold were in one module, while ProductRiemannianMetric and NFoldMetric were in another. This separation of the manifold from the metric is not in line with practice across the code base.

    On the other hand, mixing product classes and n-fold classes together in modules does not seem to have any benefits.

    opened by johnharveymath 2
  • Add product positive reals and complex poincare disks

    Add product positive reals and complex poincare disks

    Add the ProductPositiveRealsAndComplexPoincareDisks manifold.

    The ProductPositiveRealsAndComplexPoincareDisks manifold is defined as a product manifold of the positive reals manifold and (n-1) complex Poincaré disks. The positive reals and complex Poincaré disks product has a product metric. The product metric on the positive reals and complex Poincaré disks product space is the positive reals metric and (n - 1) complex Poincaré metrics multiplied by constants. This product manifold can be used to represent Toeplitz HPD matrices. The ProductPositiveRealsAndComplexPoincareDisks corresponds to the one-dimensional case of ProductHPDMatricesAndSiegelDisks. Indeed, PositiveReals is the one-dimensional case of HPDMatrices and ComplexPoincareDisk is the one-dimensional case of Siegel. In these one-dimensional manifolds, many simplifications occur compared with the multidimensional manifolds since matrices commute in dimension 1.

    References

    .. [Cabanes_2022] Yann Cabanes. Multidimensional complex stationary centered Gaussian autoregressive time series machine learning in Poincaré and Siegel disks: application for audio and radar clutter classification, PhD thesis, tel-03708515, 2022. https://theses.hal.science/tel-03708515 .. [Cabanes_CESAR_2019] Yann Cabanes, Frédéric Barbaresco, Marc Arnaudon et Jérémie Bigot. Unsupervised Machine Learning for Pathological Radar Clutter Clustering: the P-Mean-Shift Algorithm, IEEE, C&ESAR 2019, Rennes, France, 2019. https://hal.archives-ouvertes.fr/hal-02875430 .. [Cabanes_RADAR_2019] Yann Cabanes, Frédéric Barbaresco, Marc Arnaudon et Jérémie Bigot. Non-Supervised High Resolution Doppler Machine Learning for Pathological Radar Clutter, IEEE, RADAR 2019, Toulon, France, 2019. https://hal.archives-ouvertes.fr/hal-02875415 .. [Cabanes_GSI_2019] Yann Cabanes, Frédéric Barbaresco, Marc Arnaudon et Jérémie Bigot. Toeplitz Hermitian Positive Definite Matrix Machine Learning based on Fisher Metric, IEEE, GSI 2019, Toulouse, France, 2019. https://hal.archives-ouvertes.fr/hal-02875403 .. [Le_Brigant_2017] Alice Le Brigant. Probability on the spaces of curves and the associated metric spaces using information geometry; radar applications, PhD thesis, tel-01635258, 2017. https://theses.hal.science/tel-01635258 .. [Jeuris_2016] B. Jeuris and R. Vandebril. The Kahler mean of Block-Toeplitz matrices with Toeplitz structured blocks, 2016. https://epubs.siam.org/doi/pdf/10.1137/15M102112X .. [Yang_2013] Marc Arnaudon, Frédéric Barbaresco and Le Yang. Riemannian Medians and Means With Applications to Radar Signal Processing, IEEE, 2013.

    opened by YannCabanes 10
  • Add method to change the lists in `scalar_product_metric.py`

    Add method to change the lists in `scalar_product_metric.py`

    Follows #1740.

    Scaling factor for wrapping of methods of underlying_metric in ScalarProducMetric is given by verifying if method name belongs to SQRT_LIST, LINEAR_LIST, QUADRATIC_LIST, INVERSE_LIST, INVERSE_QUADRATIC_LIST, and mapping it with the right value.

    Currently, there's no proper way of updating these lists. Something like this works, but looks more like hacking than programming:

    
    from geomstats.geometry import scalar_product_metric
    
    scalar_product_metric.SQRT_LIST.append("my_new_method")
    

    A better solution may be something like (with better naming):

    from geomstats.geometry.scalar_product_metric import add_scaled_method
    
    add_scaled_method("my_new_method", scaling_type="sqrt")
    

    This is relevant e.g. for "power" users that need to implement a new metric with a method whose output needs to be scaled.

    (With @johnharveymath.)

    enhancement 
    opened by luisfpereira 0
  • Add functions and associated tests for Binomial and Exponential Distributions

    Add functions and associated tests for Binomial and Exponential Distributions

    Checklist

    • [x] My pull request has a clear and explanatory title.
    • [x] If neccessary, my code is vectorized.
    • [x] I have added apropriate unit tests.
    • [ ] I have made sure the code passes all unit tests. (refer to comment below)
    • [x] My PR follows PEP8 guidelines. (refer to comment below)
    • [x] My PR follows geomstats coding style and API.
    • [x] My code is properly documented and I made sure the documentation renders properly. (Link)
    • [x] I have linked to issues and PRs that are relevant to this PR.

    Description

    Add metric_matrix and geodesic for Binomial and Exponential Distributions as well as associated tests. Code requires #1753 resolved to work properly with pytorch.

    Issue

    Additional context

    opened by tramy1258 12
  • Refactor `InformationManifoldMixins` for consistency with children and `FisherRaoMetric`

    Refactor `InformationManifoldMixins` for consistency with children and `FisherRaoMetric`

    This refactoring should address several points:

    1 InformationManifoldMixins contains methods that are not defined by any children and should probably be removed: point_to_cdf and cdf.

    2 In children, the structure point_to_pdf and pdf as different methods is not followed. This needs to be homogenized. I suggest to keep the children way, i.e. pdf defined within point_to_pdf.

    I've suggested in #1612 to follow the current approach in InformationManifoldMixins, but looking to cases such as CenteredNormalDistributions we can see it is worthy sometimes to do some operations only once (i.e. do not repeat them for each call of pdf(x), which is only possible following the approach currently implemented in children.

    3 pmf should be called pdf to allow it to be used with FisherRaoMetric and to have the same API for all distributions.

    bug refactoring information geometry 
    opened by luisfpereira 0
Releases(2.5.0)
  • v2.4.1(Jan 28, 2022)

    What's Changed

    • Stable by @ninamiolane in https://github.com/geomstats/geomstats/pull/1177
    • Add the dataset of cells to the nb 01 data on manifolds by @ninamiolane in https://github.com/geomstats/geomstats/pull/1178
    • Modify shape analysis notebook by @alebrigant in https://github.com/geomstats/geomstats/pull/1180
    • make codecov sensible again by @SaitejaUtpala in https://github.com/geomstats/geomstats/pull/1181
    • Un-stall PR on General Elastic Metric by @ninamiolane in https://github.com/geomstats/geomstats/pull/1182
    • full rank matrices by @annacalissano in https://github.com/geomstats/geomstats/pull/1186
    • Improve MDM by @qbarthelemy in https://github.com/geomstats/geomstats/pull/1188
    • Improve MDM, 2 by @qbarthelemy in https://github.com/geomstats/geomstats/pull/1189
    • Add predict_proba to MDM by @qbarthelemy in https://github.com/geomstats/geomstats/pull/1193
    • Add exp and log maps for SPD Euclidean by @qbarthelemy in https://github.com/geomstats/geomstats/pull/1192
    • Patching Backend Operations by @captain-pool in https://github.com/geomstats/geomstats/pull/1190
    • reformat code snippets for highlighting in documentation by @nguigs in https://github.com/geomstats/geomstats/pull/1196
    • add extrinsic to spherical and its tangent by @nguigs in https://github.com/geomstats/geomstats/pull/1195
    • Fix typo by @heytitle in https://github.com/geomstats/geomstats/pull/1199
    • updating symeig with eigh by @captain-pool in https://github.com/geomstats/geomstats/pull/1201
    • Committing new files for the psd matrices of rank k by @annacalissano in https://github.com/geomstats/geomstats/pull/1191
    • Fix issue #1083 by @alebrigant in https://github.com/geomstats/geomstats/pull/1209
    • Cleaning hyperbolic doc and vectorisation by @tgeral68 in https://github.com/geomstats/geomstats/pull/1211
    • Add list of hackathons to the README by @ninamiolane in https://github.com/geomstats/geomstats/pull/1214
    • rename EmbeddedManifold into LevelSet by @nguigs in https://github.com/geomstats/geomstats/pull/1219
    • Add visualization of SPD(2) matrices through Ellipsis. by @ninamiolane in https://github.com/geomstats/geomstats/pull/1210
    • Rm deprecated code in lie_groups.py about loss and grad by @ninamiolane in https://github.com/geomstats/geomstats/pull/1215
    • Temporarily remove tests with python 3.7 3.8 for the hackathon (only 3.9 is tested) by @ninamiolane in https://github.com/geomstats/geomstats/pull/1221
    • add circle with representation by one angle by @nguigs in https://github.com/geomstats/geomstats/pull/1212
    • pytest migration - 1 by @SaitejaUtpala in https://github.com/geomstats/geomstats/pull/1205
    • Example of geodesic regression on the Grassmann manifold by @nguigs in https://github.com/geomstats/geomstats/pull/1220
    • FIX: Change docstring for the manifold PSD(n, k) by @ninamiolane in https://github.com/geomstats/geomstats/pull/1230
    • Add documentation in autodiff modules by @ninamiolane in https://github.com/geomstats/geomstats/pull/1226
    • faster spd checking by @SaitejaUtpala in https://github.com/geomstats/geomstats/pull/1143
    • Add triu and test by @mortenapedersen in https://github.com/geomstats/geomstats/pull/1232
    • Add API for symplectic and leapfrog steps in integrators by @ninamiolane in https://github.com/geomstats/geomstats/pull/1233
    • Template for lddmm metric on landmarks by @nguigs in https://github.com/geomstats/geomstats/pull/883
    • Try running tests on Heisenberg by @ninamiolane in https://github.com/geomstats/geomstats/pull/1238
    • Add 3D heisenberg group in vector representation and unit tests by @mortenapedersen in https://github.com/geomstats/geomstats/pull/1213
    • Try PR on subRiemannian geometry by @ninamiolane in https://github.com/geomstats/geomstats/pull/1239
    • Add sub-Riemannian metric class by @mortenapedersen in https://github.com/geomstats/geomstats/pull/1237
    • Add a subcase to torch solve_sylvester by @emaignant in https://github.com/geomstats/geomstats/pull/1223
    • Add hamiltonian, cometric and inner-coproduct by @ninamiolane in https://github.com/geomstats/geomstats/pull/1240
    • Remove outdated loss and grad functions in riemannian metric by @ninamiolane in https://github.com/geomstats/geomstats/pull/1241
    • Xpennec stiefel tests by @xpennec in https://github.com/geomstats/geomstats/pull/1236
    • Allow to pass initial point to FrechetMean estimator by @nguigs in https://github.com/geomstats/geomstats/pull/1234
    • add subcase to tensorflow + add test by @nguigs in https://github.com/geomstats/geomstats/pull/1242
    • Graphspace by @annacalissano in https://github.com/geomstats/geomstats/pull/1244
    • Cholesky space by @SaitejaUtpala in https://github.com/geomstats/geomstats/pull/1142
    • Clean style of sub-Riemannian metrics by @ninamiolane in https://github.com/geomstats/geomstats/pull/1250
    • Adapt DeepSource config by @ninamiolane in https://github.com/geomstats/geomstats/pull/1255
    • fix docs by @SaitejaUtpala in https://github.com/geomstats/geomstats/pull/1258
    • Fix docs by @SaitejaUtpala in https://github.com/geomstats/geomstats/pull/1259
    • update documentation key by @SaitejaUtpala in https://github.com/geomstats/geomstats/pull/1260
    • Refactor/clean module of discrete curves by @alebrigant in https://github.com/geomstats/geomstats/pull/1248
    • clean test_symmetric_matrices by @SaitejaUtpala in https://github.com/geomstats/geomstats/pull/1261
    • Update contributing: nose -> pytest by @ninamiolane in https://github.com/geomstats/geomstats/pull/1262
    • Acknowledge recent contributors by @ninamiolane in https://github.com/geomstats/geomstats/pull/1265
    • Add lead author(s) to each module by @ninamiolane in https://github.com/geomstats/geomstats/pull/1266
    • cleaning github actions by @SaitejaUtpala in https://github.com/geomstats/geomstats/pull/1252
    • check by @SaitejaUtpala in https://github.com/geomstats/geomstats/pull/1268
    • Rename lr to init_step_size everywhere by @nguigs in https://github.com/geomstats/geomstats/pull/1274
    • Introduce n-fold manifolds by @nguigs in https://github.com/geomstats/geomstats/pull/1249
    • build docs through commands not through action by @SaitejaUtpala in https://github.com/geomstats/geomstats/pull/1275
    • rewrite by @SaitejaUtpala in https://github.com/geomstats/geomstats/pull/1276
    • conditional deployement by @SaitejaUtpala in https://github.com/geomstats/geomstats/pull/1277
    • Fix docs GitHub actions 3 by @SaitejaUtpala in https://github.com/geomstats/geomstats/pull/1278
    • Add notebook with cancer cell shapes analysis by @ninamiolane in https://github.com/geomstats/geomstats/pull/1280
    • Add hacks to help FrechetMean computations + Display quantiles to the mean shape by @ninamiolane in https://github.com/geomstats/geomstats/pull/1284
    • NEW: doc strings generator and checker by @ninamiolane in https://github.com/geomstats/geomstats/pull/1290
    • Test if rotation matrices are antipodals before trying to compute the Log by @ninamiolane in https://github.com/geomstats/geomstats/pull/1229
    • Add missing nb-thumbnails tags to render tutorials on doc website by @ninamiolane in https://github.com/geomstats/geomstats/pull/1291
    • add missing notebook by @SaitejaUtpala in https://github.com/geomstats/geomstats/pull/1293
    • clean test_spd_matrices with parametrization by @SaitejaUtpala in https://github.com/geomstats/geomstats/pull/1263
    • Hotfix: Make tests pass again w. py38 and skipping failing tests by @ninamiolane in https://github.com/geomstats/geomstats/pull/1296
    • Fix Build->Test Badge on README.rst by @ninamiolane in https://github.com/geomstats/geomstats/pull/1297
    • check for repo name by @SaitejaUtpala in https://github.com/geomstats/geomstats/pull/1300
    • Hotfix: Bring back linting on tests/ folder + fix some code style issues by @ninamiolane in https://github.com/geomstats/geomstats/pull/1299
    • Add more conditions to docs.yml by @SaitejaUtpala in https://github.com/geomstats/geomstats/pull/1301
    • Geomstats v 2.4.1 by @ninamiolane in https://github.com/geomstats/geomstats/pull/1305
    • Merge master (v2.4.1) into stable by @ninamiolane in https://github.com/geomstats/geomstats/pull/1306

    New Contributors

    • @annacalissano made their first contribution in https://github.com/geomstats/geomstats/pull/1186
    • @qbarthelemy made their first contribution in https://github.com/geomstats/geomstats/pull/1188
    • @captain-pool made their first contribution in https://github.com/geomstats/geomstats/pull/1190
    • @heytitle made their first contribution in https://github.com/geomstats/geomstats/pull/1199
    • @mortenapedersen made their first contribution in https://github.com/geomstats/geomstats/pull/1232

    Full Changelog: https://github.com/geomstats/geomstats/compare/2.3.1...v2.4.1

    Source code(tar.gz)
    Source code(zip)
  • v1.6(Apr 27, 2018)

Towards Calibrated Model for Long-Tailed Visual Recognition from Prior Perspective

Towards Calibrated Model for Long-Tailed Visual Recognition from Prior Perspective Zhengzhuo Xu, Zenghao Chai, Chun Yuan This is the PyTorch implement

Sincere 16 Dec 15, 2022
Official Pytorch implementation of "Learning to Estimate Robust 3D Human Mesh from In-the-Wild Crowded Scenes", CVPR 2022

Learning to Estimate Robust 3D Human Mesh from In-the-Wild Crowded Scenes / 3DCrowdNet News 💪 3DCrowdNet achieves the state-of-the-art accuracy on 3D

Hongsuk Choi 113 Dec 21, 2022
This is the official repository for our paper: ''Pruning Self-attentions into Convolutional Layers in Single Path''.

Pruning Self-attentions into Convolutional Layers in Single Path This is the official repository for our paper: Pruning Self-attentions into Convoluti

Zhuang AI Group 77 Dec 26, 2022
Channel Pruning for Accelerating Very Deep Neural Networks (ICCV'17)

Channel Pruning for Accelerating Very Deep Neural Networks (ICCV'17)

Yihui He 1k Jan 03, 2023
PyTorch implementation of Hierarchical Multi-label Text Classification: An Attention-based Recurrent Network

hierarchical-multi-label-text-classification-pytorch Hierarchical Multi-label Text Classification: An Attention-based Recurrent Network Approach This

Mingu Kang 17 Dec 13, 2022
Code for Pose-Controllable Talking Face Generation by Implicitly Modularized Audio-Visual Representation (CVPR 2021)

Pose-Controllable Talking Face Generation by Implicitly Modularized Audio-Visual Representation (CVPR 2021) Hang Zhou, Yasheng Sun, Wayne Wu, Chen Cha

Hang_Zhou 628 Dec 28, 2022
Implementation of "Distribution Alignment: A Unified Framework for Long-tail Visual Recognition"(CVPR 2021)

Implementation of "Distribution Alignment: A Unified Framework for Long-tail Visual Recognition"(CVPR 2021)

105 Nov 07, 2022
YOLOPのPythonでのONNX推論サンプル

YOLOP-ONNX-Video-Inference-Sample YOLOPのPythonでのONNX推論サンプルです。 ONNXモデルは、hustvl/YOLOP/weights を使用しています。 Requirement OpenCV 3.4.2 or later onnxruntime 1.

KazuhitoTakahashi 8 Sep 05, 2022
dyld_shared_cache processing / Single-Image loading for BinaryNinja

Dyld Shared Cache Parser Author: cynder (kat) Dyld Shared Cache Support for BinaryNinja Without any of the fuss of requiring manually loading several

cynder 76 Dec 28, 2022
EgGateWayGetShell py脚本

EgGateWayGetShell_py 免责声明 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。 使用 python3 eg.py urls.txt 目标 title:锐捷网络-EWEB网管系统 port:4430 漏洞成因 ?p

榆木 61 Nov 09, 2022
Tensorflow Tutorials using Jupyter Notebook

Tensorflow Tutorials using Jupyter Notebook TensorFlow tutorials written in Python (of course) with Jupyter Notebook. Tried to explain as kindly as po

Sungjoon 2.6k Dec 22, 2022
🍅🍅🍅YOLOv5-Lite: lighter, faster and easier to deploy. Evolved from yolov5 and the size of model is only 1.7M (int8) and 3.3M (fp16). It can reach 10+ FPS on the Raspberry Pi 4B when the input size is 320×320~

YOLOv5-Lite:lighter, faster and easier to deploy Perform a series of ablation experiments on yolov5 to make it lighter (smaller Flops, lower memory, a

pogg 1.5k Jan 05, 2023
A Simple Key-Value Data-store written in Python

mercury-db This is a File Based Key-Value Datastore that supports basic CRUD (Create, Read, Update, Delete) operations developed using Python. The dat

Vaidhyanathan S M 1 Jan 09, 2022
Code repo for "Cross-Scale Internal Graph Neural Network for Image Super-Resolution" (NeurIPS'20)

IGNN Code repo for "Cross-Scale Internal Graph Neural Network for Image Super-Resolution" [paper] [supp] Prepare datasets 1 Download training dataset

Shangchen Zhou 278 Jan 03, 2023
Megaverse is a new 3D simulation platform for reinforcement learning and embodied AI research

Megaverse Megaverse is a new 3D simulation platform for reinforcement learning and embodied AI research. The efficient design of the engine enables ph

Aleksei Petrenko 191 Dec 23, 2022
Phy-Q: A Benchmark for Physical Reasoning

Phy-Q: A Benchmark for Physical Reasoning Cheng Xue*, Vimukthini Pinto*, Chathura Gamage* Ekaterina Nikonova, Peng Zhang, Jochen Renz School of Comput

29 Dec 19, 2022
Parameterized Explainer for Graph Neural Network

PGExplainer This is a Tensorflow implementation of the paper: Parameterized Explainer for Graph Neural Network https://arxiv.org/abs/2011.04573 NeurIP

Dongsheng Luo 89 Dec 12, 2022
unofficial pytorch implement of "Squareplus: A Softplus-Like Algebraic Rectifier"

SquarePlus (Pytorch implement) unofficial pytorch implement of "Squareplus: A Softplus-Like Algebraic Rectifier" SquarePlus Squareplus is a Softplus-L

SeeFun 3 Dec 29, 2021
Implementation of CVPR 2021 paper "Spatially-invariant Style-codes Controlled Makeup Transfer"

SCGAN Implementation of CVPR 2021 paper "Spatially-invariant Style-codes Controlled Makeup Transfer" Prepare The pre-trained model is avaiable at http

118 Dec 12, 2022
Many Class Activation Map methods implemented in Pytorch for CNNs and Vision Transformers. Including Grad-CAM, Grad-CAM++, Score-CAM, Ablation-CAM and XGrad-CAM

Class Activation Map methods implemented in Pytorch pip install grad-cam ⭐ Tested on many Common CNN Networks and Vision Transformers. ⭐ Includes smoo

Jacob Gildenblat 6.6k Jan 06, 2023