researchmm / TracKit

[ECCV'20] Ocean: Object-aware Anchor-Free Tracking
MIT License
613 stars 97 forks source link

about validation #17

Closed difhnp closed 4 years ago

difhnp commented 4 years ago

您好, 向您请教一个小问题. 为什么训练模型时不做验证, 这与机器学习的一般做法很不一样? 不会担心过拟合吗? 我看到您在30个epoch之后开始 test, 有没有可能在第30个 epoch 之前就出现过拟合呢? 我发现其它 Siamese tracker 的代码中也存在这样的情况, 作为新人我不太理解这种做法.

JudasDie commented 4 years ago

您好, 向您请教一个小问题. 为什么训练模型时不做验证, 这与机器学习的一般做法很不一样? 不会担心过拟合吗? 我看到您在30个epoch之后开始 test, 有没有可能在第30个 epoch 之前就出现过拟合呢? 我发现其它 Siamese tracker 的代码中也存在这样的情况, 作为新人我不太理解这种做法.

你好,其实“epoch test”就可以看作为validation,如果你看一些VOS代码,他们也会在训练时候测试DAVIS val数据集性能。跟踪通常会把这个过程放到所有训练结束后,因为在训练中val一个数据集需要很长时间,训练完后用并行快很多。另外,跟踪的loss不能直接反映“过拟合”,因为测试是时序过程,依赖于上一帧,但是训练只是单个的pair对。通常我们只用loss指导判断网络是否正常在训练,比如loss如果降不下去说明网络设计或者训练参数有问题。

difhnp commented 4 years ago

在 epoch test 阶段使用了一套默认的 tracker 参数,如果我没理解错的话,这套参数应该是接下来的 tuning 阶段得到的。如您直播时提到的,模型对参数往往是很敏感的。比如我做了一些改进重新训练,那还用这套参数可能就不合适了。 那您在得到这套参数之前是怎么设置这些参数的?是不是要把 penalty_k, window_influence 这些都置零,单纯只看模型本身的性能。

JudasDie commented 4 years ago

在 epoch test 阶段使用了一套默认的 tracker 参数,如果我没理解错的话,这套参数应该是接下来的 tuning 阶段得到的。如您直播时提到的,模型对参数往往是很敏感的。比如我做了一些改进重新训练,那还用这套参数可能就不合适了。 那您在得到这套参数之前是怎么设置这些参数的?是不是要把 penalty_k, window_influence 这些都置零,单纯只看模型本身的性能。

不是设置为0,而是用之前最好模型的参数,这样如果重新训练的可以超过之前最好模型,那这个一定是work的,调参后只会结果更高。

Jee-King commented 3 years ago

@JudasDie @difhnp 请问这个参数是怎么确定的?