dvlab-research / 3DSSD

3DSSD: Point-based 3D Single Stage Object Detector (CVPR 2020)
MIT License
378 stars 68 forks source link

CGlayer about the fps #10

Open shangfenghuang opened 4 years ago

shangfenghuang commented 4 years ago

Hi, thanks for your impressive work. I noticed some question about the code. Firstly, layer3 gengerate F-fps with 256 points and D-Fps with 256 points. Then, layer3-vote turn the F-fps 256 points into the voted 256 points. right? In CGlayer, using D-FPs obtain 256 points index which range (0, 512) from F-fps with 256 points and D-Fps with 256 points which total 512 points generated by layer3. But I see the code "new_xyz = gather_point(vote_ctr, fps_idx)" . this means network will seek 256 points from voted points through 256 points index. However the 256 points index range (0, 512). this is impoeesible. I think it would I don't understand the code. But I can't find the wrong place which I understand. image

kaiopen commented 4 years ago

In my opinions, there are some codes useless and some parameters are useless too. In CG layer, 256 points are considered as center points for ball query. vote_ctr contains the 256 points and fps_idx is from 0 to 255. So by doing new_xyz = gather_points(vote_ctr, fps_ids), 256 points are got and equal to vote_ctr.

shangfenghuang commented 4 years ago

but I see the code get the 512 fps_idx for vote points. I don't know what part of the code I misunderstood. Can you help me?

qiliang72 commented 4 years ago

Agree with @kaiopen . Look at the second row of the picture @JMU-HSF uploaded, these parameters are used in for loops for 2 times. In the first time, perform a F-FPS, with input of 256 and output of 256. In the second time, perform a D-FPS, with input of -1 (=256, the remaining), and output of 0. Thus the total output of this layer is 256, but not 512.