复测Stark目标跟踪算法时采用github提供的预训练模型STARKST_ep0050.pth.tar跟踪报错。
执行语句:python tracking/test.py stark_st baseline --dataset lasot --threads 0
报错如下:
将Stark-main/lib/test/tracker/stark_st.py文件中模型加载语句作如下更改:
network.load_state_dict(torch.load(self.params.checkpoint, map_location='cpu')['net'], strict=False)
将strict由True更改为False后,代码可以运行,但是跟踪效果异常,跟踪框变得很大。感觉模型虽然加载成功了,但是加载的模型参数和程序建立的模型对不上。
换个思路,自己训练模型,为节省时间,ECHO=2,数据集采用lasot中truck图片(7500张),用训练好的模型跟踪测试,跟踪开始未见异常,但随着目标表观特征逐渐变化,跟踪效果越来越差,最后跟踪丢失。效果还不如相关跟踪或者KCF算法。
第1帧:
程序运行环境:ubuntu18.04
cudatoolkit 11.0.221
python 3.7.0
pytorch 1.7.0
torchvision 0.8.1
问题:如何正确加载github发布的预训练模型?
应该是预训练模型的参数和你设置的参数不匹配造成的,好好检查一下;理论上来说,基本功能是可以的。
看报错显示在加载预训练模型"STARKST_ep0050.pth.tar"时出现了意外的键错误。通常发生在模型的预训练权重与程序中定义的模型结构不匹配时。
试下:加载模型的strict参数从True更改为False
仅此报错而言:检查你的模型结构,权重名称,部分层等是否发生变化或者被误删
python 目标跟踪算法_目标跟踪入门——目标跟踪算法综述
可以参考下
https://blog.csdn.net/weixin_39926678/article/details/110989424