Exemplo n.º 1
0
 def __getitem__(self, i):
     index = self.IDlist[i]
     mesh_id = index // 100
     view_id = index % 100
     if mesh_id >= 20000:
         mesh_id -= 20000
         category = 'cat'
     else:
         category = 'horse'
     filename = self.file_path.format(category, mesh_id, view_id)
     mat = sio.loadmat(
         filename,
         variable_names=['points3d', 'correspondence', 'rotation'])
     points3d = mat['points3d']
     corres = mat['correspondence'].reshape(-1).astype(np.int64)
     corres = torch.from_numpy(corres)
     num_points = points3d.shape[0]
     points3d = torch.Tensor(points3d)
     R = mat['rotation'].reshape(3, 3)
     ori_pos = torch.as_tensor(R.T.dot(points3d.numpy().T).T,
                               dtype=torch.float)
     gt_feats = self.template_feats[corres, :]
     gt_points = self.template_points[corres, :]
     y = np.concatenate([gt_feats, gt_points], axis=-1)
     y = torch.Tensor(y)
     data = Data(pos=points3d, y=y, ori_pos=ori_pos)
     data = self.transform(data) if self.transform is not None else data
     return data
Exemplo n.º 2
0
 def voxel_sample(self, pos, corres):
     fake_data = Data(
         pos=torch.Tensor(pos),
         y=corres,
     )
     data = self.voxel_sampler(fake_data)
     return data.pos, data.y
  def __getitem__(self, i):
    index = self.IDlist[i]
    mesh_id = index // self.num_views
    view_id = index % self.num_views
    filename = self.file_path.format(mesh_id, view_id)
    mat = sio.loadmat(filename, variable_names=['points3d', 'correspondences',
                                                'rotations'])
    points3d = mat['points3d']
    corres = mat['correspondences'].reshape(-1).astype(np.int64)
    corres = torch.from_numpy(corres)
    num_points = points3d.shape[0]
    points3d = torch.Tensor(points3d)
    R = mat['rotations'].reshape(3, 3)
    ori_pos = torch.as_tensor(R.T.dot(points3d.numpy().T).T, dtype=torch.float)
    if not self.cls:
      gt_feats = self.template_feats[corres, :]
      gt_points = self.template_points[corres, :]
      y = np.concatenate([gt_feats, gt_points], axis=-1)
      y = torch.Tensor(y)
    else:
      y = torch.as_tensor(corres, dtype=torch.long)

    data = Data(pos=points3d, y=y, ori_pos=ori_pos)
    data = self.transform(data) if self.transform is not None else data

    return data
 def __getitem__(self, i):
   mesh_id = self.IDlist[i]
   mesh = o3d.io.read_triangle_mesh(self.PLY.format(mesh_id))
   points3d = torch.as_tensor(np.stack([x, y, z], -1), dtype=torch.float)
   corres = np.arange(points3d.shape[0]).astype(np.int32)
   mesh = o3d.io.read_triangle_mesh(self.PLY.format(mesh_id))
   points3d = np.array(mesh.vertices)
   corres = np.arange(points3d.shape[0])
   points3d = torch.as_tensor(points3d, dtype=torch.float)
   faces = torch.as_tensor(mesh.triangles, dtype=torch.long)
   y = torch.as_tensor(corres, dtype=torch.long)
   data = Data(pos=points3d, faces=faces, y=y)
   return data