xyjbaal / FPCC

MIT License
44 stars 11 forks source link

r_nms in fpcc_test.py #3

Closed aogonow closed 2 years ago

aogonow commented 2 years ago

Hi, Firstly thank for your great work.

Can you explain what r_nms param means and how to choose it? Or maybe you can prompt some methodology to adopt r_nms and conf_th parameters, because when I trained neural networks prediction of object centers is satisfactory, but final prediction is quite weak and depend on these parameters and I cannot choose that parameters to have good results on pointcloud with few and many(20-30) elements?

xyjbaal commented 2 years ago

Thank you for your doubt.

There are some unsatisfactory results if there are too few elements. But with 20~30 elements, the results should be acceptable, in my experience.

The points with center_core greater than conf_th become candidates, then the rest of the points with distance less than r_nms from the point with the highest score are removed. (usually, r_nm is smaller than the maximum size of the object)

You can use 0.5 as the initial value of conf_th and the maximum size as the initial value of r_nms. Then increase conf_th, for example, 0.6, 0.7, while decreasing r_nms.

Thank you again.

aogonow commented 2 years ago

Thank for your fast response.

So as I understand r_nms is is very roughly equal half of longest dimension of object.

If you had worse results on few elements, can you tell in what range of generated parts in every cycle did you trained neural networks? Because I generated parts (GearShafts) in 40 cycles and in all of them from 1 to 30 parts. Do you think it would be better to start from for example 5 parts to obtain better results?

xyjbaal commented 2 years ago

The poor effect on few elements is because the K-NN in DGCNN is sensitive to the point cloud density.

The IPA dataset provides about 2000+ scenes for each part. There are more than 1000 scenes containing more than 10 elements., but I only used 500 of them.

I would like to mention that I made this algorithm to improve the performance of estimating the 6D pose of the object. From a practical application point of view, if there are fewer elements, then there is no need to segment them. Because the pose estimation algorithm can be directly performed on it.

However, I have to admit that FPCC performs poorly on scenes containing few elements. Changing to a feature extractor that is insensitive to the point cloud density is the most effective method (Any network that can extract point-wise features).