MIV-XJTU / ARTrack

Apache License 2.0
228 stars 33 forks source link

this time i skip #36

Closed LY-1 closed 5 months ago

LY-1 commented 8 months ago

作者你好,我在二阶段的序列训练时,打印出很多的this time i skip,请问是正常的吗?

ARTrackV2 commented 8 months ago

这是因为我代码可能还存在一些问题,我相信这是因为你调整了训练时的bs,这来自于我dataloader一个未解决的bug,即我可能会采样到帧数少于设定帧数的视频,然后会产生一些问题,这个问题我没有解决,因此我在actor\artrack_seq.py(485行)对视频帧做了检查,包括bs数量必须为8(或者4您可以检查对应的代码),以及帧数一致性做了筛查,如果未满足这个条件,我就会跳过,在trainer\ltr_seq_trainer.py中(84行)你可以找到对应的来源。这通常会出现在trackingnet和lasot数据集中,我猜测是因为它们存在一些完全被遮挡的物体,而这些物体是不可追踪的,但是数据处理流程没有对他们进行操作而是drop了,在采样单帧时,drop是没有问题的,但在多帧时就会导致帧数不一致。

LY-1 commented 8 months ago

是的,因为显存的问题(我只有一张3090),我将bs调整了。如果我只是想在got-10k数据集上进行训练的话,有什么办法可以让代码正常运行吗?比如如何调整bs和DATA.SEARCH.NUMBER

ARTrackV2 commented 8 months ago

你可以将trainer\ltr_seq_trainer.py中(84行)中将!=8改成你的bs即可,值得注意的是,在序列训练中,改变bs并不会减少显存占用,你可以通过改变experiment/artrack_seq/artrack_seq_256_got.yaml中Search的NUMBER来调整显存,而bs依然选择8即可。

LY-1 commented 8 months ago

非常感谢,我按照你所说的进行调整,代码可以正常运行。但是我在训练过程中又遇到了另外一个问题,每当训练到第三个epoch时,会出现下图的问题。我猜测应该是列表转ndarray时,列表的项中每个元素的shape不同导致。不知您是否有过相同或者类似的问题呢,又是如何解决的? image

ARTrackV2 commented 8 months ago

我似乎没碰到过这个问题,这很奇怪啊,可能你只能自己试试了,或者你可以定位到这个时候输出的视频和对应的search images,但是这样debug时间可能很长。您可以每个epoch都保留对应的checkpoints,因为代码提供了良好的resume机制,您可以接着之前的epoch训练,然后在观察是否有同样的问题发生。

LY-1 commented 8 months ago

我看了一下got10k的数据集,发现一个序列中的图片可能存在尺寸不同的情况,比如GOT-10k_Train_007947中00000192.jpg及之后的图片与之前的图片尺寸是不一样的。所以在sequence_sampler.py中np.array(search_frames)报了上面的错误,请问是我下载的got10k数据集有问题吗?

ARTrackV2 commented 8 months ago

这个我不太确定,如果您确定是数据集的问题,您可以直接删除掉那部分数据,我们的代码应该不会有报错

MrtXue commented 7 months ago

解决了吗,我也遇到了类似的问题

LY-1 commented 7 months ago

解决了吗,我也遇到了类似的问题 对于batch中图像大小不同,我是先对batch中的图像判断一下size是否相等,不相等的话重新采样

Barryalana commented 5 months ago

非常感谢,我按照你所说的进行调整,代码可以正常运行。但是我在训练过程中又遇到了另外一个问题,每当训练到第三个epoch时,会出现下图的问题。我猜测应该是列表转ndarray时,列表的项中每个元素的shape不同导致。不知您是否有过相同或者类似的问题呢,又是如何解决的? image

你好我也遇到了同样的问题,请问你是怎么解决的能具体告知一下吗?非常感谢 @LY-1

LY-1 commented 5 months ago

非常感谢,我按照你所说的进行调整,代码可以正常运行。但是我在训练过程中又遇到了另外一个问题,每当训练到第三个epoch时,会出现下图的问题。我猜测应该是列表转ndarray时,列表的项中每个元素的shape不同导致。不知您是否有过相同或者类似的问题呢,又是如何解决的? image

你好我也遇到了同样的问题,请问你是怎么解决的能具体告知一下吗?非常感谢 @LY-1

你可以修改lib.train.data.sequence_sampler.SequenceSampler.getitem方法,Got10k数据集中存在同一个序列图像大小不一样的情况,因此'search_images': np.array(search_frames)会报错。你可以在这之前对search_frames列表中的图像尺寸是否相同进行确认,如果不相同的话重新采样

AlexDotHam commented 5 months ago

非常感谢,我按照你所说的进行调整,代码可以正常运行。但是我在训练过程中又遇到了另外一个问题,每当训练到第三个epoch时,会出现下图的问题。我猜测应该是列表转ndarray时,列表的项中每个元素的shape不同导致。不知您是否有过相同或者类似的问题呢,又是如何解决的? image

你好我也遇到了同样的问题,请问你是怎么解决的能具体告知一下吗?非常感谢 @LY-1

你可以修改lib.train.data.sequence_sampler.SequenceSampler.getitem方法,Got10k数据集中存在同一个序列图像大小不一样的情况,因此'search_images': np.array(search_frames)会报错。你可以在这之前对search_frames列表中的图像尺寸是否相同进行确认,如果不相同的话重新采样

如果您有时间,您可以提一个PR吗,就修改那个文件即可,我会通过,感谢您的支持

MrtXue commented 5 months ago

非常感谢,我按照你所说的进行调整,代码可以正常运行。但是我在训练过程中又遇到了另外一个问题,每当训练到第三个epoch时,会出现下图的问题。我猜测应该是列表转ndarray时,列表的项中每个元素的shape不同导致。不知您是否有过相同或者类似的问题呢,又是如何解决的? image

你好我也遇到了同样的问题,请问你是怎么解决的能具体告知一下吗?非常感谢 @LY-1

我将numpy的版本从1.24降到1.23,训练的时候就没再报错了

AlexDotHam commented 5 months ago

非常感谢,我按照你所说的进行调整,代码可以正常运行。但是我在训练过程中又遇到了另外一个问题,每当训练到第三个epoch时,会出现下图的问题。我猜测应该是列表转ndarray时,列表的项中每个元素的shape不同导致。不知您是否有过相同或者类似的问题呢,又是如何解决的? image

你好我也遇到了同样的问题,请问你是怎么解决的能具体告知一下吗?非常感谢 @LY-1

我将numpy的版本从1.24降到1.23,训练的时候就没再报错了

感谢您的解答,这可能是我从来没遇到这个问题的原因,我会在README中标注这一内容和您的贡献。

Barryalana commented 5 months ago

非常感谢,我按照你所说的进行调整,代码可以正常运行。但是我在训练过程中又遇到了另外一个问题,每当训练到第三个epoch时,会出现下图的问题。我猜测应该是列表转ndarray时,列表的项中每个元素的shape不同导致。不知您是否有过相同或者类似的问题呢,又是如何解决的? image

你好我也遇到了同样的问题,请问你是怎么解决的能具体告知一下吗?非常感谢 @LY-1

你可以修改lib.train.data.sequence_sampler.SequenceSampler.getitem方法,Got10k数据集中存在同一个序列图像大小不一样的情况,因此'search_images': np.array(search_frames)会报错。你可以在这之前对search_frames列表中的图像尺寸是否相同进行确认,如果不相同的话重新采样

好的谢谢,我已经试过了,很有效,十分感谢🙏