drprojects / superpoint_transformer

Official PyTorch implementation of Superpoint Transformer introduced in [ICCV'23] "Efficient 3D Semantic Segmentation with Superpoint Transformer" and SuperCluster introduced in [3DV'24 Oral] "Scalable 3D Panoptic Segmentation As Superpoint Graph Clustering"
MIT License
546 stars 71 forks source link

Input irregularly shaped point clouds #79

Closed Wallens686 closed 5 months ago

Wallens686 commented 5 months ago

Hi,@drprojects. Sorry to bother you when you're out of office, but I have a few questions that I urgently need your help with:

How shoud I set the xy_tiling/pc_tiling( or other parameters if possible) while the input point clouds are not a regular rectangle?

like this: 1710469585314

Meanwhile, I also want an example where the predicted point cloud can be output as a PLY file with full resolution position( as issue #78 ). Hope you can @ me after completing this useful example!

Thanks a lot!

drprojects commented 5 months ago

Tiling

Here is how our 2 tiling strategies work. Tiling is optional, if you do not need it, keep xy_tiling=None and pc_tiling=None. Tiling arguments can either be XY tiling or PC tiling but not both.

XY tiling will apply a regular grid along the XY axes to the data, regardless of its orientation, shape or density. The value of xy_tiling indicates the number of tiles in each direction. So, if a single int is passed, each cloud will be divided into xy_tiling**2 tiles.

PC tiling will recursively split the data wrt the principal component along the XY plane. Each step splits the data in 2, wrt to its geometry. The value of pc_tiling indicates the number of split steps used. Hence, 2**pc_tiling tiles will be created.

In your specific case, I would go for PC tiling, this is what I use for the lightweight KITTI-360 11G config.

Full-resolution output

I will work on fixing the issue identified in #78, for comments regarding this specific topic, please use the associated thread.

PLY output

We do not provide support for PLY output, because this would require dealing with too many edge cases that would open the door to person-specific issues. If you simply want to store the full-resolution output XYZ and predicted labels to PLY, you should be able to code this yourself, with minimal understanding of the project (ie see the docs/data and commented code). Again, keep an eye on #78 until the full-res indexing issue is fix (I already proposed a workaround for solving it in the thread).