open-mmlab / OpenUnReID

PyTorch open-source toolbox for unsupervised or domain adaptive object re-ID.
Apache License 2.0
396 stars 67 forks source link

关于ScPL的问题 #2

Closed zengwb-lx closed 4 years ago

zengwb-lx commented 4 years ago

你好, 在cross-domain上非常好的项目 但是我在使用中发现文档很少,很难做二次开发, 下载了开源的ScPL模型按Get Started流程测试时报UserWarning: missing keys in state_dict UserWarning: unexpected keys in checkpoint 得到的结果是: Mean AP: 2.2% CMC Scores: top-1 6.7% top-5 14.9% top-10 20.1% Testing time: 0:00:35.245021 然后我自己用market1501':和', 'dukemtmcreid训练35epoch得到高于你发布的精度 Mean AP: 91.3% CMC Scores: top-1 95.6% top-5 98.9% top-10 99.5% Validating time: 0:00:05.402543 请问什么时候能做下更新.

zengwb-lx commented 4 years ago

我训练明明用了两个训练集,但是每个epoch都是只=> Loaded trainval from Market1501 没有看到load Duke 还有想请问下跨域跟踪落地效果怎么样? 要落地的话能不能给些建议应该做哪方面的优化工作呢. 非常感谢

yxgeee commented 4 years ago

你好, 在cross-domain上非常好的项目 但是我在使用中发现文档很少,很难做二次开发, 下载了开源的ScPL模型按Get Started流程测试时报UserWarning: missing keys in state_dict UserWarning: unexpected keys in checkpoint 得到的结果是: Mean AP: 2.2% CMC Scores: top-1 6.7% top-5 14.9% top-10 20.1% Testing time: 0:00:35.245021 然后我自己用market1501':和', 'dukemtmcreid训练35epoch得到高于你发布的精度 Mean AP: 91.3% CMC Scores: top-1 95.6% top-5 98.9% top-10 99.5% Validating time: 0:00:05.402543 请问什么时候能做下更新.

你好,

  1. 谢谢提醒,相关文档我会逐步更新
  2. 麻烦看一下“missing keys”和“unexpected keys”是否只是classifier,因为classifier在inference的时候是不需要的,所以不需要load进去。如果不只是classifier的话,就说明在load model的时候有问题,模型没有load进去,但是我这边测试的时候没有发生过这个问题,所以还需要你提供更多的log方便我定位问题。
  3. 测试结果低的话原因主要有两个,第一,就是上面说的load model的问题,麻烦检查一下;第二,麻烦检测一下config文件和model是否对应,比如说,你测试的是duke->market的model,那么config文件中TEST.datasets是否为['market1501']。
  4. 训练过程中的validate是在val_set上进行的,我报的结果是训练结束后选择val_set上性能最好的模型(model_best.pth)在test_set上的结果,该测试会在训练结束后自动进行。
yxgeee commented 4 years ago

我训练明明用了两个训练集,但是每个epoch都是只=> Loaded trainval from Market1501 没有看到load Duke 还有想请问下跨域跟踪落地效果怎么样? 要落地的话能不能给些建议应该做哪方面的优化工作呢. 非常感谢

你好, 按照你说的情况,应该做的是duke->market的训练,由于duke是source dataset,有真实标签,所以只需要在程序刚开始时load一次即可,你可以检查log文件的一开始;由于market是target dataset,无真实标签,每个epoch之前都需要重新进行伪标签生成,所以你会在每个epoch前都看到重复读取market的log。

yxgeee commented 4 years ago

你好, 如果我没有理解错的话,你说的“落地应用”指的是在产品中进行部署?那么应该需要考虑的优化方向是训练时的效率问题,比如说,一般产品上使用的数据集都会较为large-scale,那么训练中的聚类等步骤是否会出现效率低、速度慢的问题,需要去考察一下。

zengwb-lx commented 4 years ago

你好,非常感谢你认真的回答,以上问题我仔细看了后解决了,感觉你很nice 我想请教的是ReID在实例应用场景中的泛化能力,我用部分实际场景数据用来训练,这样train出来的模型实际robust能力怎么样,或者说该怎么去最大化提升它的泛化能力? (抱歉这个问题不方便回答也没关系,因为ReID在工业界实际落地也少之又难)

yxgeee commented 4 years ago

你好,这个问题可能得你自己试一下才知道哈,因为我没有用工业界的数据集训练过。学术界的数据集也采自实际场景,只不过目前用来作为所谓“无监督”的目标域数据集实际上已经被人为sample过了,不能完全反映真实应用场景。今年Visda的比赛也针对这个问题设置了更符合真实场景下的目标域数据集,在我的实验中,目前我们提出的方法仍然是有效的。