def _get_sequence(self, verbose=False):
trajectory_x, trajectory_y = self._get_random_trajectory()
# Minibatch data
if self.random_background:
out_sequence = self._rng.rand(self.seq_length + 1,
self.frame_size[0],
self.frame_size[1], 1)
else:
out_sequence = np.zeros((self.seq_length + 1,
self.frame_size[0],
self.frame_size[1], 1),
dtype=np.float32)
for digit_id in range(self.num_digits):
# Get random digit from dataset
curr_data_idx = self._rng.randint(0, self._MNIST_data.shape[0] - 1)
digit_image = self._MNIST_data[curr_data_idx]
zoom_factor = int(self.digits_sizes[digit_id] / 28)
if zoom_factor != 1:
digit_image = zoom(digit_image, zoom_factor)
digit_size = digit_image.shape[0]
# Generate video
digit_image = np.expand_dims(digit_image, -1)
# Iterate over seq_length + 1 to account for the extra frame
# that is returned as a target
for i, (top, left) in enumerate(zip(trajectory_y[:, digit_id],
trajectory_x[:, digit_id])):
bottom = top + digit_size
right = left + digit_size
out_sequence[i, top:bottom, left:right, :] = np.maximum(
out_sequence[i, top:bottom, left:right, :], digit_image)
return out_sequence
评论列表
文章目录