PnP-Net: A hybrid Perspective-n-Point Network

2020·Arxiv

Abstract

Abstract

We consider the robust Perspective-n-Point (PnP) problem using a hybrid approach that combines deep learning with model based algorithms. PnP is the problem of estimating the pose of a calibrated camera given a set of 3D points in the world and their corresponding 2D projections in the image. In its more challenging robust version, some of the correspondences may be mismatched and must be efficiently discarded. Classical solutions address PnP via iterative robust non-linear least squares method that exploit the problem’s geometry but are either inaccurate or computationally intensive. In contrast, we propose to combine a deep learning initial phase followed by a model-based fine tuning phase. This hybrid approach, denoted by PnP-Net, succeeds in estimating the unknown pose parameters under correspondence errors and noise, with low and fixed computational complexity requirements. We demonstrate its advantages on both synthetic data and real world data.

1 Introduction

Camera pose estimation is a fundamental problem that is used in a wide variety of applications such as autonomous driving and augmented reality. The goal of perspective-n-point (PnP) is to estimate the pose parameters of a calibrated camera given the 3D coordinates of a set of objects in the world and their corresponding 2D coordinates in an image that was taken (see Fig. 1). Currently, PnP can be efficiently solved under both accurate and low noise conditions [15,17]. In practice, there may be wrong data associations within the 2D and 3D pairs due to missing objects or incorrect object recognition. Therefore, the main challenge is to develop robust PnP algorithms that are resilient to these imperfections. Identifying outliers is a computationally intensive task which is impractical using classical model based solutions. The goal of this paper is therefore to derive a hybrid approach based on deep learning and classical methods for efficient and robust PnP.

The PnP geometry gives rise to a well defined non-linear least squares (LS) formulation. The latter is traditionally solved using the well known LevenbergMarquardt (LM) method [17]. Robust variants of LS can be derived via iteratively re-weighted least squares (IRLS) [13]. These minimize the squared re-projection errors of the given inputs, while weighting each sample inversely to its re-projection error as induced by the current parameters. Due to the non-linearities and weight functions, such methods are highly non-convex and

Fig. 1: Perspective-n-Point setting

are very sensitive to their initialization. Consequently, real systems must resort to computationally intensive search methods. The popular RANSAC [5] algorithm repeats the LM methods on different subsets and matching possibilities, ultimately choosing the pose with the smallest squared re-projection errors. RANSAC is an efficient randomized algorithm, yet it is still too computationally intensive for real time deployment. Recently, deep learning has been shown to be highly successful at image recognition tasks [11,21], as well as other domains including geometry [3, 14]. There is a growing body of literature on unfolding iterative algorithms into deep neural networks [8,12,22]. Part of these recent successes is the ability to perform end-to-end training, i.e. propagating gradients back through an entire pipeline to allow the direct optimization of a task-specific loss function, e.g., [25,27]. Motivated by these ideas, we propose a hybrid deep learning and IRLS-LM approach to robust PnP. Experiments with deep learning on its own, suggest that accurate PnP estimation is too difficult for existing neural networks. Instead, we take a different route and use the network to robustly compute a coarse pose estimation. We then use it as initialization to an IRLS-LM solver and then jointly optimize both stages simultaneously in an end-to-end fashion. We train the system using synthetic data generated according to a theoretical PnP model. The overall solution, denoted by PnP-Net, achieves a flexible accuracy vs complexity tradeoff and outperforms state of the art methods on both its true and mismatched models. Remarkably, even though PnP-Net was trained on synthetic data, numerous experiments in different scenarios including real world data show accuracy similar to RANSAC with computational complexity on the order of classical LM.

1.1 Related Work

PnP is a fundamental problem in computer vision and has a long history of parameter estimation methods. We refer the reader to [16] for a comprehensive review. Below, we briefly review the leading algorithms along with their pros and cons.

The classical solution P3P addresses the case of n = 3 input correspondences [7]. Its main drawback is that it is sensitive to noise. An efficient extension to more points is EPnP [15]. Using more points reduces the sensitivity to noise and provides better accuracy. The algorithm ignores the nonlinear constraints and uses linearization to express the multiple points as a weighted sum of four virtual control points. Similarly to P3P, it too is sensitive to noise. REPPnP provides a more robust version that rejects outliers [4]. REPPnP requires a large number of correspondences and obtains poor results when only a small number of correspondences is available.

