最近,尝试了复现GaitSet 开源代码
gaitset 论文:https://arxiv.org/abs/1811.06186
gaitset代码:https://github.com/AbnerHqC/GaitSet/blob/master/model/utils/data_loader.py
在进行测试时,test出现错误
尝试了博主:https://blog.csdn.net/qq_21464351/article/details/109546421
推荐的方法,发现依旧会报错。
然后在data_loader.py 文件中,插入如下代码,查看train_list 和 test_list的内容,可能是由于自己训练时batch_size选择的大小 没有源码的batch_size 大,pid_num=73设置太大,导致train_list中有数据,而test_list中为空,所以在test.py中,当(test=m.transform('test', opt.batch_size))时,test为空,而后续计算数据为空。可以看一下train_list的范围,然后适当在config.py中缩小pid_num。运行test查看,test中是否有数据了之后。 进行训练,训练后 再进行test,此时test 会运行成功,出现准确率。
pid_fname = osp.join('partition', '{}_{}_{}.npy'.format(
dataset, pid_num, pid_shuffle))
if not osp.exists(pid_fname):
pid_list = sorted(list(set(label)))
if pid_shuffle:
np.random.shuffle(pid_list)
pid_list = [pid_list[0:pid_num], pid_list[pid_num:]]
os.makedirs('partition', exist_ok=True)
np.save(pid_fname, pid_list)
pid_list = np.load(pid_fname)
train_list = pid_list[0]
test_list = pid_list[1]
print('############')
print('train_list')
' print('test_list')
print('############')
train_source = DataSet(
[seq_dir[i] for i, l in enumerate(label) if l in train_list],
[label[i] for i, l in enumerate(label) if l in train_list],
[seq_type[i] for i, l in enumerate(label) if l in train_list],
[view[i] for i, l in enumerate(label)
if l in train_list],
cache, resolution)