ShunChengWu / 3DSSG

Other
142 stars 22 forks source link

How to get the results of Table 1 in your paper? #19

Closed clgx00 closed 2 years ago

clgx00 commented 2 years ago

hi! Excellent work! But I have one question. It should have 26 different relationships in your table 1. After using gen_data_gt.py to generate the training data, i only get the realtionships.txt with 7 different relationships. [supported by, attached to, standing on, hanging on, connected to, part of, build in].

ShunChengWu commented 2 years ago

Hi, https://github.com/ShunChengWu/3DSSG/blob/706703823cdfbd1e7d2d7b0bd659df88b71f563e/data_processing/gen_data_gt.py#L299 Please comment out this line. Then you should be able to get 26 relationships.

PericlesHat commented 1 year ago

Hi,

https://github.com/ShunChengWu/3DSSG/blob/706703823cdfbd1e7d2d7b0bd659df88b71f563e/data_processing/gen_data_gt.py#L299

Please comment out this line. Then you should be able to get 26 relationships.

I changed this line into:

target_relationships = ['none','supported by','left','right','front','behind','close by','inside','bigger than','smaller than','higher than','lower than','same symmetry as','same as','attached to','standing on','lying on','hanging on','connected to','leaning against','part of','belonging to','build in','standing in','cover','lying in','hanging in']

And generate a relationships.txt with 27 relationships. When I trained the model with config_CVPR21.json, I only changed inseg.ply to labels.instances.annotated.v2.ply and I got this in logs (verbose on):

=== 27 relationships ===
|  0          attached to 0.00010||  1               behind 0.00005|
|  2         belonging to 0.00508||  3          bigger than 0.00028|
|  4             build in 0.00309||  5             close by 0.00005|
|  6         connected to 0.00353||  7                cover 0.01471|
|  8                front 0.00005||  9           hanging in 0.10000|
| 10           hanging on 0.00052|| 11          higher than 0.00014|
| 12               inside 1.00000|| 13      leaning against 0.00286|
| 14                 left 0.00003|| 15           lower than 0.00014|
| 16             lying in 0.00645|| 17             lying on 0.00035|
| 18                 none 1.00000|| 19              part of 0.00917|
| 20                right 0.00003|| 21              same as 0.00015|
| 22     same symmetry as 0.00180|| 23         smaller than 0.00028|
| 24          standing in 0.00258|| 25          standing on 0.00010|
| 26         supported by 0.00000|
num of data: 1061
Traceback (most recent call last):
  File "main.py", line 83, in <module>
    main()
  File "main.py", line 33, in main
    model = SGFN(config)                         
  File "/home/xxx/3dssg/3DSSG-wu/src/SceneGraphFusionNetwork.py", line 36, in __init__
    self.dataset_train.__getitem__(0)
  File "./src/dataset_SGFN.py", line 303, in __getitem__
    data = load_mesh(path, self.mconfig.label_file,self.use_rgb,self.use_normal)
  File "./src/dataset_SGFN.py", line 46, in load_mesh
    instances = plydata.metadata['ply_raw']['vertex']['data']['label'].flatten()
KeyError: 'label'

I've tried different train-test-valid splits but the error always appears. What happened? Thanks in advance for your reply.

ShunChengWu commented 1 year ago

This is related to the version of your trimesh I believe. Please use debug mode and check the keys stored in your metadata.