wffancy / 3dssg

3D scene graph generation using GCN

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

All the relationships shown as NONE

PericlesHat opened this issue · comments

Hello, thanks for your great work.

I setup this project following your guide and use the provided pointnet_cls_best_model.pth as pre-trained model to train 100 epochs. Through the provided visualization code, I found my model cannot predict the relationships. According to the visualization code, the predicted relationships that match GT should be shown as green, and those that do not should be black, as shown in the guide of this work.

But all of my visualized results shows the relationships as None:
image

And this is my logs (the last section), it seems the results are extremely poor:

------------------------iter: [100: 385200/385200]-------------------------
[loss] train_loss: 0.9935
[loss] train_obj_loss: 4.70025
[loss] train_pred_loss: 0.52347
[info] mean_fetch_time: 0.00075s       mean_forward_time: 0.10102s
[info] mean_backward_time: 0.18353s    mean_iter_time: 0.2853s
[info] ETA: 5h 58m 47s

saving last models...

training completed...

---------------------------------best-----------------------------
8----
[best] epoch: 1
[loss] loss: 1.01229
[loss] obj_loss: 4.88824
[loss] pred_loss: 0.52347
[sco.] Recall@5_object: 0.32947
[sco.] Recall@10_object: 0.46283
[sco.] Recall@3_predicate: 0.73218
[sco.] Recall@5_predicate: 0.73379
[sco.] Recall@50_relationship: 0.17119
[sco.] Recall@100_relationship: 0.18893

saving checkpoint...

saving last models...

Have I done anything wrong? How can I correctly predict the relationships? Looking forward to your reply. Thanks in advance.

I did almost the same ,and I have the same problem as yours.It seems that there's some problem with the code.

I did almost the same ,and I have the same problem as yours.It seems that there's some problem with the code.

I used Wu's code and successfully reproduced the model. I replaced Wu's GCN with the one of this work, and the model works perfectly. So at least the GCN part is correct.

It is noticed that: even if I feed just one split of the scene into the network , it cannot fit very well , performing badly on both the object catagory prediction and relationship predicton. There must be an underfitting problem with the network.
Do you have any other insight about the problem?Maybe we can have a further discussion.
Here is my email address: 2217563260@qq.com.

It is noticed that: even if I feed just one split of the scene into the network , it cannot fit very well , performing badly on both the object catagory prediction and relationship predicton. There must be an underfitting problem with the network. Do you have any other insight about the problem?Maybe we can have a further discussion. Here is my email address: 2217563260@qq.com.

There must be some problems with this work, and I didn't go deeply into it. Maybe you can follow another repo.

我做了几乎相同的事情,我和你有同样的问题。代码似乎存在一些问题。

我使用了Wu的代码并成功地复制了该模型。我用这项工作之一替换了吴的GCN,模型工作得很好。所以至少GCN部分是正确的。

Hello, how did you reproduce the model using wu's code?

我做了几乎相同的事情,我和你有同样的问题。代码似乎存在一些问题。

我使用了Wu的代码并成功地复制了该模型。我用这项工作之一替换了吴的GCN,模型工作得很好。所以至少GCN部分是正确的。

Hello, how did you reproduce the model using wu's code?

His SGFN model is an incremental version of SGPN, and I omit some parts of modules introduced in Scene Graph Fusion. The core architecture of SGPN are 2 PointNets and 1 GCN(+2MLPs), you can edit the model_SGFN.py and config file to achieve it. Though the results fluctuate with seeds and train-test splits, it shows the same level as the paper.

  R-R@50 R-R@100 O-R@5 O-R@10 P-R@3 P-R@5
Paper 0.40 0.66 0.68 0.78 0.89 0.93
Wu's code 0.55 0.61 0.63 0.73 0.91 0.96

你好,我下载了预训练模型,并用其中的config_CVPR21.json作为配置文件,修改其中的"MODEL": "SGPN";"label_file": "labels.instances.align.annotated.v2.ply";"dataset_type": "SGPN"但是会报错,请问你具体是如何修改的呢?

你好,我下载了预训练模型,并用其中的config_CVPR21.json作为配置文件,修改其中的"MODEL": "SGPN";"label_file": "labels.instances.align.annotated.v2.ply";"dataset_type": "SGPN"但是会报错,请问你具体是如何修改的呢?

Use SGFN and modify the network/config. I got problems on SGPN too.

你好,我下载了预训练模型,并用其中的config_CVPR21.json作为配置文件,修改其中的"MODEL": "SGPN";"label_file": "labels.instances.align.annotated.v2.ply";"dataset_type": "SGPN"但是会报错,请问你具体是如何修改的呢?

