Closed jialeli1 closed 3 years ago
For the voxel-to-point mapping, you can use the 'train_grid' to perform the transformation, which saves the point-voxel hashtable.
The voxel-wise output can be used as the final output too, via utilizing the prediction of voxel as the prediction of points inside corresponding voxel.
Thanks for your reply. I should go to learn something about the label format of SemanticKITTI to understand the second point in your answer.
Hi. In my understanding, the final segmentation prediction output is represented as (dim_r, dim_rho, dim_z)=(480, 360, 32) in the tensor y (as following), to represent a point cloud of range (0\~50, -pi\~pi, 2\~-4) ? https://github.com/xinge008/Cylinder3D/blob/a1cc7a75fc8b99cb0886d83a4901ef4bf58ace3f/network/segmentator_3d_asymm_spconv.py#L306 Thank you for telling me if I understand correctly.
@xinge008 Hi, I also have a question here. In your paper, there are voxel-wise and point-wise losses, however, in this code seems both of the two losses use voxels as inputs.
@jialeli1 Yes, the output of voxel can be transformed into the point-wise representation, which represents the prediction of whole point cloud. You can check the validation code and more details are shown in the paper
@yanx27 current preliminary codebase does not include the point refinement. Hence, only voxel-wise loss is involved, which consists of wce and lovasz-softmax.
@jialeli1 Yes, the output of voxel can be transformed into the point-wise representation, which represents the prediction of whole point cloud. You can check the validation code and more details are shown in the paper
Thank you a lot. I found this in section 3.6 of the paper. However, I have another question. Is the grid resolution enough to finely represent such a large-scale point cloud space? In fact, in the cubic voxel method such as SPVNAS, the voxel size is set to 0.05m, which results in a dimension of 100/0.05=2000 if it is 100m.
@jialeli1 In our attempts, the smaller grid doesn't indicate the better performance, which also incurs the difficulty of optimization and larger cost of memory.
@yanx27 current preliminary codebase does not include the point refinement. Hence, only voxel-wise loss is involved, which consists of wce and lovasz-softmax.
Thanks for your reply! Looking forward your full preliminary codebase.
The return of this function (Asymm_3d_spconv) is still a dense representation of SparseConvTensor, but how do we restore it to a point-wise representation? https://github.com/xinge008/Cylinder3D/blob/a1cc7a75fc8b99cb0886d83a4901ef4bf58ace3f/network/segmentator_3d_asymm_spconv.py#L249 However, I found in this line that the return value of the model is directly used as the predicted label. Shouldn't the predicted label be point-wise? The gap between the grid representation and the point representation makes me feel strange. https://github.com/xinge008/Cylinder3D/blob/a1cc7a75fc8b99cb0886d83a4901ef4bf58ace3f/train_cylinder_asym.py#L96 Could you give me some hints? Thanks.