OpenRobotLab / PointLLM

[ECCV 2024] PointLLM: Empowering Large Language Models to Understand Point Clouds
https://runsenxu.com/projects/PointLLM
449 stars 22 forks source link

Normalization of the provided point clouds #23

Closed nonci closed 5 months ago

nonci commented 5 months ago

Hi, very interesting work! I am using for my thesis Point-BERT encoder with the weights you provided in issue #1 and the clouds taken from HuggingFace Objaverse_660K_8192_npy_split_a* files and it works fine without further steps. I can't figure out, however, how the x,y,z components of such clouds are normalized (if they are), or how they are generated. This would be essential to test the encoder with other clouds. Thank you.

RunsenXu commented 5 months ago

Hi, thanks for your interest in our work.

The normalizing processing is at: https://github.com/OpenRobotLab/PointLLM/blob/d2368d2fc8b750a9401e2402d462e527b9c0e149/pointllm/data/object_point_dataset.py#L153

Best, Runsen

nonci commented 5 months ago

Thank you for the fast reply! I have seen that function, but there is still something that doesn't add up. Reading your code, it seems to me that you are normalizing the coordinates (relative to the centroid) in the sphere of radius 1. I would expect, than, to have the x,y,z coordinates in the range [-1, 1] (maybe I am wrong). Analyzing the clouds, however, I see that some values are far off these extremes. For example, the cloud with id "75b28ddd9eca4c4988e3029e45dfd5f0" has coordinates:

[[-0.0483,  0.4880,  0.1857],
 [-1.4152,  0.2186, -0.1576],
 ... 

where -1.4152 is unexpected. I have also tried to apply pc_norm to these clouds, but the encoder results are not semantically meaningful in that case.

RunsenXu commented 5 months ago

Thanks for your details.

There are occasionally some samples having noises. For example, "75b28ddd9eca4c4988e3029e45dfd5f0" has one point outside the object.

image

Maybe you should manually handle such samples.

It's also worth noting that the PC_norm should always be applied online, even if you use the point encoder only.

Harr7y commented 5 months ago

Thanks for the share of the point clouds, but I am still curious about how the point clouds are generated?

RunsenXu commented 5 months ago

They are from the Cap3D projects. https://cap3d-um.github.io/

Harr7y commented 5 months ago

Thanks a lot~

RunsenXu commented 5 months ago

@nonci Hi, do you have any more question regarding to this issue?

nonci commented 5 months ago

I get it, I'll try to remove such outliers if needed, thank you,