def spiral_tramsform(transform_fp, template_fp, ds_factors, seq_length, dilation): if not osp.exists(transform_fp): print('Generating transform matrices...') mesh = Mesh(filename=template_fp) # ds_factors = [3.5, 3.5, 3.5, 3.5] _, A, D, U, F, V = mesh_sampling.generate_transform_matrices( mesh, ds_factors) tmp = { 'vertices': V, 'face': F, 'adj': A, 'down_transform': D, 'up_transform': U } with open(transform_fp, 'wb') as fp: pickle.dump(tmp, fp) print('Done!') print('Transform matrices are saved in \'{}\''.format(transform_fp)) else: with open(transform_fp, 'rb') as f: tmp = pickle.load(f, encoding='latin1') spiral_indices_list = [ utils.preprocess_spiral(tmp['face'][idx], seq_length[idx], tmp['vertices'][idx], dilation[idx]) #.to(device) for idx in range(len(tmp['face']) - 1) ] down_transform_list = [ utils.to_sparse(down_transform) #.to(device) for down_transform in tmp['down_transform'] ] up_transform_list = [ utils.to_sparse(up_transform) #.to(device) for up_transform in tmp['up_transform'] ] return spiral_indices_list, down_transform_list, up_transform_list, tmp
cudnn.deterministic = True template_fp = osp.join(args.data_fp, 'template', 'template.obj') # generate/load transform matrices transform_fp = osp.join(args.data_fp, 'transform.pkl') if not osp.exists(transform_fp): raise (Exception('transforms should already be present in ' + transform_fp)) else: with open(transform_fp, 'rb') as f: tmp = pickle.load(f, encoding='latin1') spiral_indices_list = [ utils.preprocess_spiral(tmp['face'][idx], args.seq_length[idx], tmp['vertices'][idx], args.dilation[idx]).to(device) for idx in range(len(tmp['face']) - 1) ] del tmp['face'] del tmp['vertices'] down_transform_list = [ utils.to_sparse(down_transform).to(device) for down_transform in tmp['down_transform'] ] del tmp['down_transform'] up_transform_list = [ utils.to_sparse(up_transform).to(device) for up_transform in tmp['up_transform'] ] del tmp