Top AI Repos — open-source AI, indexed and scored
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
gvnn: Geometric Vision with Neural Networks
| Date | Stars |
|---|---|
| 2026-07-31 | 450 |
| 2026-08-06 | 450 |
Today
— stars today
This week
— stars this week
This month
— stars this month
Momentum
0.0
growth rate 0.00%/day
*gvnn: Neural Network Library for Geometric Vision*, ECCV Workshop on Deep Geometry, 2016
*Ankur Handa, Michael Bloesch, Viorica Patraucean, Simon Stent, John McCormac, Andrew Davison*
Link to the paper [gvnn](http://arxiv.org/pdf/1607.07405.pdf)
What is gvnn?
=============
gvnn is primarily intended for self-supervised learning using low-level vision. It is inspired by the Spatial Transformer Networks (STN) paper that appeared in NIPS in 2015 and its open source code made available by [Maxime Oquab](https://github.com/qassemoquab/stnbhwd). The code is self contained *i.e.* the original implementation of STN by Maxime is also within the repository.
STs were mainly limited to applying only 2D transformations to the input. We added a new set of transformations often needed for manipulating data in 3D geometric computer vision. These include the 3D counterparts of what were used in original STN together with a lot more new transformations and different M-estimators.
* SO3 layer - Rotations are expressed in so3 vector (v1, v2, v3)
* Euler layer - Rotations are also expressed in euler angles
* SE3 and Sim3 layer
* Camera Pin-hole projection layer
* 3D Grid Generator
* Per-pixel 2D transformations
* 2D optical flow
* 6D Overparameterised optical flow
* Per-pixel SE(2)
* Slanted plane disparity
* Per-pixel 3D transformations
* 6D SE3/Sim3 transformations
* 10D transformation
* M-estimators
Below you will see some examples of how to use gvnn to set up architectures for self-supervised learning. We plan to make this a comprehensive and complete library to bridge the gap between geometry and deeplearning.
We are also performing large scale experiments on data collected both from real world and our previous work, [SceneNet](http://robotvault.bitbucket.org) to test different geometric computer vision algorithms *e.g.* dense image registration, 3D reconstruction and place recognition for loop closure.
Recommendation
=============
Please do a fresh pull in case you spot any errors since the repository is getting updated regularly.
Installation
=============
luarocks make gvnn-scm-1.rockspec
How to run gvnn on just CPU
=============
* Comment out require 'libcugvnn' from init.lua.
* Use the CMakeLists_CPU.txt *i.e.* copy CMakeLists_CPU.txt to CMakeLists.txt.
* Do a fresh install of gvnn and if possible uninstall the previous gvnn version.
Unit tests - Forward/Backward pass checks
=============
All the relevant unit tests are in test.lua. The gif image below shows how to run the this file and check for any forward/backward pass errors in the layer implementation.
<img src="assets/testing.gif" width="980">
All the modules that are in the repository have been tested properly and pass the forward and backward pass checks as defined in the test.lua. In case of any errors or visible hot-spots you may find in the code, please create an issue.
SO3 Layer
=============
Rotations are represented as so(3) 3-vector. This vector is turned into rotation matrix via the exponential map. For a more detailed view of the so(3) representation and exponential map read this tutorial from Ethan Eade: [Lie-Algebra Tutorial](http://www.ethaneade.com/latex2html/lie_groups/lie_groups.html). This is what the exponential map is [Exponential Map](http://www.ethaneade.com/latex2html/lie_groups/node37.html). Also, Tom Drummond's notes on Lie-Algebra are a great source to learn about exponential maps [Tom Drummond's notes](https://dl.dropboxusercontent.com/u/23948930/Papers/3DGeometry.pdf). The reason for choosing so3 representation is mainly due to its appealing properties when linearising rotations (via taylor series expansion) for iterative image alignment via classic linearise-solve-update rule. The figure below shows how linearisation for SO3 is fitting a local plane on the sphere

The backprop derivatives of this rotation parameterisation is all you need to make sure you can inseExcerpt of 13,356 characters
Read on GitHubWould you bet a product on this? Bounded 0–100 and slow moving.
matched fp:d8228005f940827b, llm:Repository title and description: 'gvnn: Geometric Vision with Neural Networks' — indicates combining geometric vision and neural networks.
matched fp:d8228005f940827b, llm:Repository title and description: 'gvnn: Geometric Vision with Neural Networks' — indicates combining geometric vision and neural networks.
matched fp:d8228005f940827b, llm:Repository title and description: 'gvnn: Geometric Vision with Neural Networks' — indicates combining geometric vision and neural networks.