MIV-XJTU / ARTrack

Apache License 2.0
230 stars 33 forks source link

关于收敛后各项损失的值 #82

Closed yuyangpoi closed 2 months ago

yuyangpoi commented 2 months ago

请问一下模型收敛后各项损失的值大概是多少?

另外,ARTrackV2中每个损失的权重系数是多少?

谢谢。

AlexDotHam commented 2 months ago

在checkpoints的那个谷歌网盘里面应该有对应的log文件,各个损失的大小随模型大小以及序列长度不一。 针对ARTrackV1-base256的二阶段大致为CE在2.5左右, GIOU在0.13左右。 针对ARTrackV2-base256的二阶段大致为CE在2.6左右,GIOU在0.15左右,MSE loss在0.17左右,L1在0.03左右 ARTrackV2中一阶段权重损失为CE 2 GIOU 5 L1 Loss 1 二阶段 前十个epoch CE 2 GIOU 5 MSE loss 0.3 L1 loss 1 10-30个epoch CE 0 GIOU 5 MSE loss 0.03 L! loss 0.1 30-60个epoch GIOU 5

yuyangpoi commented 2 months ago

非常感谢!

yuyangpoi commented 2 months ago

请问一下mseloss和l1loss在ARTrackv2中起到的作用大吗?

AlexDotHam commented 2 months ago

从我个人的角度来看,多个模板的训练本身对精度的提升很大。 例如说Mixformer和STARK都使用了两个模板训练,这样训练结束后,即使不进行模板更新,模型的性能本身也有提升。 例如ODTrack使用了三个模板进行更新,其精度收益实际上来自于多个模板训练,导致的模型鲁棒性快速提高,这对单目标追踪至关重要。 至于使用何种更新模式,例如Mixformer和STARK采用的设定固定的阈值和频度,实际上是对测试集的过拟合,因为是根据测试性能反推参数,这样设置精度是会有提升的。 ODTrack的更新模式我认为是最合理的,三个模板保证了模板的实时性同时他的更新不会让错误的外观长时间保留。 我们的更新模式在我的实验下确实有一定的效果,但他的提升不大,对于GOT-10k有1.0个点左右(相比不更新外观,直接使用两个模板)但对于LaSOT、TrackingNet提升不显著(LaSOT应该有0.4, TrackingNet有0.3均在SUC上),但是他其实缺乏了调参的机会,其实变相的降低了模型的上限。 综上,我觉得两个loss起到了一定作用(至少帮助我水了一篇文章)。但我认为如果您想刷点,这个方法有些过时,我建议使用ODTrack的思路,增加模板数,然后使用ODTrack的模板更新方法。

AlexDotHam commented 2 months ago

如果您在复现,一个可以尝试的方向是:将输出使用的argmax 首先加一个偏差,如果bins为400加1/800 如果是600 加1/1200,其次是二阶段推理时,使用argmax和siou计算出来的xyxy的均值。即(argmax(xyxy) + softmax(xyxy)) / 2, softmax指的是计算siou时使用的那个概率,这样性能会有提升。

AlexDotHam commented 2 months ago

同时mse loss必须重建外观特征,如果仅重建外观,效果和mixformer调参差不多。

yuyangpoi commented 2 months ago

“多个模板的训练本身对精度的提升很大“这件事情对我来说很新颖,这样的做法相当于是一种augmentation? 我会去尝试一下,非常感谢你的建议!

AlexDotHam commented 2 months ago

你可以理解为,本来模板的特征空间是一个面,现在多了一个模板,在训练中多少会有一些偏差,那么他的特征就变成了一个体,我们在做的事情是在search的面上找到一个最优切平面,一个体去切面积会大一些。/ 您可以理解为一个augmentation,您也可以在OSTrack上快速实验证明这一个想法,这个做法很简单,我当时是在OSTrack和Mixformer上都有相似的结论。