The direct approach to outlier rejection is via a brute force search over the correspondences mismatches. Typically, a stochastic approximation known as RANSAC samples random sets of correspondences and computes their estimates [5]. Its model hypotheses can be any of the previously mentioned algorithms, e.g., RANSAC-with-P3P or RANSAC-with-EPnP. Unfortunately, the computational complexity of both the full and approximate searches is intractable for real-time practical systems.

From an optimization perspective, PnP is a nonlinear LS minimization. The classical approach to its solution is LM which can be interpreted as a regularized Gauss Newton method [17]. LM is a scalable solution that exploits the underlying structure of the PnP problem. The squared loss is sensitive to outliers and fails when there are correspondence mismatches in the inputs. It is well known that LS methods can be robustified by replacing the squared loss with robust loss functions, e.g., Huber’s loss, and iteratively re-weighting the algorithms [13]. Together, the combination of IRLS with LM is a natural and promising approach to robust PnP. But, as a non-convex optimization, it requires good initialization strategies to avoid spurious local minima.

More recently, there is a growing body of works using deep learning. The preprocessing stage of PnP-Net is based on the ideas in PointNet for classifi-cation on a cloud of points [20]. Similarly, [18] uses deep learning for finding robust image to image correspondences, but does not consider pose estimation. Perspective-n-Learned-Point [19] combines Content-Based Image Retrieval and pose refinement based on a learned representation of the scene geometry extracted from monocular images. Probably closest to our work, BA-Net [24] introduces a network architecture to solve the structure-from-motion (SfM) problem via feature-metric bundle adjustment (BA), which explicitly enforces multi-view geometry constraints in the form of feature-metric error. Like PnP-Net, this work also relies on a differentiable pipeline that includes an LM step. On the other hand, the last two networks consider image inputs whereas PnP-Net follows the more common practice used in real systems which is based on 3D coordinate inputs. Finally, to our knowledge, PnP-Net is the first work to use a neural network as an initialization to an unfolded algorithm with end to end training. This is the unique contribution of our work and we believe it will be useful in other problems as well.

1.2 Notation

We denote the elements of a 3D vector as []. The perspective function is defined as ) = [ ]. Following [2], we represent a 3D rotation via a rotation angle [0] and a normalized rotation axis according to the right hand rule where = 1. The rotation matrix R can then be constructed as:

We measure the difference between two rotations using the metric

2 Problem Formulation

In this section, we define the PnP model and formulate the parameter estimation problem. The unknown rigid transformation parameters are the pose of a camera, defined by its translation parameters t, and Rodrigues rotation parameters and s. Together, we denote these parameters as .

The PnP model provides access to n pairs of 3D objects in world coordinate system, denoted by , and their corresponding 2D coordinates on the image plain denoted by . Ideally, these pairs satisfy a projection transformation parameterized by :

where K is the camera intrinsic matrix [10]:

and f is the known focal length of the camera. In practice, the transformation in (4) is inexact. First, both sides of the equation are corrupted by additive noise. Second, there may be mismatches

between some of the 3D points and their 2D projections, i.e., the pairs and for some may be mistaken as the pairs and .

The robust PnP problem is to recover the unknown given the inexact pairs for i = 1. Performance is measured using a Euclidean translation error

and the rotation error

where ˆt, ˆand ˆs are the estimated parameters.

3 PnP-Net

In this section, we propose PnP-Net a hybrid solution that combines the model-based advantages of classical PnP methods with the power of modern deep learning. The main idea is that robust LM methods exploit the structure of the problem and are near optimal when given a sufficiently accurate initialization. On the other hand, neural networks are ignorant of the geometry and the underlying model, but are useful in learning a coarse initialization. Therefore, PnP-Net begins with a general purpose neural network which is robust and sufficiently accurate to guide the near-optimal model-based IRLS-LM phase. We learn both stages in an end-to-end manner by unfolding the iterative phase as part of the network. This allows us to learn data-driven hyper-parameters, including step sizes, regularization parameters, and weight functions. PnP-Net is fitted using synthetic data generated according to the the PnP parametric model. The result is a low and fixed computational complexity algorithm with state-of-the-art accuracy. The network is illustrated in Fig. 2 and can be divided to three stages detailed below.

