in empose/data/data.py [0:0]
def __init__(self, seq_ids, seq_lengths, poses, shapes, trans, joints_gt, offset_t=None, offset_r=None):
"""
Initializer.
:param seq_ids: A list of IDs.
:param seq_lengths: The actual sequence length for each batch entry.
:param poses: A tensor of shape (N, F, (C.N_JOINTS + 1)*3), i.e. SMPL body pose parameters in angle-axis format
including the root orientation as the first three values.
:param shapes: A tensor of shape (N, C.N_SHAPE_PARAMS) specifying the SMPL shape parameters.
:param trans: A tensor of shape (N, F, 3) specifying the root translation.
:param joints_gt: A tensor of shape (N, F, C.N_JOINTS*3) specifying the SMPL joint positions corresponding to
the given `poses`.
:param offset_t: Translational offsets per marker as a tensor of shape (1, N_MARKERS, 3) or (N, ...).
:param offset_r: Rotational offsets per marker as a tensor of shape (1, N_MARKERS, 3, 3) or (N, ...).
"""
self.ids = seq_ids
self.seq_lengths = seq_lengths
self.poses = poses # (N, F, (C.N_JOINTS + 1)*3)
self.shapes = shapes # (N, C.N_SHAPE_PARAMS)
self.trans = trans # (N, F, 3)
self.joints_gt = joints_gt # (N, F, C.N_JOINTS*3)
# These are the offsets that we assume are given.
self.offset_t = offset_t
self.offset_r = offset_r
# The following members are quantities that are set externally. Typically they are computed by some transforms
# when pre-processing a batch.
self.joints_hat = None # (N, F, C.N_JOINTS*3)
self.vertices = None # (N, F, V*3)
self.marker_pos_real = None # (N, F, N_MARKERS*3)
self.marker_ori_real = None # (N, F, N_MARKERS*9)
self.marker_normal_real = None # (N, F, N_MARKERS*3)
self.marker_pos_synth = None # (N, F, N_MARKERS*3)
self.marker_ori_synth = None # (N, F, N_MARKERS*9)
self.marker_normal_synth = None # (N, F, N_MARKERS*3)
self.marker_pos_vertex = None # (N, F, N_MARKERS*3), marker position without offset, i.e. on the mesh.
self.marker_ori_vertex = None # (N, F, N_MARKERS*9), marker orientation without offset.
self.marker_masks = None # (N, F, N_MARKERS) True if available
# If data augmentation is used, the perturbed markers are stored here.
self.marker_pos_noisy = None
self.marker_ori_noisy = None
self.marker_normal_noisy = None
# Some data augmentation might introduce new offsets, which we can store here.
self.offset_t_augmented = None
self.offset_r_augmented = None