Closed monster-ghost closed 3 years ago
Hi @monster-ghost ,
I had the same confusion when I read the code of VoteNet. This is NMS without considering the effect of rotation. VoteNet probably did this for efficiency, since their implementation of rotation-aware 3D IoU calculation is quite slow. Though OpenPCDet has an efficient gpu implementation of rotation-aware 3D IoU calculation, we kept the VoteNet implementation for fair comparison. Actually we tried to use the rotation-aware version, but the results are almost the same (since this is like altering the threshold of NMS).
OK, thanks!
Hi , I have a question in lhs_3d_faster_samecls when I run your code.
Is the process of calculating the IOU in 3D so simple? No need to consider the rotation angle?
` xx1 = np.maximum(x1[i], x1[I[:last-1]])
zz1 = np.maximum(z1[i], z1[I[:last-1]]) xx2 = np.minimum(x2[i], x2[I[:last-1]]) yy2 = np.minimum(y2[i], y2[I[:last-1]]) zz2 = np.minimum(z2[i], z2[I[:last-1]]) cls1 = cls[i] cls2 = cls[I[:last-1]]
code process: Input 8 corners of Box1 and Box2,find the maximum and minimum values on x,y,z in each of the 8 corners. Then for the x-minimum of the two boxes, take the largest one. y and z are the same.
Then for the x-maximum of the two boxes, take the smallest one. y and z are the same. Then calculate l,w,h, and multiply them to get the intersection.
Can you explain the process? It feels like the IOU calculated this way is not correct?