3.1 Preprocessing

To simplify the setting, PnP-Net begins with a standard preprocessing stage. First, the image coordinates are normalized to emulate a camera with a constant focal length instead of their known f, i.e., are replaced by . This normalization avoids forcing the network to learn how to handle different focal lengths. Second, following [20], we order the correspondence pairs by their image coordinates to enforce order invariance.

3.2 Net

The architecture of PnP-Net begins with a general purpose neural network whose inputs are for fixed n and outputs coarse estimates of both the trans- lation t and rotation parameters . The rotation estimate is represented by 4

Fig. 2: PnP-Net diagram.

numbers, 3 unnormalized rotation axis parameters s and 1 rotation angle parameters . The network is built of fully connected layers with ReLU activations.

The network begins with 3 relatively large fully connected layers of sizes 20n, 5n ,3n that are shared across both tasks. Intuitively, this stage is supposed to identify the anomalous correspondences are weight them accordingly. Next, the network splits into two decoupled flows of 5 smaller layers of size 2n. The last layer in each flow is linear and outputs coarse estimates of the rotation and translation parameters, respectively. Due to the redundancy in the rotation parameterization, the output of this stage is of dimension 7 and not 6.

3.3 LM

Given the coarse neural pose initialization, the second phase of PnP-Net refines it using a time-tested model-based approach. Robust PnP involves two challenges: outliers and non-linearity. In what follows, we review the two classical approaches to these challenges and then merge them together into a unified unfolded architecture.

The state of the art approach to real-time non-linear LS in computer vision is the LM algorithm [6,17]. Its main idea is to solve a sequence of linearized LS problems that have a closed form solution, together with a form of Tikhonov regularization. In out setting, LM minimizes the sum of squares

In each iteration, it linearizes the errors around the previous estimates

where

is the gradient row-vector of ) with respect to evaluated at . Stacking the errors and the gradients of the n points, yields the residual vector and the Jacobian , respectively. The update can then be computed by solving a linear system

where is a regularization parameter. The resulting iteration is defined as

where is a step size parameter. This is currently the leading solution to PnP in practical systems.

On the other hand, the classical approach to robust LS relies on robust loss functions, e.g., replacing the squared loss with Huber’s loss denoted by ) [13]:

Numerically, this optimization is traditionally minimized by solving a sequence of re-weighted LS problems (IRLS):

is the i’th correspondence weight in the j’th optimization iteration and is a robustness parameter. For example, choosing = 1 corresponds to an absolute deviation loss which is known to be more robust. Intuitively, this approach down weights bad correspondences and softly rejects outliers.

As explained above, PnP involves a non-linear and robust LS. Therefore, we propose to combine these two ideas and solve a sequence of both re-weighted and linearized models. This yields the following linear system

where is a diagonal matrix with the weights

Altogether, we unfold m of these iterations as layers, and define and as learned variables. The inputs to each layer are the original correspondence pairs and the previous estimate, whereas the output is the new estimate. The first layer uses the neural Net initialization as its estimate. The complete architecture is illustrated in Fig. 2. All its unknown variables are learned simultaneously in an end to end manner.

3.4 Training protocol

PnP-Net is trained in an end to end manner including both stages using synthetic data generated from the PnP model.

– Training data: PnP-Net is trained using synthetic data generated from the PnP model. The translation t, rotation axis s and rotation angle parameters are uniformly distributed in a 25 25 25 3D box centered at the origin of the world, the unit ball and [0], respectively. In practice, this is equivalent to centering the world coordinates around a coarse estimation of the camera pose which usually can be obtained by a GPS. The 3D inputs were uniformly distributed in a 20 20 80 3D box placed in front of the camera, and their 2D projections were computed via (4). The inputs to the network were then corrupted by additive Gaussian noises with variances = 0.05, = 1. Finally, the data included a uniformly distributed ratio in [0] of bad correspondences. In half of these outliers, we modeled wrong matching and the 2D projections were generated from the true model but wrong 3D coordinates. In the other half, we modeled wrong sensing and uniformly generated 2D coordinates within the image. A motivating setting for such outliers is a camera that is mounted on a car and the lower half of its image contains only the road without any traffic signs. On the other hand, an arbitrary object on the road might be mistakenly identified as a traffic sign and the network must experience this type of wrong matches.

