{%hackmd SybccZ6XD %} # ROBIN: a Graph-Theoretic Approach to Reject Outliers in Robust Estimation using Invariants ###### tags: `paper` ## Abstract ![](https://i.imgur.com/OTJS8xn.png) ### why many methods can deal with moderate outliers, but they fail to solve enormous anounts of outliers. ### goal - prune outliers in generic estimation problems. - boost the performance of existing techniques ### how - invariance: check a subset of mearsurements can solve the corresponding estimation problem. - graph-theoretic framework: measurements are modeled as vertices and mutual compatibility is captured by edges in a graph. - combine above two destributions ## introduction ### Robust estimation - Problem: unknown variable x lead to noisy and corrupted result - example: - 3D perception problems: x may be the pose of an unknown object while the measurements are features of the object - In Simultaneous Localization and Mapping: x might denote the trajectory of the robot and the location of landmarks - 根據機器人自身位置與附近景觀,達成定位與建構地圖 - (?)In machine learning: x can be a description of a model regressing the data - conclusion: $y_i = h_i(x, \epsilon_i)$ y: the result of the preprocessing of raw sensor data ### two methods of solving estimation problem - fast heuristics - upside: fast - downside: fail to deal with many outliers - globally-optimally - upside: tolerate extreme outlier rates - downside: slow ### goal real- time operation and rebust more than 95% outliers ## RELATED WORK ### Consensus Maximization - find the largest set of measurements with errors below a user-defined threshold. - NP-hard, so it uses randomized approaches, RANSAC - RANSAC - upside: minimal set is small and there are not many outliers - downside: the number of iterations increases exponentially with the percentage of outliers ### M-estimation - estimation by optimizing a robust cost function that reduces the influence of the outliers ### Graph algorithms - used in robot perception and vision - graph-cut: improve performance against noise and outliers ## MEASUREMENT INVARIANTS ### From Measurements to Invariants ![](https://i.imgur.com/W9zTQjV.png) $S_j$: the j-th element of this subset :::success Definition 1 (n-Invariant) n-invariant function: $f(y_s) = (h_s(x,\delta_S))$ f: in order to compute a quantity that **no longer depend on x**, so it suitable for any x ex. Single rotation averaging: pairwise invariant Point cloud registration: pairwise invariant 2D-3D camera pose estimation: 4 invariant ::: ### example of invariants #### ==Single rotation averaging== :::warning 補充 (Single rotation averaging) 有很多Ri measurement,找到一個R讓cost變小 ![](https://i.imgur.com/2Drq80D.png) ::: **measurement model** $R_i=R*Exp(\epsilon_i)$ Exp: maps a 3D vector to rotation matrix - rotation matrix: 乘以一個向量的時候有改變向量的方向但不改變大小 R: unknown rotation Ri: noisy measurements $\epsilon_i$: measurement noise ![](https://i.imgur.com/hB2PofX.png) #### ==Point cloud registration== :::warning 補充 (Least-Squares Fitting of Two 3-D Point Sets) 找point cloud轉換公式 ![](https://i.imgur.com/Ce0J6sP.png) ::: **measurement model** $b_i=Ra_i+t+\epsilon_i$ $\epsilon_i$: isotropic(即在不同方向所測得的性能數值是相同的) **invariant** $f(b_i, b_j)=||b_j-b_i||=||a_j-a_i+\delta_j-\delta_i||$ ![](https://i.imgur.com/C6Egwhg.png) #### ==Point-with-normal registration== Every point transformation correspond normal transformation ![](https://i.imgur.com/vrPnn95.png) #### ==2D-3D camera pose estimation== :::warning 補充 (2D-3D camera pose) find camera pose using the 4 3D points ![](https://i.imgur.com/hLzKJ2b.png) ::: ### From Invariants to Compatibility for Outlier Rejection - In the previous section, propose variants without distinguishing inliers from outliers. - In this sector, use invariants to check the outliers where they. this process is called compatibility test. :::info Definition 7 (Inliers and Outliers) Given measurements (1) and a threshold $\beta$ > 0, a measurement i is called an inlier if the corresponding noise satisfies $||\epsilon_i||\leq \beta$ and is called an outlier otherwise. This process of checking is called **compatibility test**. ::: #### ==Compatibility test for point cloud registration== $||b_j-b_i|| = ||a_j-a_i+\delta_j-\delta_i||$ apply the triangle inequality $||a_j-a_i+\delta_j-\delta_i|| \leq ||a_j-a_i|| + ||\delta_j-\delta_i||$ $-||\delta_j-\delta_i||\leq ||b_j-b_i||-||a_j-a_i||\leq ||\delta_j-\delta_i||$ $||\delta_j||\leq \beta$ and $||\delta_i||\leq \beta$ so, $||\delta_j-\delta_i||\leq 2\beta$ $-2\beta \leq ||b_j-b_i||-||a_j-a_i||\leq 2\beta$ pairs of points having similar distance in the two point clouds. :::info Definition 8 (Compatibility Test) Given a subset of n measurements and the corresponding n-invariant, a compatibility test is a binary condition involving the invariant, such that if the condition fails the set of measurements must contain at least one outlier. ::: test property - sound: 檢測只有inliers的時候,不會有outliers的結果 - complete: 檢測有outliers的時候,檢測結果通過 ## COMPATIBILITY GRAPH FOR OUTLIER REJECTION - Point out which measurements are outliers - propose the use of maximum clique and maximum k-core to find inliers ### From Compatibility Tests to Compatibility Graph - compatibility graph: the result of the compatibility tests for all subsets of n measurements - advantage: Fast, because it only checks boolean condition without computing an estimate (as opposed to RANSAC) :::info Define compatibility graph $\mathcal{G}(\mathcal{V}, \mathcal{E})$ as an undirected graph vertex set $\mathcal{V}$: measurement an edge (i, j) in the edge set E is present in the graph if measurements i and j were involved in at least one of the subsets of measurements that passed the compatibility tests. ![](https://i.imgur.com/F6jkFza.png) ::: :::warning 補充 (Graph) - directed graph(有向圖):edge的方向性表示資料間的關係,若vertex(A)與vertex(B)之關係是「單向的」,那麼連結vertex(A)與vertex(B)的edge即具有方向性。 - undirected graph(無向圖):edge的方向性表示資料間的關係,若vertex(A)與vertex(B)的關係是「雙向的」,那麼連結vertex(A)與vertex(B)之edge就不具有方向性。 - ![](https://i.imgur.com/T61lnQS.png) ![](https://i.imgur.com/pUFV6V5.png) - vertex:稱每一個「資料節點」為vertex(或是node),並定義所有的vertex所形成之集合(Set)為V或V(G); - edge:稱每一個「線段(箭號)」為edge(實際上是用一對vertex表示edge,例如(Vi,Vj)即為連結Vi與Vj的edge),並定義所有的edge所形成之集合(Set)為E或E(G); ::: ### Inlier Structures in Compatibility Graphs - prune many outliers by computing the maximum clique of the compatibility graph :::info Definition 9 (Maximum Clique) The maximum clique of G is the clique with the largest number of vertices. ![](https://i.imgur.com/osdR5Bz.png) ::: :::info Theorem 10 (Inliers and Cliques) (我覺得這段有點廢話) Assume we are given measurements (1) and the corresponding n-invariants; call G the corresponding compatibility graph. Then, assuming there are at least n inliers, the inliers form a clique in G. - maximum clique is too expensive to compute, so they propose the maximum k-core (defined below) instead ::: :::info Definition 11 (k-core, Fig. 1) ![](https://i.imgur.com/kMlu2IH.png) ::: ![](https://i.imgur.com/Lb1RCNp.png) ## EXPERIMENTS - ROBIN boosts the robustness of GNC to more than 95% outliers and dominates the state of the art - runs in tens of milliseconds on challenging large-scale datasets ### Single Rotation Averaging ==Setup.== ground truth: $R\in SO(3)$ measurement: Ri, i = 1...1000 with increasing outlier rates from 0%~99% - inlier measurement: $R_i = R Exp(\theta_iu_i)$ $u_i$: random 3D unit vector $\theta_i \sim N(0,\sigma^2)$ random rotation angle ($\sigma$ =5) - outlier measurement: random 3D rotation ==result== ![](https://i.imgur.com/7npN8Tt.png) ### Registration With Correspondences ==Benchmarks== model source: Bunny model from the Stanford 3D scanning repository - downsample the model to 1000 points and resize - apply a random transformation (R, t) - R: SO(3) - $||t||\leq 1$ - apply noise - $\epsilon_i \sim N(0,\sigma^2I)$, $\sigma = 0.01$ - $\epsilon_i \leq \beta$, $\beta = 5.54\sigma$ - generate outliers: replace some bi’s with vectors uniformly sampled in a sphere with radius 5. ==result== ![](https://i.imgur.com/6PpjxiZ.png) ### Registration Without Correspondences ==Setup== point clooud source: TeddyBear model from HomebrewedDB, which provide normal - downsample the TeddyBear to 100 points to obtain the source point cloud - apply a random transformation (R, t) - To simulate a partial overlap, we randomly discard a percentage of the transformed point cloud. - to simulate a 80% overlap, we randomly discard 20% of the transformed points. :::warning 補充 (overlap) ![](https://i.imgur.com/0k3tCN2.png) ::: ==result== ![](https://i.imgur.com/S3XgQkt.png) ### 2D-3D Pose Estimation ==setup== ![](https://i.imgur.com/65liLZB.png) - image plane: 640*480 - apply 100 collinear 3D points and ensure they are in the field of view of the camera - We then project the 3D points back to the image plane to have 2D-3D correspondences. - Bounded random noise - $\epsilon_i \sim N(0,\sigma^2I)$, $\sigma = 0.1$ - $||\epsilon_i||\leq \beta = 0.25$ - to generate outliers: replacing some of the 2D points with randomly sampled points in the image. ==result== ![](https://i.imgur.com/hFdB48v.png)