Use SGFN and modify the network/config. I got problems on SGPN too.

我使用了SGFN,但是将"label_file"修改为"labels.instances.align.annotated.v2.ply"还是会报错

你好,我下载了预训练模型,并用其中的config_CVPR21.json作为配置文件,修改其中的"MODEL": "SGPN";"label_file": "labels.instances.align.annotated.v2.ply";"dataset_type": "SGPN"但是会报错,请问你具体是如何修改的呢?

Use SGFN and modify the network/config. I got problems on SGPN too.

我使用了SGFN,但是将"label_file"修改为"labels.instances.align.annotated.v2.ply"还是会报错

Have you processed the raw data? Check this: https://github.com/ShunChengWu/3DSSG/tree/master/data_processing#data-preparation

你好,我下载了预训练模型,并用其中的config_CVPR21.json作为配置文件,修改其中的"MODEL": "SGPN";"label_file": "labels.instances.align.annotated.v2.ply";"dataset_type": "SGPN"但是会报错,请问你具体是如何修改的呢?

Use SGFN and modify the network/config. I got problems on SGPN too.

我使用了SGFN,但是将"label_file"修改为"labels.instances.align.annotated.v2.ply"还是会报错

Have you processed the raw data? Check this: https://github.com/ShunChengWu/3DSSG/tree/master/data_processing#data-preparation

我按照https://github.com/ShunChengWu/3DSSG/tree/master/data_processing#data-preparation
处理过原始数据,但是依然会有报错,你能给我你修改后的代码吗?非常感谢

你好!但我使用"label_file":"inseg.ply"代码运行没有错误,请问你运行的结果是基于"inseg.ply"还是"labels.instances.align.annotated.v2.ply"呢?

When you try loading a pretrained model and generating visualized results on validation set : remove model.eval() in file "train.py",function "train".Maybe you will find everything all right.(在train.py里面,模型load进来之后,不要model.eval(),就不会都是”none“,你们也可以试一下)

你好!但我使用"label_file":"inseg.ply"代码运行没有错误,请问你运行的结果是基于"inseg.ply"还是"labels.instances.align.annotated.v2.ply"呢?

Based on labels.instances.align.annotated.v2.ply.

When you try loading a pretrained model and generating visualized results on validation set : remove model.eval() in file "train.py",function "train".Maybe you will find everything all right.(在train.py里面,模型load进来之后,不要model.eval(),就不会都是”none“,你们也可以试一下)

I'm on it, thanks.

你好!但我使用"label_file":"inseg.ply"代码运行没有错误,请问你运行的结果是基于"inseg.ply"还是"labels.instances.align.annotated.v2.ply"呢?

Based on labels.instances.align.annotated.v2.ply.

我在data_processing阶段运行gen_data_gt.py ----type train/gen_data_gt.py ----type test/gen_data_gt.py/----type validation分别生成relationships_train.json/relationships_test.json/relationships_validation.json,然后在config_CVPR21.json将"label_file": "labels.instances.align.annotated.v2.ply","GCN_TYPE": "TRIP",请问这样的操作是正确的吗?

In general, calling the model.eval() function does not affect the performance of the model. However, when I was in the training process and the model fit well to the training set, there was a situation where all relationships were "none" when I loaded the model for validation and visualization (even when validating with data within the training set). Currently, the model works without invoking model.eval() after loading it, but this does not mean that there are no other potential issues with the model.
一般情况下,调用model.eval()函数不会影响模型的表现。然而,当我在训练过程中,模型良好地拟合了训练集,却在load模型进行验证和可视化(甚至是用训练集内的数据进行验证)时,出现关系全”none“的情况。目前,load模型之后不调用model.eval()能让模型工作,但这不代表模型不存在其它潜在的问题。

Difference from the paper: Learning rate: The default value is 0.0001, while this code uses 0.001 (the learning rate is quite sensitive in this task, and it has been verified that the main reason for the relationship degenerating to "none" is due to a learning rate that is too high.); the object and relationship classification use MLP, where the linear layer has three, while this code uses two; in per-class binary classification loss, the α value used is 0.25, while the default value is supposed to be 0.7; in the GCN model from the paper, each layer of graph convolution uses residual connections, but this code has commented out this part. To modify the sgpn.py file, one possible approach is: the input dimension of the first layer of graph convolution should be (O,1024) -> (O,256), where 256 is the final feature dimension in the paper for objects and relationships, and this layer does not use residual connections. The next four layers all utilize residual connections.
和论文不同的地方:学习率:默认为0.0001,该代码使用0.001(本任务对学习率相当敏感,经小批量数据验证,过高的学习率是关系退化为”none“的重要原因);物体、关系分类用的mlp,线性层有三个,而该代码是2个;per-class binary classification loss中,α值使用的是0.25,该代码默认应该是0.7;论文GCN中,每层图卷积都使用了残差连接,而该代码把这部分注释掉了,需要修改sgpn.py,一种可能的办法是:第一层图卷积输入维度是(O,1024)->(O,256),256是论文中物体和关系的最终特征维度数,该层不使用残差连接;之后四层均使用残差连接。

