Feed in point-cloud to Pointnet++ to generate our seeds
Pointnet++ subsamples by applying farthest-point sampling
Reduces number of points from N to M
For each point will output the x,y,z coordinates along with C features in a 1×C feature vector
Input: N×3
Output: M×(3+C)
Take seeds and generate VOTES
Each seed’s (i.e. {si}i=1M,si=[xi,fi]) features, fi get’s passed into an MLP that outputs the offset Δxi∈R3 and a feature offset Δfi∈RC these are our “votes”.
The votes point the seed points in the direction of the “center” of their object
Loss is applied here for the spatial offset (i.e. L1 loss between true Δxi and predicted one)
Vote Clustering
Here we subsample again, by taking K votes from the M ones provided using farthest point sampling. We then use these votes as cluster centroids and cluster our M votes based on these.
We take the K centroids and pass them through a shared PointNet to propose the bounding boxes along with classification of the class.