CuiRuikai / Partial2Complete

[ICCV 2023] P2C: Self-Supervised Point Cloud Completion from Single Partial Clouds
MIT License
159 stars 9 forks source link

Tree point cloud completion #14

Open Benbyi opened 8 months ago

Benbyi commented 8 months ago

Thank you for your work,can this method be used for repairing missing tree point clouds(Lack of point clouds in tree branches due to occlusion)?

CuiRuikai commented 8 months ago

Thank you for your interest. From my understanding, tree point clouds may usually contain more complex structures than objects like plane, chairs, etc. Furthermore, our method assumes a smooth surface of objects. Therefore, I think it is possible to try our method on tree point clouds, but our method may not be suitable for this kind of point cloud.

Benbyi commented 8 months ago

Thank you for your response,I have another question,What is the role of split pcl2pcl. txt in the EPN3D dataset? Do I need to modify this file if I want to add tree categories in the EPN3D dataset?

Frog-2915 commented 2 months ago

Thank you for your response,I have another question,What is the role of split pcl2pcl. txt in the EPN3D dataset? Do I need to modify this file if I want to add tree categories in the EPN3D dataset?

May I ask if you have solved this problem? I am not sure how to build my own dataset based on EPN3D. Could you please provide some ideas?

CuiRuikai commented 2 months ago

I do not think this file was used in building the dataloader. It was file inherited from the pcl2pcl codebase. If you want to add a new category. What you need to do us change the file Partial2Complete/main/data/EPN3D/EPN3D.json You need to add the sample file name and place them in the corresponding folders Let me know if you have further questions

Frog-2915 commented 2 months ago

I do not think this file was used in building the dataloader. It was file inherited from the pcl2pcl codebase. If you want to add a new category. What you need to do us change the file Partial2Complete/main/data/EPN3D/EPN3D.json You need to add the sample file name and place them in the corresponding folders Let me know if you have further questions

"I am trying to input incomplete point clouds into the model. I changed 'complete' to 'partial' in the 'COMPLETE_POINTS_PATH: ./data/EPN3D/%s/complete/%s.npy' line of the cfgs/dataset_configs/EPN3D.yaml file, but the model indicates that I need to adjust the order of calls to the optimizer and scheduler during training. Additionally, a 'ZeroDivisionError' occurred."

CuiRuikai commented 2 months ago

I do not know why this happens "but the model indicates that I need to adjust the order of calls to the optimizer and scheduler during training. " For the ZeroDivisionError errors. The name for complete and partial objects are different. Complete samples are just the ShapeNet id, but partial objects are id_number where the number is 1 to 8 indicating the camera angle. So, directly change the complete point path does not make sense. This makes the dataloader finds no available samples.

Frog-2915 commented 2 months ago

I do not know why this happens "but the model indicates that I need to adjust the order of calls to the optimizer and scheduler during training. " For the ZeroDivisionError errors. The name for complete and partial objects are different. Complete samples are just the ShapeNet id, but partial objects are id_number where the number is 1 to 8 indicating the camera angle. So, directly change the complete point path does not make sense. This makes the dataloader finds no available samples.

Thanks for your help! and I have a further question, if I want to train my own dataset, how should I set up the complete samples and partial samples in the EPN3D format when only inputting incomplete point clouds?

CuiRuikai commented 2 months ago

It doesn’t matter since complete point cloud was never used in the training process. What you need to do is set the complete point cloud path the same as the partial ones.

Frog-2915 commented 2 months ago

It doesn’t matter since complete point cloud was never used in the training process. What you need to do is set the complete point cloud path the same as the partial ones.

Where was this path changed from? I found that the changes made to cfgs/dataset_configs/EPN3D.yaml had no effect.

CuiRuikai commented 2 months ago

It should be this file. But I don’t know why it has no effects Please provide more information, such as the yank file of dataset and model, and the dataset py file if you changed it

Frog-2915 commented 2 months ago

It should be this file. But I don’t know why it has no effects Please provide more information, such as the yank file of dataset and model, and the dataset py file if you changed it

Thank you very much for your answer. I did not make any changes to the dataset py or other files. I attempted to build my own dataset by modifying EPN3D.json. If I change the paths of 'complete' and 'partial' in cfgs/dataset_comfigs/EPN3D to be the same, do I also need to copy the file ID of 'partial' from 'partial' to the 'complete' list in the EPN3D.json file 非常感谢你的解答。我没有更改dataset py等文件,我尝试通过更改EPN3D.json来构建自己的数据集。如果我将cfgs/dataset_configs/EPN3D中complete和partial的路径改为一样的,请问在EPN3D.json文件内,也需要将partial的文件ID从partial复制到complete列表吗

CuiRuikai commented 2 months ago

Yes, you need to update the EPN3D.json file. adding the partial object file names to the both partial and complete.

This is implemented in the datasets/EPNDataset.py of the datasets/EPNDataset.py file.

  partial_samples = dc[subset]['partial']
  complete_samples = dc[subset]['complete']

  for (partial_file, complete_file) in zip(partial_samples, complete_samples):
      file_list['taxonomy_id'].append(dc['taxonomy_id'])
      file_list['model_id'].append(complete_file)
      file_list['partial_path'].append(self.partial_points_path % (category_name, partial_file))
      file_list['gt_path'].append(self.complete_points_path % (category_name, complete_file))

partial_samples and complete_samples are the object ids in the EPN3D.json file, and each partial one has a corresponding complete shape as gt.

Let me know if you have further questions.