– Loss function: The end to end loss is a weighted sum of four distances. We introduce an intermediate loss after the Net phase and a final loss after the LM phase. Each of these is a sum of the Euclidean translation error in (6) and the rotation error as defined in (7). The LM phase is highly non-linear and much harder to optimize. Therefore, the training begins with the intermediate losses alone and gradually adds the final losses as the network converges. The exact protocol is detailed in the supplementary code.

– Implementation Details: PnP-Net was trained using TensorFlow [1], with the Adam optimizer and a learning rate of 10. Each mini-batch consisted of 1000 randomly generated samples, and we trained for a total of 200k updates. More details are available in the supplementary code.

4 Experiments

In this section, we demonstrate the advantages of PnP-Net with respect to state of the art. Performance will be measured in terms of the tradeoff between estimation accuracy and computational complexity. Furthermore, unlike classical PnP algorithms, PnP-Net is based on machine learning and is prune to overfitting. Therefore, we will also test PnP-Net’s ability to generalize to realistic problem settings.

We examine the performance of the following competitors:

– PnP-Net: The complete PnP-Net algorithm (). – Net: Only the Net stage of PnP-Net (). – EPnP: [15]. – EPnP-LM: An EPnP initialization [15] followed by LM. – REPPnP [4]. – REPPnP-LM: An REPPnP initialization [4] followed by LM. – Ransac [5] with EPnP-LM [15, 17] as hypotheses generator and minimal subsets of size 7.

The algorithms with the LM suffix are variants of their prefix method with an additional refinement using our proposed IRLS LM. We are not aware of specific references on such two step approaches, but they improve all methods and we decided to add them to ensure a fair comparison. Note however that only PnP-Net jointly learns both stages.

Practical autonomous driving systems are based on different modes of operations requiring different accuracy metrics. These are defined by threshold parameters and for the rotation and translation estimation errors, respectively. A rotation estimation is defined as successful if , and a translation estimation is successful if . If both parameters are successfully estimated, then the complete pose estimation is successful. In practice, once these error thresholds are achieved, updating the pose is a much simpler task by tracking objects image movement and using [9]. In the results below, we report the percentage of successful pose estimations out of the total number of tests.

4.1 Computational complexity

The main motivation to PnP-Net is to provide near optimal accuracy with reduced computational complexity. To emphasize this property we begin with a computational complexity analysis by counting the number of operations in each algorithm. The counting was performed following the protocol in [26] and the code is available in the supplementary material. The counts in Fig. 3 illustrate the low complexity of all the algorithms in comparison to the exponential complexity of RANSAC. As promised, the complexity of PnP-Net is also significantly lower, and even lower than the REPPnP competitors.

The complexity curves also decouple the cost of the two phases in PnP-Net. As expected, the neural initialization phase denoted by Net adds a negligible complexity. In what follows, we show the accuracy improvement due to this low cost initialization.

Fig. 3: Operation count as a function of correspondences number. Zoom out on the left, zoom in on the right.

4.2 Synthetic Data

We begin with simple experiments with synthetic data generated in the same manner as in the training process but independently. We measure our accuracy by measuring the success rate with = 1 = 0.2 over 1000 different inputs in comparison to the other existing solutions described above. The results are shown in Fig. 4. It is easy to see that all the algorithms provide accurate estimates in the left panel when there are no outliers. On the other hand, the right panel provides the success rates with outliers. In this more challenging scenario, all the algorithms fail expect for PnP-Net and the computationally expensive RANSAC.

We note the low success rate of the Net stage alone in both settings with and without outliers. The reason is that the neural network fails in achieving our stringent accuracy specifications, and is only useful as a coarse initialization of PnP-Net.

In our second and more challenging synthetic experiment, we examine the ability of PnP-Net to generalize well to settings different than those it was trained on. For this purpose, we repeated the previous experiment but changed the prior distributions of the pose translation (t). We switched the uniform prior to a normal distribution with zero mean and variance = 25 and = 0 on each of the axes. This choice allows translations vectors outside the uniform box that were never encountered during training. As shown in Fig. 5, PnP-Net’s success rates decrease but still dominate its competitorrs. Performance without outliers in the left panel reveals that all algorithms behave similarly, and PnPNet does not overfit. The main advantage is again the robustness to mismatches

