def transform(image: tf.Tensor, transforms) -> tf.Tensor: """Prepares input data for `image_ops.transform`.""" original_ndims = tf.rank(image) transforms = tf.convert_to_tensor(transforms, dtype=tf.float32) if transforms.shape.rank == 1: transforms = transforms[None] image = to_4d(image) image = image_ops.transform( images=image, transforms=transforms, interpolation='nearest') return from_4d(image, original_ndims)
def rotate(inputs): """rotate image.""" inputs_shape = tf.shape(inputs) batch_size = inputs_shape[0] img_hd = tf.cast(inputs_shape[1], tf.float32) img_wd = tf.cast(inputs_shape[2], tf.float32) min_angle = LOWER * 2. * np.pi max_angle = UPPER * 2. * np.pi angles = tf.random.uniform( shape=[batch_size], minval=min_angle, maxval=max_angle) return image_preprocessing.transform( inputs, image_preprocessing.get_rotation_matrix(angles, img_hd, img_wd))
def zoom(inputs): """zoom image.""" inputs_shape = tf.shape(inputs) batch_size = inputs_shape[0] img_hd = tf.cast(inputs_shape[1], tf.float32) img_wd = tf.cast(inputs_shape[2], tf.float32) height_zoom = tf.random.uniform( shape=[batch_size, 1], minval=1. + LOWER, maxval=1. + UPPER) width_zoom = tf.random.uniform( shape=[batch_size, 1], minval=1. + LOWER, maxval=1. + UPPER) zooms = tf.cast( tf.concat([width_zoom, height_zoom], axis=1), dtype=tf.float32) return image_preprocessing.transform( inputs, image_preprocessing.get_zoom_matrix(zooms, img_hd, img_wd))