你好!但我使用"label_file":"inseg.ply"代码运行没有错误,请问你运行的结果是基于"inseg.ply"还是"labels.instances.align.annotated.v2.ply"呢?

Based on labels.instances.align.annotated.v2.ply.

我在data_processing阶段运行gen_data_gt.py ----type train/gen_data_gt.py ----type test/gen_data_gt.py/----type validation分别生成relationships_train.json/relationships_test.json/relationships_validation.json,然后在config_CVPR21.json将"label_file": "labels.instances.align.annotated.v2.ply","GCN_TYPE": "TRIP",请问这样的操作是正确的吗?

I think it is correct cause I did the same. Maybe you can issue your Error Logs to Wu's page.

Difference from the paper: Learning rate: The default value is 0.0001, while this code uses 0.001 (the learning rate is quite sensitive in this task, and it has been verified that the main reason for the relationship degenerating to "none" is due to a learning rate that is too high.); the object and relationship classification use MLP, where the linear layer has three, while this code uses two; in per-class binary classification loss, the α value used is 0.25, while the default value is supposed to be 0.7; in the GCN model from the paper, each layer of graph convolution uses residual connections, but this code has commented out this part. To modify the sgpn.py file, one possible approach is: the input dimension of the first layer of graph convolution should be (O,1024) -> (O,256), where 256 is the final feature dimension in the paper for objects and relationships, and this layer does not use residual connections. The next four layers all utilize residual connections. 和论文不同的地方:学习率:默认为0.0001,该代码使用0.001(本任务对学习率相当敏感,经小批量数据验证,过高的学习率是关系退化为”none“的重要原因);物体、关系分类用的mlp,线性层有三个,而该代码是2个;per-class binary classification loss中,α值使用的是0.25,该代码默认应该是0.7;论文GCN中,每层图卷积都使用了残差连接,而该代码把这部分注释掉了,需要修改sgpn.py,一种可能的办法是:第一层图卷积输入维度是(O,1024)->(O,256),256是论文中物体和关系的最终特征维度数,该层不使用残差连接;之后四层均使用残差连接。