Fig. 4: Success rates of different algorithms on synthetic data. Near optimal input on the left and near optimal input with outliers on the right.

as illustrates in the right panel. PnP-Net is significantly more accurate than all its competitors except the computationally expensive RANSAC.

Fig. 5: Success rates of different algorithms on synthetic data with different random pose generation from the training. Near optimal input on the left and near optimal input with outliers on the right.

4.3 Real Data

Motivated by the synthetic results we turn to a real data-set from the ETH3D Benchmark [23]. The data-set contains a set of objects 3D coordinates, images in which these objects can be seen, the intrinsic parameters and the pose of each of the cameras with respect to the same coordinate system as the objects 3D coordinates. Examples of objects and their respective coordinates in the image are provided in Fig. 6.

Fig. 6: ETH3D Benchmark data-set objects 3D coordinates and their image correspondences marked by the same color.

The evaluation was done using = 1, = 0.2 and 1000 inputs as in the synthetic data, generated by randomly choosing an image out of the data set [23], then randomly choosing 9 objects from the image that together with their image coordinates and the focal length were given as input to each of the algorithms. For the inputs with outliers, 10 objects were chosen, then 2 of the first 9 chosen objects were randomly chosen as outliers. 2D coordinates outliers were replaced by either the 10’th unused object image coordinates or by uniformly sampled 2D image coordinates. The results with and without mismatches are provided in Fig. 7 and are similar to the synthetic experiments. This strengthens our learning approach with synthetic data and suggests that it generalizes well to realistic conditions without overfitting.

To support our claims that PnP-Net does not overfit, we conducted additional experiments with various outlier generation mechanisms that were not used during training. In particular, we repeated the experiments with a constant number of mismatches (rather than a uniformly random number) and compared the leading competitor REPPnP-LM with PnP-Net. The results are presented in Fig. 8 as a function of this number of mismatches. As expected, both algorithms fail when there are more than 3 outliers and the model is unidentifiable. With fewer outliers, PnP-Net consistently outperforms REPPnP-LM.

Fig. 7: Success rates of different algorithms on real data. Near optimal input on the left and near optimal input with outliers on the right.

Fig. 8: Success rates of PnP-Net and REPPnP on real data with different wrong matches number. PnP-Net on the left and REPPnP-LM on the right.

5 Conclusion

In this paper, we proposed a hybrid single-shot technique to recover the 6D pose of a camera. The architecture involves a deep neural network that recovers a coarse but robust estimate, followed by traditional model-based optimization techniques that refines the estimates. Both stages are differentiable and are optimized in an end to end manner. Our approach outperforms the state of the art by a significant margin in both synthetic and real data and shows the benefit of such hybrid approaches.

PnP-Net uses data associations that were collected by different algorithms as input. The common practice is to start by collecting objects from the image and matching them using a descriptor for each image detected and world object. For example, detecting signs using a trained detection neural network and matching them to the world signs based on their shape and color. Adding the detection and matching algorithms to the pipeline before PnP-Net and training both the detection network and our network in an end-to-end manner will probably improve both stages.

Another interesting direction for future work is to train a neural network to output the likelihoods of each correspondence being wrong. These can be used as informative weights in the LM stage [17]. More generally, we believe the neural initialization, with and without the likelihoods, can be beneficial in other robust estimation problems.

6 Acknowledments

The authors would like to thank Refael Vivanti for his help and advice. This work was partially supported by ISF grant 1339/15.

References

1. Mart´ın Abadi, Paul Barham, Jianmin Chen, Zhifeng Chen, Andy Davis, Jeffrey Dean, Matthieu Devin, Sanjay Ghemawat, Geoffrey Irving, Michael Isard, et al. Tensorflow: A system for large-scale machine learning. In 12th {USENIX} Symposium on Operating Systems Design and Implementation ({OSDI} 16), pages 265–283, 2016.

2. Jian S Dai. Euler–Rodrigues formula variations, quaternion conjugation and in- trinsic connections. Mechanism and Machine Theory, 92:144–152, 2015.

3. David Eigen and Rob Fergus. Predicting depth, surface normals and semantic labels with a common multi-scale convolutional architecture. In Proceedings of the IEEE international conference on computer vision, pages 2650–2658, 2015.

