Henry1iu / TNT-Trajectory-Prediction

A Unofficial Pytorch Implementation of TNT: Target-driveN Trajectory Prediction
504 stars 95 forks source link

图数据处理结果与提供的小型数据集不一致 #32

Closed AIChuY closed 1 year ago

AIChuY commented 2 years ago

您好!我正在尝试自己写从硬盘读取的数据集。在这个过程中我发现直接从您提供的小型数据集中的pkl文件生成图数据得到的结果与您分享的data.pt中的数据不一致。之后我尝试直接删除文件夹中的processed文件夹然后重新使用您提供的内存数据集处理数据,发现仍与您分享的data.pt不一致。 直接测试的结果如下 python3 test_tnt.py -rm /media/wzy/78728a5f-27bc-43c6-ae04-0d7615fc9e86/wzy/TNT/TNT/best_TNT.pth -r ../interm_data_small -s val -b 128 [TNTTrainer]: Train the mode with single device on cuda:0. 100%|█████████████████████████████████████████████████████████████████| 10/10 [00:12<00:00, 1.29s/it] [TNTTrainer]: The test result: {'minADE': 0.913179270838536, 'minFDE': 1.6614379576291651, 'MR': 0.19437340153452684};

python3 test_tnt.py -rm /media/wzy/78728a5f-27bc-43c6-ae04-0d7615fc9e86/wzy/TNT/TNT/best_TNT.pth -r ../rebuild_small/ -s val -b 128 Processing... Loading Raw Data...: 100%|██████████████████████████████████████| 1190/1190 [00:00<00:00, 1979.91it/s]

[Argoverse]: The maximum of valid length is 286. [Argoverse]: The maximum of no. of candidates is 4035. Transforming the data to GraphData...: 100%|█████████████████████| 1190/1190 [00:07<00:00, 151.16it/s] Done! [TNTTrainer]: Train the mode with single device on cuda:0. 100%|█████████████████████████████████████████████████████████████████| 10/10 [00:55<00:00, 5.57s/it] [TNTTrainer]: The test result: {'minADE': 8.632765975260398, 'minFDE': 16.050205564593412, 'MR': 0.7781512605042017}; 其中rebuild_small是interm_data_small的副本,只是删除了各processed文件夹。具体查看数据后发现最大序列长度,有效序列长度和最大候选数目等特征都不一致: 2022-09-12 16-23-03屏幕截图 同一个序列号的轨迹数据也不一致

2022-09-12 16-24-40屏幕截图 但是从数据的形式上来看似乎仍然保持了正确的语义,不像是代码出错。是不是您在生成数据时使用了其他的变换?或者您能否提示可能是什么造成了这种错误?

AIChuY commented 2 years ago

在删除所给的小型数据集中train的processed文件夹后ArgoverseInMem没有办法重新构造data.pt RuntimeError: Sizes of tensors must match except in dimension 0. Got 4 and 2 in dimension 1 (The offending index is 60) 我怀疑是否提供的数据集中pkl的生成方法和后面的图数据处理函数不匹配?

Henry1iu commented 2 years ago

Hi,

因为在做其他实验, 可能导致了raw和processed的数据不一致. 目前已经更新了数据, 可以在这里下载.

AIChuY commented 2 years ago

这个新的数据好像没有问题了,感谢您的回复!另外我有一个小问题是为什么把数据的padding放到get这一步再做?从代码上来看padding的目标尺度是和样本没有关系的,理论上应该可以在处理时就做好。是因为pyg的数据格式导致不能在process时做padding吗?

Henry1iu commented 2 years ago

Hi,

把padding 放到get()这一步的本意是节省内存, 如果内存足够充足, 这一步可以在process的时候一并处理.