zaiweizhang/H3DNet

How to use H3DNet on custom dataset?

praj441 opened this issue · 4 comments

Hi @zaiweizhang , @GitBoSun
Please provide tips on how to use H3DNet on our custom dataset, one having very dfferent distribution.
Specifically how to properly tune/choose the config parameters and threshold values?

For custom datasets, there are two major components to look at: dataset and threshold values (model config).

  1. For dataset, if the custom datasets contain instance label/mask, then please just refer to the code in scannet_detection_dataset_hd.py for label generation. Basically, you will use the bounding box labels to get the plane labels (plane mask, plane center voting) and also line/edge labels.
    If the custom datasets do not contain instance label/mask, then you can still use similar methods to get the plane and line labels but you need to be care of overlapping objects, such as box on a sofa. When you use nearest neighbor to extract the points near a plane/surface or a line/edge, please visualize the results and carefully choose a range threshold for getting the labels.

  2. For threshold values, if you are working with indoor scenes, I would not worry about the current model configuration. However if you are working with outdoor scenes, for lidar sparse point clouds, you might need to change the model (use Pointnet2MSG or models commonly used for lidar, examples in here https://github.com/open-mmlab/OpenPCDet). For other outdoor point clouds, collected by a kinect camera or other cameras using infrared for depth estimation, if the objects are large, you might need to increase the radius of the match_surface_center module and match_line_center module. Other than that, I do not think you need to change anything.

Thank you for your interests in our project. If you have any questions when trying out custom datasets, feel free to post your questions here. I will be happy to answer.

zaiwei

@zaiweizhang
Thank you very much for your elaborate reply. I will try to implement it.

@zaiweizhang
Hi,
I hope you are doing well.
While implementing H3DNet on my custom dataset, I got one confusion regarding the radius of the match_surface_center module and match_line_center module. As far as I can understand, in the paper, it is mentioned that the radius used is 0.05m. While in the code, in file proposal_module_refine.py, there are two thresholds used SURFACE_THRES=0.5 and LINE_THRES=0.5. And also in arguments of function PointnetSAModuleMatch, radius=0.5 is used. I am confused whether this radius used is in meters or in some different units. Or my understanding is wrong?
Please clarify my confusion.

Yeah. That's a mistake. It should be 0.05m. We will fix it in the paper. Thanks for pointing that out!