Kornia team is happy to announce the release for v0.4.0.
We are releasing a new version for Kornia that includes different functionalities to work with 3D augmentations and volumetric data, local features matching, homographies and epipolar geometry.
In short, we list the following new features:
- Support for PyTorch v1.6.0.
- Local descriptors matching, homography and epipolar geometry API.
- 3D augmentations and low-level API to work with volumetric data.
Local features matching
We include an kornia.feature.matching API to perform local descriptors matching such classical and derived version of the nearest neighbor (NN).
import torch import kornia as K desc1 = torch.rand(2500, 128) desc2 = torch.rand(2500, 128) dists, idxs = K.feature.matching.match_nn(desc1, desc2) # 2500 / 2500x2
Homography and epipolar geometry
We also introduce kornia.geometry.homography including different functionalities to work with homographies and differentiable estimators based on the DLT formulation and the iteratively-reweighted least squares (IRWLS).
import torch import kornia as K pts1 = torch.rand(1, 8, 2) pts2 = torch.rand(1, 8, 2) H = K.find_homography_dlt(pts1, pts2, weights=torch.rand(1, 8)) # 1x3x3
In addition, we have ported some of the existing algorithms from opencv.sfm to PyTorch under kornia.geometry.epipolar that includes different functionalities to work with Fundamental, Essential or Projection matrices, and Triangulation methods useful for Structure from Motion problems.
3D augmentations and volumetric
We expand the kornia.augmentaion with a series of operators to perform 3D augmentations for volumetric data.
In this release, we include the following first set of geometric 3D augmentations methods:
- RandomDepthicalFlip3D (along depth axis)
- RandomVerticalFlip3D (along height axis)
- RandomHorizontalFlip3D (along width axis)
The API for 3D augmentation work same as with 2D image augmentations:
import torch import kornia as K x = torch.eye(3).repeat(3, 1, 1) aug = K.augmentation.RandomVerticalFlip3D(p=1.0) print(aug(x)) tensor([[[[[0., 0., 1.], [0., 1., 0.], [1., 0., 0.]], <BLANKLINE> [[0., 0., 1.], [0., 1., 0.], [1., 0., 0.]], <BLANKLINE> [[0., 0., 1.], [0., 1., 0.], [1., 0., 0.]]]]])
More 2d operators
We expand as well the list of the 2D image augmentations based on the paper AutoAugment: Learning Augmentation Policies from Data.
Please, do not hesitate to check the release notes on GitHub to learn about the new library features and get more details.
Have a happy coding day
The Kornia team