1. 04 Jan, 2022 1 commit
    • Jeremy Reizenstein's avatar
      Update license for company name · 9eeb456e
      Jeremy Reizenstein authored
      Summary: Update all FB license strings to the new format.
      
      Reviewed By: patricklabatut
      
      Differential Revision: D33403538
      
      fbshipit-source-id: 97a4596c5c888f3c54f44456dc07e718a387a02c
      9eeb456e
  2. 29 Sep, 2021 1 commit
    • Nikhila Ravi's avatar
      IoU for 3D boxes · 2293f1fe
      Nikhila Ravi authored
      Summary:
      I have implemented an exact solution for 3D IoU of oriented 3D boxes.
      
      This file includes:
      * box3d_overlap: which computes the exact IoU of box1 and box2
      * box3d_overlap_sampling: which computes an approximate IoU of box1 and box2 by sampling points within the boxes
      
      Note that both implementations currently do not support batching.
      
      Our exact IoU implementation is based on the fact that the intersecting shape of the two 3D boxes will be formed by segments of the surface of the boxes. Our algorithm computes these segments by reasoning whether triangles of one box are within the second box and vice versa. We deal with intersecting triangles by clipping them.
      
      Reviewed By: gkioxari
      
      Differential Revision: D30667497
      
      fbshipit-source-id: 2f747f410f90b7f854eeaf3036794bc3ac982917
      2293f1fe
  3. 15 Sep, 2021 3 commits
    • Nikhila Ravi's avatar
      Farthest point sampling CUDA · bd04ffaf
      Nikhila Ravi authored
      Summary:
      CUDA implementation of farthest point sampling algorithm.
      
      ## Visual comparison
      
      Compared to random sampling, farthest point sampling gives better coverage of the shape.
      
      {F658631262}
      
      ## Reduction
      
      Parallelized block reduction to find the max value at each iteration happens as follows:
      
      1. First split the points into two equal sized parts (e.g. for a list with 8 values):
      `[20, 27, 6, 8 | 11, 10, 2, 33]`
      2. Use half of the thread (4 threads) to compare pairs of elements from each half (e.g elements [0, 4], [1, 5] etc) and store the result in the first half of the list:
      `[20, 27, 6, 33 | 11, 10, 2, 33]`
      Now we no longer care about the second part but again divide the first part into two
      `[20, 27 | 6, 33| -, -, -, -]`
      Now we can use 2 threads to compare the 4 elements
      4. Finally we have gotten down to a single pair
      `[20 | 33 | -, - | -, -, -, -]`
      Use 1 thread to compare the remaining two elements
      5. The max will now be at thread id = 0
      `[33 | - | -, - | -, -, -, -]`
      The reduction will give the farthest point for the selected batch index at this iteration.
      
      Reviewed By: bottler, jcjohnson
      
      Differential Revision: D30401803
      
      fbshipit-source-id: 525bd5ae27c4b13b501812cfe62306bb003827d2
      bd04ffaf
    • Nikhila Ravi's avatar
      Farthest point sampling C++ · d9f7611c
      Nikhila Ravi authored
      Summary: C++ implementation of iterative farthest point sampling.
      
      Reviewed By: jcjohnson
      
      Differential Revision: D30349887
      
      fbshipit-source-id: d25990f857752633859fe00283e182858a870269
      d9f7611c
    • Nikhila Ravi's avatar
      Farthest point sampling python naive · 3b7d78c7
      Nikhila Ravi authored
      Summary:
      This is a naive python implementation of the iterative farthest point sampling algorithm along with associated simple tests. The C++/CUDA implementations will follow in subsequent diffs.
      
      The algorithm is used to subsample a pointcloud with better coverage of the space of the pointcloud.
      
      The function has not been added to `__init__.py`. I will add this after the full C++/CUDA implementations.
      
      Reviewed By: jcjohnson
      
      Differential Revision: D30285716
      
      fbshipit-source-id: 33f4181041fc652776406bcfd67800a6f0c3dd58
      3b7d78c7