Thanks for your opinion. I leverage the residual connection by aligning the dimensions, and the recall rate improves slightly (run on the framework of Wu's code). I'll try to go deeper into this.

你好!但我使用"label_file":"inseg.ply"代码运行没有错误,请问你运行的结果是基于"inseg.ply"还是"labels.instances.align.annotated.v2.ply"呢?

Based on labels.instances.align.annotated.v2.ply.

我在data_processing阶段运行gen_data_gt.py ----type train/gen_data_gt.py ----type test/gen_data_gt.py/----type validation分别生成relationships_train.json/relationships_test.json/relationships_validation.json,然后在config_CVPR21.json将"label_file": "labels.instances.align.annotated.v2.ply","GCN_TYPE": "TRIP",请问这样的操作是正确的吗?

I think it is correct cause I did the same. Maybe you can issue your Error Logs to Wu's page.

你好,谢谢你的帮助,按照这样的配置我成功的运行了代码,通过对比dataset_SGFN和dataset_SGPN的代码,我发现取消掉util_data.py中133-135行代码,运行MODEL": "SGPN";"label_file": "labels.instances.align.annotated.v2.ply";"dataset_type": "SGPN"是可以成功的

Difference from the paper: Learning rate: The default value is 0.0001, while this code uses 0.001 (the learning rate is quite sensitive in this task, and it has been verified that the main reason for the relationship degenerating to "none" is due to a learning rate that is too high.); the object and relationship classification use MLP, where the linear layer has three, while this code uses two; in per-class binary classification loss, the α value used is 0.25, while the default value is supposed to be 0.7; in the GCN model from the paper, each layer of graph convolution uses residual connections, but this code has commented out this part. To modify the sgpn.py file, one possible approach is: the input dimension of the first layer of graph convolution should be (O,1024) -> (O,256), where 256 is the final feature dimension in the paper for objects and relationships, and this layer does not use residual connections. The next four layers all utilize residual connections. 和论文不同的地方:学习率:默认为0.0001,该代码使用0.001(本任务对学习率相当敏感,经小批量数据验证,过高的学习率是关系退化为”none“的重要原因);物体、关系分类用的mlp,线性层有三个,而该代码是2个;per-class binary classification loss中,α值使用的是0.25,该代码默认应该是0.7;论文GCN中,每层图卷积都使用了残差连接,而该代码把这部分注释掉了,需要修改sgpn.py,一种可能的办法是:第一层图卷积输入维度是(O,1024)->(O,256),256是论文中物体和关系的最终特征维度数,该层不使用残差连接;之后四层均使用残差连接。

Difference from the paper: Learning rate: The default value is 0.0001, while this code uses 0.001 (the learning rate is quite sensitive in this task, and it has been verified that the main reason for the relationship degenerating to "none" is due to a learning rate that is too high.); the object and relationship classification use MLP, where the linear layer has three, while this code uses two; in per-class binary classification loss, the α value used is 0.25, while the default value is supposed to be 0.7; in the GCN model from the paper, each layer of graph convolution uses residual connections, but this code has commented out this part. To modify the sgpn.py file, one possible approach is: the input dimension of the first layer of graph convolution should be (O,1024) -> (O,256), where 256 is the final feature dimension in the paper for objects and relationships, and this layer does not use residual connections. The next four layers all utilize residual connections. 和论文不同的地方:学习率:默认为0.0001,该代码使用0.001(本任务对学习率相当敏感,经小批量数据验证,过高的学习率是关系退化为”none“的重要原因);物体、关系分类用的mlp,线性层有三个,而该代码是2个;per-class binary classification loss中,α值使用的是0.25,该代码默认应该是0.7;论文GCN中,每层图卷积都使用了残差连接,而该代码把这部分注释掉了,需要修改sgpn.py,一种可能的办法是:第一层图卷积输入维度是(O,1024)->(O,256),256是论文中物体和关系的最终特征维度数,该层不使用残差连接;之后四层均使用残差连接。

你好!我在可视化的时候没有出现关系全为None的情况

@IABAcademy

That's amazing!How did you manage to do it?I wonder if you use this code or Wu's code.If you have successfully reproduced the paper,please tell me how.Thank you so much

如果我只想使用Wu代码复现20CVPR,按照Wu代码中的data_processing,使用data_gt 生成relationships_train.json/relationships_test.json/relationships_validation.json三套文件后,请问还需要再执行”Generate training/evaluation data from estimated segmentations“中的部分吗?请问你的复现成功了吗

@IABAcademy

That's amazing!How did you manage to do it?I wonder if you use this code or Wu's code.If you have successfully reproduced the paper,please tell me how.Thank you so much

我就说按照它的操作,然后可视化出来

如果我只想使用Wu代码复现20CVPR,按照Wu代码中的data_processing,使用data_gt 生成relationships_train.json/relationships_test.json/relationships_validation.json三套文件后,请问还需要再执行”Generate training/evaluation data from estimated segmentations“中的部分吗?请问你的复现成功了吗
按照我的理解执行”Generate training/evaluation data from estimated segmentations“是从重建的到的inseg.ply中生成三套文件,但使用data_gt是从labels.instances.align.annotated.v2.ply去生成三件套,这个我觉得是可以复现20CVPR,现在我已经成功运行了

如果我只想使用Wu代码复现20CVPR,按照Wu代码中的data_processing,使用data_gt 生成relationships_train.json/relationships_test.json/relationships_validation.json三套文件后,请问还需要再执行”Generate training/evaluation data from estimated segmentations“中的部分吗?请问你的复现成功了吗
按照我的理解执行”Generate training/evaluation data from estimated segmentations“是从重建的到的inseg.ply中生成三套文件,但使用data_gt是从labels.instances.align.annotated.v2.ply去生成三件套,这个我觉得是可以复现20CVPR,现在我已经成功运行了

也就是说,如果只复现20CVPR,只需要执行”Generate training/evaluation data with GT segmentations“这一部分就足够,之后按照你之前的回答,取消掉util_data.py中133-135行代码,改变config_CVPR21.json中的几个标签:MODEL": "SGPN";"label_file": "labels.instances.align.annotated.v2.ply";"dataset_type": "SGPN";"GCN_TYPE": "TRIP",之后就能够复现20CVPR的结果了吗? 还有,config_CVPR21.json是如何得到的呢?

如果我只想使用Wu代码复现20CVPR,按照Wu代码中的data_processing,使用data_gt 生成relationships_train.json/relationships_test.json/relationships_validation.json三套文件后,请问还需要再执行”Generate training/evaluation data from estimated segmentations“中的部分吗?请问你的复现成功了吗
按照我的理解执行”Generate training/evaluation data from estimated segmentations“是从重建的到的inseg.ply中生成三套文件,但使用data_gt是从labels.instances.align.annotated.v2.ply去生成三件套,这个我觉得是可以复现20CVPR,现在我已经成功运行了

也就是说,如果只复现20CVPR,只需要执行”Generate training/evaluation data with GT segmentations“这一部分就足够,之后按照你之前的回答,取消掉util_data.py中133-135行代码,改变config_CVPR21.json中的几个标签:MODEL": "SGPN";"label_file": "labels.instances.align.annotated.v2.ply";"dataset_type": "SGPN";"GCN_TYPE": "TRIP",之后就能够复现20CVPR的结果了吗? 还有,config_CVPR21.json是如何得到的呢?

按照这样的配置是能够运行的,20CVPR的附加材料里面表示,场景过大数据进行了切割,使用data_gt 时有split的选项,但我还没有进行进一步尝试,如果你有其他看法,也欢迎和我讨论。config_CVPR21.json在Wu的代码库中有下载链接

如果我只想使用Wu代码复现20CVPR,按照Wu代码中的data_processing,使用data_gt 生成relationships_train.json/relationships_test.json/relationships_validation.json三套文件后,请问还需要再执行”Generate training/evaluation data from estimated segmentations“中的部分吗?请问你的复现成功了吗
按照我的理解执行”Generate training/evaluation data from estimated segmentations“是从重建的到的inseg.ply中生成三套文件,但使用data_gt是从labels.instances.align.annotated.v2.ply去生成三件套,这个我觉得是可以复现20CVPR,现在我已经成功运行了

也就是说,如果只复现20CVPR,只需要执行”Generate training/evaluation data with GT segmentations“这一部分就足够,之后按照你之前的回答,取消掉util_data.py中133-135行代码,改变config_CVPR21.json中的几个标签:MODEL": "SGPN";"label_file": "labels.instances.align.annotated.v2.ply";"dataset_type": "SGPN";"GCN_TYPE": "TRIP",之后就能够复现20CVPR的结果了吗? 还有,config_CVPR21.json是如何得到的呢?

按照这样的配置是能够运行的,20CVPR的附加材料里面表示,场景过大数据进行了切割,使用data_gt 时有split的选项,但我还没有进行进一步尝试,如果你有其他看法,也欢迎和我讨论。config_CVPR21.json在Wu的代码库中有下载链接

我已经按你的方法成功开始训练了,十分感谢!大概需要多少个epoch能够复现20CVPR呢?命令行显示的”Precision/train_rel_cls“上升地很快,剩下的三个指标上升地十分缓慢

如果我只想使用Wu代码复现20CVPR,按照Wu代码中的data_processing,使用data_gt 生成relationships_train.json/relationships_test.json/relationships_validation.json三套文件后,请问还需要再执行”Generate training/evaluation data from estimated segmentations“中的部分吗?请问你的复现成功了吗
按照我的理解执行”Generate training/evaluation data from estimated segmentations“是从重建的到的inseg.ply中生成三套文件,但使用data_gt是从labels.instances.align.annotated.v2.ply去生成三件套,这个我觉得是可以复现20CVPR,现在我已经成功运行了

也就是说,如果只复现20CVPR,只需要执行”Generate training/evaluation data with GT segmentations“这一部分就足够,之后按照你之前的回答,取消掉util_data.py中133-135行代码,改变config_CVPR21.json中的几个标签:MODEL": "SGPN";"label_file": "labels.instances.align.annotated.v2.ply";"dataset_type": "SGPN";"GCN_TYPE": "TRIP",之后就能够复现20CVPR的结果了吗? 还有,config_CVPR21.json是如何得到的呢?

按照这样的配置是能够运行的,20CVPR的附加材料里面表示,场景过大数据进行了切割,使用data_gt 时有split的选项,但我还没有进行进一步尝试,如果你有其他看法,也欢迎和我讨论。config_CVPR21.json在Wu的代码库中有下载链接

我已经按你的方法成功开始训练了,十分感谢!大概需要多少个epoch能够复现20CVPR呢?命令行显示的”Precision/train_rel_cls“上升地很快,剩下的三个指标上升地十分缓慢

这个我确实不知道了,不过你可以看看20CVPR的支撑材料,如果你也新的发现,欢迎和我讨论!

我做了几乎相同的事情,我和你有同样的问题。代码似乎存在一些问题。

我使用了Wu的代码并成功地复制了该模型。我用这项工作之一替换了吴的GCN,模型工作得很好。所以至少GCN部分是正确的。

Hello, how did you reproduce the model using wu's code?

His SGFN model is an incremental version of SGPN, and I omit some parts of modules introduced in Scene Graph Fusion. The core architecture of SGPN are 2 PointNets and 1 GCN(+2MLPs), you can edit the model_SGFN.py and config file to achieve it. Though the results fluctuate with seeds and train-test splits, it shows the same level as the paper.

  R-R@50 R-R@100 O-R@5 O-R@10 P-R@3 P-R@5
Paper 0.40 0.66 0.68 0.78 0.89 0.93
Wu's code 0.55 0.61 0.63 0.73 0.91 0.96

BTW,Can you tell me the hyperparameter you use? I successfully run the code in this way,but it seems that the result isn't as good.

我做了几乎相同的事情,我和你有同样的问题。代码似乎存在一些问题。

我使用了Wu的代码并成功地复制了该模型。我用这项工作之一替换了吴的GCN,模型工作得很好。所以至少GCN部分是正确的。

Hello, how did you reproduce the model using wu's code?

His SGFN model is an incremental version of SGPN, and I omit some parts of modules introduced in Scene Graph Fusion. The core architecture of SGPN are 2 PointNets and 1 GCN(+2MLPs), you can edit the model_SGFN.py and config file to achieve it. Though the results fluctuate with seeds and train-test splits, it shows the same level as the paper.

  R-R@50 R-R@100 O-R@5 O-R@10 P-R@3 P-R@5
Paper 0.40 0.66 0.68 0.78 0.89 0.93
Wu's code 0.55 0.61 0.63 0.73 0.91 0.96

Would you please tell me how you reproduced the 3DSSG paper and obtained these results?I changed the config file,using "SGPN"dataset,"SGPN" model,"TRIP" GCN_TYPE and "labels.instances.align.annotated.v2.ply" labels,training 100 epoched.The results are weird.Maybe I used wrong hyperparameters.
I opened an issue in Wu's repo about this problem ,and haven't been answered yet.

我做了几乎相同的事情,我和你有同样的问题。代码似乎存在一些问题。

我使用了Wu的代码并成功地复制了该模型。我用这项工作之一替换了吴的GCN,模型工作得很好。所以至少GCN部分是正确的。

Hello, how did you reproduce the model using wu's code?

His SGFN model is an incremental version of SGPN, and I omit some parts of modules introduced in Scene Graph Fusion. The core architecture of SGPN are 2 PointNets and 1 GCN(+2MLPs), you can edit the model_SGFN.py and config file to achieve it. Though the results fluctuate with seeds and train-test splits, it shows the same level as the paper.
  R-R@50 R-R@100 O-R@5 O-R@10 P-R@3 P-R@5
Paper 0.40 0.66 0.68 0.78 0.89 0.93
Wu's code 0.55 0.61 0.63 0.73 0.91 0.96

Would you please tell me how you reproduced the 3DSSG paper and obtained these results?I changed the config file,using "SGPN"dataset,"SGPN" model,"TRIP" GCN_TYPE and "labels.instances.align.annotated.v2.ply" labels,training 100 epoched.The results are weird.Maybe I used wrong hyperparameters. I opened an issue in Wu's repo about this problem ,and haven't been answered yet.

Well I haven't tried SGPN, I used SGFN model and datasets. I edited the config file to align the network architecture in 3DSSG and the result were produced using TRIP, labels.instances.align.annotated.v2.ply and 500epochs. No change in hyperparameters. I found the trainning process does not seem to be able to pause and continue (based on tensorboard data), maybe you can train all the epochs at once.

我做了几乎相同的事情,我和你有同样的问题。代码似乎存在一些问题。

我使用了Wu的代码并成功地复制了该模型。我用这项工作之一替换了吴的GCN,模型工作得很好。所以至少GCN部分是正确的。

Hello, how did you reproduce the model using wu's code?

His SGFN model is an incremental version of SGPN, and I omit some parts of modules introduced in Scene Graph Fusion. The core architecture of SGPN are 2 PointNets and 1 GCN(+2MLPs), you can edit the model_SGFN.py and config file to achieve it. Though the results fluctuate with seeds and train-test splits, it shows the same level as the paper.
  R-R@50 R-R@100 O-R@5 O-R@10 P-R@3 P-R@5
Paper 0.40 0.66 0.68 0.78 0.89 0.93
Wu's code 0.55 0.61 0.63 0.73 0.91 0.96

Would you please tell me how you reproduced the 3DSSG paper and obtained these results?I changed the config file,using "SGPN"dataset,"SGPN" model,"TRIP" GCN_TYPE and "labels.instances.align.annotated.v2.ply" labels,training 100 epoched.The results are weird.Maybe I used wrong hyperparameters. I opened an issue in Wu's repo about this problem ,and haven't been answered yet.

Well I haven't tried SGPN, I used SGFN model and datasets. I edited the config file to align the network architecture in 3DSSG and the result were produced using TRIP, labels.instances.align.annotated.v2.ply and 500epochs. No change in hyperparameters. I found the trainning process does not seem to be able to pause and continue (based on tensorboard data), maybe you can train all the epochs at once.

500 epoches is crazy!It takes 120 hours for my device to complete this task.In the 21CVPR paper,all the models are trained for 150 epoches.Isn't that enough?
I find the training process is able to pause and continue.Pause anytime you want.When you want to continue,just use the same config file,and the code will load the models saved in the training process.
BTW,there is a long-tail distribution problem in the relation data."Attached to" takes the largest propotion of relations,and the network tends to predict any relation as "attached to".If you have "CVPR21_topk.txt" file,please have a look at "Recall@k for predicates: top-k R@1".Mine is "0.02",and my "top-k R@2" reaches "0.99",which means the network predicts any relation as "attached to".This phenomenon is also shown in this confusion matrix.
image
Do you have the same problem?Or the problem can be solved with more epoches of training?

我做了几乎相同的事情,我和你有同样的问题。代码似乎存在一些问题。

我使用了Wu的代码并成功地复制了该模型。我用这项工作之一替换了吴的GCN,模型工作得很好。所以至少GCN部分是正确的。

Hello, how did you reproduce the model using wu's code?

His SGFN model is an incremental version of SGPN, and I omit some parts of modules introduced in Scene Graph Fusion. The core architecture of SGPN are 2 PointNets and 1 GCN(+2MLPs), you can edit the model_SGFN.py and config file to achieve it. Though the results fluctuate with seeds and train-test splits, it shows the same level as the paper.
  R-R@50 R-R@100 O-R@5 O-R@10 P-R@3 P-R@5
Paper 0.40 0.66 0.68 0.78 0.89 0.93
Wu's code 0.55 0.61 0.63 0.73 0.91 0.96

Would you please tell me how you reproduced the 3DSSG paper and obtained these results?I changed the config file,using "SGPN"dataset,"SGPN" model,"TRIP" GCN_TYPE and "labels.instances.align.annotated.v2.ply" labels,training 100 epoched.The results are weird.Maybe I used wrong hyperparameters. I opened an issue in Wu's repo about this problem ,and haven't been answered yet.

Well I haven't tried SGPN, I used SGFN model and datasets. I edited the config file to align the network architecture in 3DSSG and the result were produced using TRIP, labels.instances.align.annotated.v2.ply and 500epochs. No change in hyperparameters. I found the trainning process does not seem to be able to pause and continue (based on tensorboard data), maybe you can train all the epochs at once.

500 epoches is crazy!It takes 120 hours for my device to complete this task.In the 21CVPR paper,all the models are trained for 150 epoches.Isn't that enough? I find the training process is able to pause and continue.Pause anytime you want.When you want to continue,just use the same config file,and the code will load the models saved in the training process. BTW,there is a long-tail distribution problem in the relation data."Attached to" takes the largest propotion of relations,and the network tends to predict any relation as "attached to".If you have "CVPR21_topk.txt" file,please have a look at "Recall@k for predicates: top-k R@1".Mine is "0.02",and my "top-k R@2" reaches "0.99",which means the network predicts any relation as "attached to".This phenomenon is also shown in this confusion matrix. image Do you have the same problem?Or the problem can be solved with more epoches of training?

500 eps takes me 11hrs in my device, and 300 eps shows the same results as 500.
Last time I continued the traning with the same config and the loss and recall trend of tensorboad has obviously changed, so I never pause it again.
My top-k:
Recall@k for predicates:
top-k R@1 0.7943910656351385
top-k R@2 0.8878213127027702
top-k R@3 0.9304186423758423
However, I got the similar problem as the relation "supported by" appeared too many times. I think None should be the one that appears the most, probably due to the order of training labels or problems with encoding and decoding. I'm dealing with that right now.

我做了几乎相同的事情,我和你有同样的问题。代码似乎存在一些问题。

我使用了Wu的代码并成功地复制了该模型。我用这项工作之一替换了吴的GCN,模型工作得很好。所以至少GCN部分是正确的。

Hello, how did you reproduce the model using wu's code?

His SGFN model is an incremental version of SGPN, and I omit some parts of modules introduced in Scene Graph Fusion. The core architecture of SGPN are 2 PointNets and 1 GCN(+2MLPs), you can edit the model_SGFN.py and config file to achieve it. Though the results fluctuate with seeds and train-test splits, it shows the same level as the paper.
  R-R@50 R-R@100 O-R@5 O-R@10 P-R@3 P-R@5
Paper 0.40 0.66 0.68 0.78 0.89 0.93
Wu's code 0.55 0.61 0.63 0.73 0.91 0.96

Would you please tell me how you reproduced the 3DSSG paper and obtained these results?I changed the config file,using "SGPN"dataset,"SGPN" model,"TRIP" GCN_TYPE and "labels.instances.align.annotated.v2.ply" labels,training 100 epoched.The results are weird.Maybe I used wrong hyperparameters. I opened an issue in Wu's repo about this problem ,and haven't been answered yet.

Well I haven't tried SGPN, I used SGFN model and datasets. I edited the config file to align the network architecture in 3DSSG and the result were produced using TRIP, labels.instances.align.annotated.v2.ply and 500epochs. No change in hyperparameters. I found the trainning process does not seem to be able to pause and continue (based on tensorboard data), maybe you can train all the epochs at once.

500 epoches is crazy!It takes 120 hours for my device to complete this task.In the 21CVPR paper,all the models are trained for 150 epoches.Isn't that enough? I find the training process is able to pause and continue.Pause anytime you want.When you want to continue,just use the same config file,and the code will load the models saved in the training process. BTW,there is a long-tail distribution problem in the relation data."Attached to" takes the largest propotion of relations,and the network tends to predict any relation as "attached to".If you have "CVPR21_topk.txt" file,please have a look at "Recall@k for predicates: top-k R@1".Mine is "0.02",and my "top-k R@2" reaches "0.99",which means the network predicts any relation as "attached to".This phenomenon is also shown in this confusion matrix. image Do you have the same problem?Or the problem can be solved with more epoches of training?
您好!您能给我一个联系方式吗?我想具体和你讨论一下这个结果

我做了几乎相同的事情,我和你有同样的问题。代码似乎存在一些问题。

我使用了Wu的代码并成功地复制了该模型。我用这项工作之一替换了吴的GCN,模型工作得很好。所以至少GCN部分是正确的。

Hello, how did you reproduce the model using wu's code?

His SGFN model is an incremental version of SGPN, and I omit some parts of modules introduced in Scene Graph Fusion. The core architecture of SGPN are 2 PointNets and 1 GCN(+2MLPs), you can edit the model_SGFN.py and config file to achieve it. Though the results fluctuate with seeds and train-test splits, it shows the same level as the paper.
  R-R@50 R-R@100 O-R@5 O-R@10 P-R@3 P-R@5
Paper 0.40 0.66 0.68 0.78 0.89 0.93
Wu's code 0.55 0.61 0.63 0.73 0.91 0.96

Would you please tell me how you reproduced the 3DSSG paper and obtained these results?I changed the config file,using "SGPN"dataset,"SGPN" model,"TRIP" GCN_TYPE and "labels.instances.align.annotated.v2.ply" labels,training 100 epoched.The results are weird.Maybe I used wrong hyperparameters. I opened an issue in Wu's repo about this problem ,and haven't been answered yet.

Well I haven't tried SGPN, I used SGFN model and datasets. I edited the config file to align the network architecture in 3DSSG and the result were produced using TRIP, labels.instances.align.annotated.v2.ply and 500epochs. No change in hyperparameters. I found the trainning process does not seem to be able to pause and continue (based on tensorboard data), maybe you can train all the epochs at once.

500 epoches is crazy!It takes 120 hours for my device to complete this task.In the 21CVPR paper,all the models are trained for 150 epoches.Isn't that enough? I find the training process is able to pause and continue.Pause anytime you want.When you want to continue,just use the same config file,and the code will load the models saved in the training process. BTW,there is a long-tail distribution problem in the relation data."Attached to" takes the largest propotion of relations,and the network tends to predict any relation as "attached to".If you have "CVPR21_topk.txt" file,please have a look at "Recall@k for predicates: top-k R@1".Mine is "0.02",and my "top-k R@2" reaches "0.99",which means the network predicts any relation as "attached to".This phenomenon is also shown in this confusion matrix. image Do you have the same problem?Or the problem can be solved with more epoches of training?
您好!您能给我一个联系方式吗?我想具体和你讨论一下这个结果

2217563260 is my qq account.Looking forward to your contact.