gaitedge细节①数据集
跑完整实验时发现phase1_rec的测试集有些问题,主要还是有分布式训练遗留下来的坑,测试集用的InferenceSampler是把batch切分成一个一个的喂给不同的gpu,导致原本的测试batchsize只能用于labs不能用于seqs
试着照ChatGPT给的方法把它修改成了如下情况依然于事无补
class InferenceSampler(tordata.sampler.Sampler):def __init__(self, dataset, batch_size):self.dataset = datasetself.batch_size = batch_sizeself.size = len(dataset)indices = list(range(self.size))########### 修改# world_size = dist.get_world_size()# rank = dist.get_rank()## if batch_size % world_size != 0:# raise ValueError("World size ({}) is not divisible by batch_size ({})".format(# world_size, batch_size))##########################if batch_size != 1:complement_size = math.ceil(self.size / batch_size) * \\batch_sizeindices += indices[:(complement_size - self.size)]self.size = complement_sizebatch_size_per_rank = self.batch_size # 修改# batch_size_per_rank = int(self.batch_size / world_size)indx_batch_per_rank = []for i in range(int(self.size / batch_size_per_rank)):indx_batch_per_rank.append(indices[i*batch_size_per_rank:(i+1)*batch_size_per_rank])# self.idx_batch_this_rank = indx_batch_per_rank[rank::world_size] self.idx_batch_this_rank = indx_batch_per_rank # 修改def __iter__(self):yield from self.idx_batch_this_rankdef __len__(self):return len(self.dataset)
不过其实yaml里已经写了这样的话,所以能跑就行吧
Note : *** the batch_size should be equal to the gpus number at the test phase!!! ***
但是标签可以认batchsize,seqs认不了还是很神秘,所以还是从头捋一遍数据集采样吧
casia-b数据集基本情况
124大类(ID),11小类(视角),10中类(外观差异类型)
每小类类内样本量不定,大体上大于30张(毕竟训练时是有设定每类取30张的→frames_num_fixed: 30)(其实每个大类大体上总共有110张样本,但也有的小于这个数,比如079只有108张,088只有101张,109只有106张)
训练集:前75大类
测试集:后50大类
DataSet
训练集
输入data_cfg
{'dataset_name': 'CASIA-B',
'dataset_root': '../datasets/CASIA-B-pkl', 'num_workers': 1,
'dataset_partition': '../datasets/CASIA-B/CASIA-B.json',
'remove_no_gallery': False,
'cache': False,
'test_dataset_name': 'CASIA-B',
'data_in_use': [True, False, False, False]}
__dataset_parser
遍历所有,得到8107个训练样本的路径和类别计入self.seqs_info
然后再分别填入label_list,types_list,views_list(感觉这段代码写的好像有点冗余)
测试集
5485个测试样本
sampler
训练集-三元
测试集-InferenceSampler
——————————————————————
突然发现源代码这里好像是直接用的casia-b-star,之前还没搞到数据集时我改成casia-b了,所以下面再重新看一遍casia-b-star
(待续)