> 文章列表 > gaitedge细节①数据集

gaitedge细节①数据集

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
(待续)