4. Luis Ferraz, Xavier Binefa, and Francesc Moreno-Noguer. Very fast solution to the PnP problem with algebraic outlier rejection. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pages 501–508, 2014.

5. Martin A Fischler and Robert C Bolles. Random sample consensus: a paradigm for model fitting with applications to image analysis and automated cartography. Communications of the ACM, 24(6):381–395, 1981.

6. Roger Fletcher. A modified marquardt subroutine for non-linear least squares. 1971.

7. Xiao-Shan Gao, Xiao-Rong Hou, Jianliang Tang, and Hang-Fei Cheng. Complete solution classification for the perspective-three-point problem. IEEE transactions on pattern analysis and machine intelligence, 25(8):930–943, 2003.

8. Karol Gregor and Yann LeCun. Learning fast approximations of sparse coding. In Proceedings of the 27th International Conference on International Conference on Machine Learning, pages 399–406, 2010.

9. Christopher G Harris. Determination of Ego-Motion from Matched Points. In Alvey Vision Conference, pages 1–4. Citeseer, 1987.

10. Richard Hartley and Andrew Zisserman. Multiple view geometry in computer vision. Cambridge university press, 2003.

11. Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun. Deep residual learning for image recognition. In Proceedings of the IEEE conference on computer vision and pattern recognition, pages 770–778, 2016.

12. John R Hershey, Jonathan Le Roux, and Felix Weninger. Deep unfolding: Model- based inspiration of novel deep architectures. arXiv preprint arXiv:1409.2574, 2014.

13. Peter J Huber. Robust statistics. Springer, 2011.

14. Angjoo Kanazawa, David W Jacobs, and Manmohan Chandraker. Warpnet: Weakly supervised matching for single-view reconstruction. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pages 3253–3261, 2016.

15. Vincent Lepetit, Francesc Moreno-Noguer, and Pascal Fua. EPnP: An accurate O(n) solution to the PnP problem. International journal of computer vision, 81(2):155, 2009.

16. Xiao Xin Lu. A Review of Solutions for Perspective-n-Point Problem in Camera Pose Estimation. In Journal of Physics: Conference Series, volume 1087, page 052009. IOP Publishing, 2018.

17. Donald W Marquardt. An algorithm for least-squares estimation of nonlinear pa- rameters. Journal of the society for Industrial and Applied Mathematics, 11(2):431– 441, 1963.

18. Kwang Moo Yi, Eduard Trulls, Yuki Ono, Vincent Lepetit, Mathieu Salzmann, and Pascal Fua. Learning to find good correspondences. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pages 2666–2674, 2018.

19. Nathan Piasco, D´esir´e Sidib´e, C´edric Demonceaux, and Val´erie Gouet-Brunet. Perspective-n-Learned-Point: Pose Estimation from Relative Depth. 2019.

20. Charles R Qi, Hao Su, Kaichun Mo, and Leonidas J Guibas. Pointnet: Deep learning on point sets for 3d classification and segmentation. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pages 652–660, 2017.

21. Joseph Redmon, Santosh Divvala, Ross Girshick, and Ali Farhadi. You only look once: Unified, real-time object detection. In Proceedings of the IEEE conference on computer vision and pattern recognition, pages 779–788, 2016.

22. Neev Samuel, Tzvi Diskin, and Ami Wiesel. Deep mimo detection. In 2017 IEEE 18th International Workshop on Signal Processing Advances in Wireless Communications (SPAWC), pages 1–5. IEEE, 2017.

23. T Sch¨ops, JL Sch¨onberger, S Galliani, T Sattler, K Schindler, M Pollefeys, and A Geiger. Eth3d benchmark, 2018.

24. Chengzhou Tang and Ping Tan. BA-net: Dense bundle adjustment network. arXiv preprint arXiv:1806.04807, 2018.

25. James Thewlis, Shuai Zheng, Philip HS Torr, and Andrea Vedaldi. Fully-trainable deep matching. arXiv preprint arXiv:1609.03532, 2016.

26. Lloyd N Trefethen and David Bau III. Numerical linear algebra, volume 50. Siam, 1997.

27. Kwang Moo Yi, Eduard Trulls, Vincent Lepetit, and Pascal Fua. Lift: Learned invariant feature transform. In European Conference on Computer Vision, pages 467–483. Springer, 2016.