Python tensorflow.compat.v1.clip_by_value() Examples
The following are 30
code examples of tensorflow.compat.v1.clip_by_value().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
tensorflow.compat.v1
, or try the search function
.
Example #1
Source File: activation.py From super-resolution-videos with The Unlicense | 6 votes |
def ramp(x=None, v_min=0, v_max=1, name=None): """The ramp activation function. Parameters ---------- x : a tensor input input(s) v_min : float if input(s) smaller than v_min, change inputs to v_min v_max : float if input(s) greater than v_max, change inputs to v_max name : a string or None An optional name to attach to this activation function. Returns -------- A `Tensor` with the same type as `x`. """ return tf.clip_by_value(x, clip_value_min=v_min, clip_value_max=v_max, name=name)
Example #2
Source File: utils.py From interval-bound-propagation with Apache License 2.0 | 6 votes |
def _get_projection(p): """Returns a projection function.""" if p == np.inf: def _projection(perturbation, epsilon, input_image, image_bounds): clipped_perturbation = tf.clip_by_value(perturbation, -epsilon, epsilon) new_image = tf.clip_by_value(input_image + clipped_perturbation, image_bounds[0], image_bounds[1]) return new_image - input_image return _projection elif p == 2: def _projection(perturbation, epsilon, input_image, image_bounds): axes = list(range(1, len(perturbation.get_shape()))) clipped_perturbation = tf.clip_by_norm(perturbation, epsilon, axes=axes) new_image = tf.clip_by_value(input_image + clipped_perturbation, image_bounds[0], image_bounds[1]) return new_image - input_image return _projection else: raise ValueError('p must be np.inf or 2.')
Example #3
Source File: attention.py From language with Apache License 2.0 | 6 votes |
def safe_cumprod(x, *args, **kwargs): """Computes cumprod of x in logspace using cumsum to avoid underflow. The cumprod function and its gradient can result in numerical instabilities when its argument has very small and/or zero values. As long as the argument is all positive, we can instead compute the cumulative product as exp(cumsum(log(x))). This function can be called identically to tf.cumprod. Args: x: Tensor to take the cumulative product of. *args: Passed on to cumsum; these are identical to those in cumprod. **kwargs: Passed on to cumsum; these are identical to those in cumprod. Returns: Cumulative product of x. """ with tf.name_scope(None, "SafeCumprod", [x]): x = tf.convert_to_tensor(x, name="x") tiny = np.finfo(x.dtype.as_numpy_dtype).tiny return tf.exp( tf.cumsum(tf.log(tf.clip_by_value(x, tiny, 1)), *args, **kwargs))
Example #4
Source File: ppo.py From reaver with MIT License | 6 votes |
def loss_fn(self): adv = tf.placeholder(tf.float32, [None], name="advantages") returns = tf.placeholder(tf.float32, [None], name="returns") logli_old = tf.placeholder(tf.float32, [None], name="logli_old") value_old = tf.placeholder(tf.float32, [None], name="value_old") ratio = tf.exp(self.policy.logli - logli_old) clipped_ratio = tf.clip_by_value(ratio, 1-self.clip_ratio, 1+self.clip_ratio) value_err = (self.value - returns)**2 if self.clip_value > 0.0: clipped_value = tf.clip_by_value(self.value, value_old-self.clip_value, value_old+self.clip_value) clipped_value_err = (clipped_value - returns)**2 value_err = tf.maximum(value_err, clipped_value_err) policy_loss = -tf.reduce_mean(tf.minimum(adv * ratio, adv * clipped_ratio)) value_loss = tf.reduce_mean(value_err) * self.value_coef entropy_loss = tf.reduce_mean(self.policy.entropy) * self.entropy_coef # we want to reduce policy and value errors, and maximize entropy # but since optimizer is minimizing the signs are opposite full_loss = policy_loss + value_loss - entropy_loss return full_loss, [policy_loss, value_loss, entropy_loss], [adv, returns, logli_old, value_old]
Example #5
Source File: dataset.py From mesh with Apache License 2.0 | 6 votes |
def ensure_dataset_eos(dataset, feature_keys=None): """Replaces the final token of features with EOS=1 if it is not PAD=0. Args: dataset: a tf.data.Dataset feature_keys: (optional) list of strings, the feature names to ensure end with EOS or padding. Defaults to all features. Returns: a tf.data.Dataset where all specified features end with PAD=0 or EOS=1. """ feature_keys = feature_keys or tf.data.get_output_shapes(dataset).keys() def _ensure_eos(k, v): if k not in feature_keys: return v return tf.concat([v[0:-1], tf.clip_by_value(v[-1:], 0, 1)], axis=0) return dataset.map( lambda ex: {k: _ensure_eos(k, v) for k, v in ex.items()}, num_parallel_calls=tf.data.experimental.AUTOTUNE)
Example #6
Source File: inception_resnet_v2.py From models with Apache License 2.0 | 6 votes |
def block35(net, scale=1.0, activation_fn=tf.nn.relu, scope=None, reuse=None): """Builds the 35x35 resnet block.""" with tf.variable_scope(scope, 'Block35', [net], reuse=reuse): with tf.variable_scope('Branch_0'): tower_conv = slim.conv2d(net, 32, 1, scope='Conv2d_1x1') with tf.variable_scope('Branch_1'): tower_conv1_0 = slim.conv2d(net, 32, 1, scope='Conv2d_0a_1x1') tower_conv1_1 = slim.conv2d(tower_conv1_0, 32, 3, scope='Conv2d_0b_3x3') with tf.variable_scope('Branch_2'): tower_conv2_0 = slim.conv2d(net, 32, 1, scope='Conv2d_0a_1x1') tower_conv2_1 = slim.conv2d(tower_conv2_0, 48, 3, scope='Conv2d_0b_3x3') tower_conv2_2 = slim.conv2d(tower_conv2_1, 64, 3, scope='Conv2d_0c_3x3') mixed = tf.concat(axis=3, values=[tower_conv, tower_conv1_1, tower_conv2_2]) up = slim.conv2d(mixed, net.get_shape()[3], 1, normalizer_fn=None, activation_fn=None, scope='Conv2d_1x1') scaled_up = up * scale if activation_fn == tf.nn.relu6: # Use clip_by_value to simulate bandpass activation. scaled_up = tf.clip_by_value(scaled_up, -6.0, 6.0) net += scaled_up if activation_fn: net = activation_fn(net) return net
Example #7
Source File: networks.py From magenta with Apache License 2.0 | 6 votes |
def _discriminator_alpha(block_id, progress): """Returns the block input parameter for discriminator network. The discriminator has N blocks with `block_id` = 1,2,...,N. Each block block_id accepts an - input(block_id) transformed from the real data and - the output of block block_id + 1, i.e. output(block_id + 1) The final input is a linear combination of them, i.e. alpha * input(block_id) + (1 - alpha) * output(block_id + 1) where alpha = _discriminator_alpha(block_id, progress). With a fixed block_id, alpha(block_id, progress) stays to be 1 when progress <= block_id - 1, then linear decays to 0 when block_id - 1 < progress <= block_id, and finally stays at 0 when progress > block_id. Args: block_id: An integer of generator block id. progress: A scalar float `Tensor` of training progress. Returns: A scalar float `Tensor` of block input parameter. """ return tf.clip_by_value(block_id - progress, 0.0, 1.0)
Example #8
Source File: data_aug_lib.py From mesh with Apache License 2.0 | 6 votes |
def _rand_noise(noise_mean, noise_dev, scale, shape): """Generate random noise given a particular scale and shape.""" noise_shape = [x // scale for x in shape] noise_shape = [1 if x == 0 else x for x in noise_shape] noise = tf.random.normal( shape=noise_shape, mean=noise_mean, stddev=noise_dev) noise = tf.clip_by_value( noise, noise_mean - 2.0 * noise_dev, noise_mean + 2.0 * noise_dev) if scale != 1: noise = tf.image.resize_images( noise, [shape[0], shape[1]]) noise = tf.transpose(noise, [0, 2, 1]) noise = tf.image.resize_images( noise, [shape[0], shape[2]]) noise = tf.transpose(noise, [0, 2, 1]) return noise
Example #9
Source File: inception_resnet_v2.py From models with Apache License 2.0 | 6 votes |
def block17(net, scale=1.0, activation_fn=tf.nn.relu, scope=None, reuse=None): """Builds the 17x17 resnet block.""" with tf.variable_scope(scope, 'Block17', [net], reuse=reuse): with tf.variable_scope('Branch_0'): tower_conv = slim.conv2d(net, 192, 1, scope='Conv2d_1x1') with tf.variable_scope('Branch_1'): tower_conv1_0 = slim.conv2d(net, 128, 1, scope='Conv2d_0a_1x1') tower_conv1_1 = slim.conv2d(tower_conv1_0, 160, [1, 7], scope='Conv2d_0b_1x7') tower_conv1_2 = slim.conv2d(tower_conv1_1, 192, [7, 1], scope='Conv2d_0c_7x1') mixed = tf.concat(axis=3, values=[tower_conv, tower_conv1_2]) up = slim.conv2d(mixed, net.get_shape()[3], 1, normalizer_fn=None, activation_fn=None, scope='Conv2d_1x1') scaled_up = up * scale if activation_fn == tf.nn.relu6: # Use clip_by_value to simulate bandpass activation. scaled_up = tf.clip_by_value(scaled_up, -6.0, 6.0) net += scaled_up if activation_fn: net = activation_fn(net) return net
Example #10
Source File: inception_resnet_v2.py From models with Apache License 2.0 | 6 votes |
def block8(net, scale=1.0, activation_fn=tf.nn.relu, scope=None, reuse=None): """Builds the 8x8 resnet block.""" with tf.variable_scope(scope, 'Block8', [net], reuse=reuse): with tf.variable_scope('Branch_0'): tower_conv = slim.conv2d(net, 192, 1, scope='Conv2d_1x1') with tf.variable_scope('Branch_1'): tower_conv1_0 = slim.conv2d(net, 192, 1, scope='Conv2d_0a_1x1') tower_conv1_1 = slim.conv2d(tower_conv1_0, 224, [1, 3], scope='Conv2d_0b_1x3') tower_conv1_2 = slim.conv2d(tower_conv1_1, 256, [3, 1], scope='Conv2d_0c_3x1') mixed = tf.concat(axis=3, values=[tower_conv, tower_conv1_2]) up = slim.conv2d(mixed, net.get_shape()[3], 1, normalizer_fn=None, activation_fn=None, scope='Conv2d_1x1') scaled_up = up * scale if activation_fn == tf.nn.relu6: # Use clip_by_value to simulate bandpass activation. scaled_up = tf.clip_by_value(scaled_up, -6.0, 6.0) net += scaled_up if activation_fn: net = activation_fn(net) return net
Example #11
Source File: autoaugment_utils.py From models with Apache License 2.0 | 6 votes |
def _clip_bbox(min_y, min_x, max_y, max_x): """Clip bounding box coordinates between 0 and 1. Args: min_y: Normalized bbox coordinate of type float between 0 and 1. min_x: Normalized bbox coordinate of type float between 0 and 1. max_y: Normalized bbox coordinate of type float between 0 and 1. max_x: Normalized bbox coordinate of type float between 0 and 1. Returns: Clipped coordinate values between 0 and 1. """ min_y = tf.clip_by_value(min_y, 0.0, 1.0) min_x = tf.clip_by_value(min_x, 0.0, 1.0) max_y = tf.clip_by_value(max_y, 0.0, 1.0) max_x = tf.clip_by_value(max_x, 0.0, 1.0) return min_y, min_x, max_y, max_x
Example #12
Source File: autoaugment_utils.py From models with Apache License 2.0 | 5 votes |
def solarize_add(image, addition=0, threshold=128): # For each pixel in the image less than threshold # we add 'addition' amount to it and then clip the # pixel value to be between 0 and 255. The value # of 'addition' is between -128 and 128. added_image = tf.cast(image, tf.int64) + addition added_image = tf.cast(tf.clip_by_value(added_image, 0, 255), tf.uint8) return tf.where(image < threshold, added_image, image)
Example #13
Source File: cost.py From super-resolution-videos with The Unlicense | 5 votes |
def dice_hard_coe(output, target, epsilon=1e-10): """Non-differentiable Sørensen–Dice coefficient for comparing the similarity of two distributions, usually be used for binary image segmentation i.e. labels are binary. The coefficient = [0, 1], 1 if totally match. Parameters ----------- output : tensor A distribution with shape: [batch_size, ....], (any dimensions). target : tensor A distribution with shape: [batch_size, ....], (any dimensions). epsilon : float An optional name to attach to this layer. Examples --------- >>> outputs = pixel_wise_softmax(network.outputs) >>> dice_loss = 1 - dice_coe(outputs, y_, epsilon=1e-5) References ----------- - `wiki-dice <https://en.wikipedia.org/wiki/Sørensen–Dice_coefficient>`_ """ output = tf.cast(output > 0.5, dtype=tf.float32) target = tf.cast(target > 0.5, dtype=tf.float32) inse = tf.reduce_sum( output * target ) l = tf.reduce_sum( output * output ) r = tf.reduce_sum( target * target ) dice = 2 * (inse) / (l + r) if epsilon == 0: return dice else: return tf.clip_by_value(dice, 0, 1.0-epsilon)
Example #14
Source File: autoaugment_utils.py From models with Apache License 2.0 | 5 votes |
def blend(image1, image2, factor): """Blend image1 and image2 using 'factor'. Factor can be above 0.0. A value of 0.0 means only image1 is used. A value of 1.0 means only image2 is used. A value between 0.0 and 1.0 means we linearly interpolate the pixel values between the two images. A value greater than 1.0 "extrapolates" the difference between the two pixel values, and we clip the results to values between 0 and 255. Args: image1: An image Tensor of type uint8. image2: An image Tensor of type uint8. factor: A floating point value above 0.0. Returns: A blended image Tensor of type uint8. """ if factor == 0.0: return tf.convert_to_tensor(image1) if factor == 1.0: return tf.convert_to_tensor(image2) image1 = tf.to_float(image1) image2 = tf.to_float(image2) difference = image2 - image1 scaled = factor * difference # Do addition in float. temp = tf.to_float(image1) + scaled # Interpolate if factor > 0.0 and factor < 1.0: # Interpolation means we always stay within 0 and 255. return tf.cast(temp, tf.uint8) # Extrapolate: # # We need to clip and then cast. return tf.cast(tf.clip_by_value(temp, 0.0, 255.0), tf.uint8)
Example #15
Source File: nasnet_utils.py From models with Apache License 2.0 | 5 votes |
def _apply_conv_operation(self, net, operation, stride, is_from_original_input, current_step): """Applies the predicted conv operation to net.""" # Dont stride if this is not one of the original hiddenstates if stride > 1 and not is_from_original_input: stride = 1 input_filters = get_channel_dim(net.shape) filter_size = self._filter_size if 'separable' in operation: net = _stacked_separable_conv(net, stride, operation, filter_size, self._use_bounded_activation) if self._use_bounded_activation: net = tf.clip_by_value(net, -CLIP_BY_VALUE_CAP, CLIP_BY_VALUE_CAP) elif operation in ['none']: if self._use_bounded_activation: net = tf.nn.relu6(net) # Check if a stride is needed, then use a strided 1x1 here if stride > 1 or (input_filters != filter_size): if not self._use_bounded_activation: net = tf.nn.relu(net) net = slim.conv2d(net, filter_size, 1, stride=stride, scope='1x1') net = slim.batch_norm(net, scope='bn_1') if self._use_bounded_activation: net = tf.clip_by_value(net, -CLIP_BY_VALUE_CAP, CLIP_BY_VALUE_CAP) elif 'pool' in operation: net = _pooling(net, stride, operation, self._use_bounded_activation) if input_filters != filter_size: net = slim.conv2d(net, filter_size, 1, stride=1, scope='1x1') net = slim.batch_norm(net, scope='bn_1') if self._use_bounded_activation: net = tf.clip_by_value(net, -CLIP_BY_VALUE_CAP, CLIP_BY_VALUE_CAP) else: raise ValueError('Unimplemented operation', operation) if operation != 'none': net = self._apply_drop_path(net, current_step=current_step) return net
Example #16
Source File: preprocess.py From s4l with Apache License 2.0 | 5 votes |
def get_hsvnoise_preprocess(sv_pow=(-2.0, 2.0), sv_mul=(-0.5, 0.5), sv_add=(-0.1, 0.1), h_add=(-0.1, 0.1)): """Returns a function that randomises HSV similarly to the Exemplar paper. Requires the input to still be in [0-255] range. Transforms the input to HSV, applies rnd(mul)*S**(2**rnd(pow)) + rnd(add) to the S and V channels independently, and H + rnd(add) to the H channel, then converts back to RGB in float [0-255]. Args: sv_pow: The min/max powers of two to which to take S/V. sv_mul: The min/max powers of two with which to scale S/V. sv_add: The min/max shift of S/V. h_add: The min/max shift of hue. Returns: A function applying random HSV augmentation to its input. """ rnd = lambda *a: tf.random.uniform((), *a) rnd2 = lambda *a: tf.random.uniform((2,), *a) def _hsvnoise(rgb): hsv = tf.image.rgb_to_hsv(rgb / 255.0) # Needs [0 1] input. h, sv = hsv[..., :1], hsv[..., 1:] h = tf.floormod(1. + h + rnd(*h_add), 1.) # color cycle. pow_, mul, add = 2.0**rnd2(*sv_pow), 2.0**rnd2(*sv_mul), rnd2(*sv_add) sv = sv**pow_ * mul + add hsv = tf.clip_by_value(tf.concat([h, sv], axis=-1), 0, 1) return tf.image.hsv_to_rgb(hsv) * 255.0 def _hsvnoise_pp(data): data["image"] = utils.tf_apply_to_image_or_images(_hsvnoise, data["image"]) return data return _hsvnoise_pp
Example #17
Source File: rl.py From tensor2tensor with Apache License 2.0 | 5 votes |
def feed_forward_gaussian_fun(action_space, config, observations): """Feed-forward Gaussian.""" if not isinstance(action_space, gym.spaces.box.Box): raise ValueError("Expecting continuous action space.") mean_weights_initializer = tf.initializers.variance_scaling( scale=config.init_mean_factor) logstd_initializer = tf.random_normal_initializer(config.init_logstd, 1e-10) flat_observations = tf.reshape(observations, [ tf.shape(observations)[0], tf.shape(observations)[1], functools.reduce(operator.mul, observations.shape.as_list()[2:], 1)]) with tf.variable_scope("network_parameters"): with tf.variable_scope("policy"): x = flat_observations for size in config.policy_layers: x = tf.layers.dense(x, size, activation=tf.nn.relu) mean = tf.layers.dense( x, action_space.shape[0], activation=tf.tanh, kernel_initializer=mean_weights_initializer) logstd = tf.get_variable( "logstd", mean.shape[2:], tf.float32, logstd_initializer) logstd = tf.tile( logstd[None, None], [tf.shape(mean)[0], tf.shape(mean)[1]] + [1] * (mean.shape.ndims - 2)) with tf.variable_scope("value"): x = flat_observations for size in config.value_layers: x = tf.layers.dense(x, size, activation=tf.nn.relu) value = tf.layers.dense(x, 1)[..., 0] mean = tf.check_numerics(mean, "mean") logstd = tf.check_numerics(logstd, "logstd") value = tf.check_numerics(value, "value") policy = tfp.distributions.MultivariateNormalDiag(mean, tf.exp(logstd)) return NetworkOutput(policy, value, lambda a: tf.clip_by_value(a, -2., 2))
Example #18
Source File: autoaugment_utils.py From models with Apache License 2.0 | 5 votes |
def contrast(image, factor): """Equivalent of PIL Contrast.""" degenerate = tf.image.rgb_to_grayscale(image) # Cast before calling tf.histogram. degenerate = tf.cast(degenerate, tf.int32) # Compute the grayscale histogram, then compute the mean pixel value, # and create a constant image size of that value. Use that as the # blending degenerate target of the original image. hist = tf.histogram_fixed_width(degenerate, [0, 255], nbins=256) mean = tf.reduce_sum(tf.cast(hist, tf.float32)) / 256.0 degenerate = tf.ones_like(degenerate, dtype=tf.float32) * mean degenerate = tf.clip_by_value(degenerate, 0.0, 255.0) degenerate = tf.image.grayscale_to_rgb(tf.cast(degenerate, tf.uint8)) return blend(degenerate, image, factor)
Example #19
Source File: autoaugment_utils.py From models with Apache License 2.0 | 5 votes |
def autocontrast(image): """Implements Autocontrast function from PIL using TF ops. Args: image: A 3D uint8 tensor. Returns: The image after it has had autocontrast applied to it and will be of type uint8. """ def scale_channel(image): """Scale the 2D image using the autocontrast rule.""" # A possibly cheaper version can be done using cumsum/unique_with_counts # over the histogram values, rather than iterating over the entire image. # to compute mins and maxes. lo = tf.to_float(tf.reduce_min(image)) hi = tf.to_float(tf.reduce_max(image)) # Scale the image, making the lowest value 0 and the highest value 255. def scale_values(im): scale = 255.0 / (hi - lo) offset = -lo * scale im = tf.to_float(im) * scale + offset im = tf.clip_by_value(im, 0.0, 255.0) return tf.cast(im, tf.uint8) result = tf.cond(hi > lo, lambda: scale_values(image), lambda: image) return result # Assumes RGB for now. Scales each channel independently # and then stacks the result. s1 = scale_channel(image[:, :, 0]) s2 = scale_channel(image[:, :, 1]) s3 = scale_channel(image[:, :, 2]) image = tf.stack([s1, s2, s3], 2) return image
Example #20
Source File: autoaugment_utils.py From models with Apache License 2.0 | 5 votes |
def equalize(image): """Implements Equalize function from PIL using TF ops.""" def scale_channel(im, c): """Scale the data in the channel to implement equalize.""" im = tf.cast(im[:, :, c], tf.int32) # Compute the histogram of the image channel. histo = tf.histogram_fixed_width(im, [0, 255], nbins=256) # For the purposes of computing the step, filter out the nonzeros. nonzero = tf.where(tf.not_equal(histo, 0)) nonzero_histo = tf.reshape(tf.gather(histo, nonzero), [-1]) step = (tf.reduce_sum(nonzero_histo) - nonzero_histo[-1]) // 255 def build_lut(histo, step): # Compute the cumulative sum, shifting by step // 2 # and then normalization by step. lut = (tf.cumsum(histo) + (step // 2)) // step # Shift lut, prepending with 0. lut = tf.concat([[0], lut[:-1]], 0) # Clip the counts to be in range. This is done # in the C code for image.point. return tf.clip_by_value(lut, 0, 255) # If step is zero, return the original image. Otherwise, build # lut from the full histogram and step and then index from it. result = tf.cond(tf.equal(step, 0), lambda: im, lambda: tf.gather(build_lut(histo, step), im)) return tf.cast(result, tf.uint8) # Assumes RGB for now. Scales each channel independently # and then stacks the result. s1 = scale_channel(image, 0) s2 = scale_channel(image, 1) s3 = scale_channel(image, 2) image = tf.stack([s1, s2, s3], 2) return image
Example #21
Source File: keras_box_head.py From models with Apache License 2.0 | 5 votes |
def _predict(self, features): """Predicts boxes. Args: features: A float tensor of shape [batch_size, height, width, channels] containing image features. Returns: box_encodings: A float tensor of shape [batch_size, num_anchors, q, code_size] representing the location of the objects, where q is 1 or the number of classes. """ box_encodings = features for layer in self._box_encoder_layers: box_encodings = layer(box_encodings) batch_size = features.get_shape().as_list()[0] if batch_size is None: batch_size = tf.shape(features)[0] # Clipping the box encodings to make the inference graph TPU friendly. if self._box_encodings_clip_range is not None: box_encodings = tf.clip_by_value( box_encodings, self._box_encodings_clip_range.min, self._box_encodings_clip_range.max) box_encodings = tf.reshape(box_encodings, [batch_size, -1, 1, self._box_code_size]) return box_encodings
Example #22
Source File: keras_box_head.py From models with Apache License 2.0 | 5 votes |
def _predict(self, features): """Predicts boxes. Args: features: A float tensor of shape [batch_size, height, width, channels] containing image features. Returns: box_encodings: A float tensor of shape [batch_size, num_anchors, q, code_size] representing the location of the objects, where q is 1 or the number of classes. """ box_encodings = features for layer in self._box_encoder_layers: box_encodings = layer(box_encodings) batch_size = features.get_shape().as_list()[0] if batch_size is None: batch_size = tf.shape(features)[0] # Clipping the box encodings to make the inference graph TPU friendly. if self._box_encodings_clip_range is not None: box_encodings = tf.clip_by_value( box_encodings, self._box_encodings_clip_range.min, self._box_encodings_clip_range.max) if self._return_flat_predictions: box_encodings = tf.reshape(box_encodings, [batch_size, -1, self._box_code_size]) return box_encodings
Example #23
Source File: box_head.py From models with Apache License 2.0 | 5 votes |
def predict(self, features, num_predictions_per_location): """Predicts boxes. Args: features: A float tensor of shape [batch_size, height, width, channels] containing image features. num_predictions_per_location: Number of box predictions to be made per spatial location. Returns: box_encodings: A float tensor of shape [batch_size, num_anchors, code_size] representing the location of the objects, or a float tensor of shape [batch, height, width, num_predictions_per_location * box_code_size] representing grid box location predictions if self._return_flat_predictions is False. """ box_encodings_net = features if self._use_depthwise: conv_op = functools.partial(slim.separable_conv2d, depth_multiplier=1) else: conv_op = slim.conv2d box_encodings = conv_op( box_encodings_net, num_predictions_per_location * self._box_code_size, [self._kernel_size, self._kernel_size], activation_fn=None, stride=1, padding='SAME', normalizer_fn=None, scope='BoxPredictor') batch_size = features.get_shape().as_list()[0] if batch_size is None: batch_size = tf.shape(features)[0] # Clipping the box encodings to make the inference graph TPU friendly. if self._box_encodings_clip_range is not None: box_encodings = tf.clip_by_value( box_encodings, self._box_encodings_clip_range.min, self._box_encodings_clip_range.max) if self._return_flat_predictions: box_encodings = tf.reshape(box_encodings, [batch_size, -1, self._box_code_size]) return box_encodings
Example #24
Source File: preprocessor.py From models with Apache License 2.0 | 5 votes |
def random_pixel_value_scale(image, minval=0.9, maxval=1.1, seed=None, preprocess_vars_cache=None): """Scales each value in the pixels of the image. This function scales each pixel independent of the other ones. For each value in image tensor, draws a random number between minval and maxval and multiples the values with them. Args: image: rank 3 float32 tensor contains 1 image -> [height, width, channels] with pixel values varying between [0, 255]. minval: lower ratio of scaling pixel values. maxval: upper ratio of scaling pixel values. seed: random seed. preprocess_vars_cache: PreprocessorCache object that records previously performed augmentations. Updated in-place. If this function is called multiple times with the same non-null cache, it will perform deterministically. Returns: image: image which is the same shape as input image. """ with tf.name_scope('RandomPixelValueScale', values=[image]): generator_func = functools.partial( tf.random_uniform, tf.shape(image), minval=minval, maxval=maxval, dtype=tf.float32, seed=seed) color_coef = _get_or_create_preprocess_rand_vars( generator_func, preprocessor_cache.PreprocessorCache.PIXEL_VALUE_SCALE, preprocess_vars_cache) image = tf.multiply(image, color_coef) image = tf.clip_by_value(image, 0.0, 255.0) return image
Example #25
Source File: preprocessor.py From models with Apache License 2.0 | 5 votes |
def random_adjust_brightness(image, max_delta=0.2, seed=None, preprocess_vars_cache=None): """Randomly adjusts brightness. Makes sure the output image is still between 0 and 255. Args: image: rank 3 float32 tensor contains 1 image -> [height, width, channels] with pixel values varying between [0, 255]. max_delta: how much to change the brightness. A value between [0, 1). seed: random seed. preprocess_vars_cache: PreprocessorCache object that records previously performed augmentations. Updated in-place. If this function is called multiple times with the same non-null cache, it will perform deterministically. Returns: image: image which is the same shape as input image. boxes: boxes which is the same shape as input boxes. """ with tf.name_scope('RandomAdjustBrightness', values=[image]): generator_func = functools.partial(tf.random_uniform, [], -max_delta, max_delta, seed=seed) delta = _get_or_create_preprocess_rand_vars( generator_func, preprocessor_cache.PreprocessorCache.ADJUST_BRIGHTNESS, preprocess_vars_cache) def _adjust_brightness(image): image = tf.image.adjust_brightness(image / 255, delta) * 255 image = tf.clip_by_value(image, clip_value_min=0.0, clip_value_max=255.0) return image image = _augment_only_rgb_channels(image, _adjust_brightness) return image
Example #26
Source File: preprocessor.py From models with Apache License 2.0 | 5 votes |
def random_adjust_contrast(image, min_delta=0.8, max_delta=1.25, seed=None, preprocess_vars_cache=None): """Randomly adjusts contrast. Makes sure the output image is still between 0 and 255. Args: image: rank 3 float32 tensor contains 1 image -> [height, width, channels] with pixel values varying between [0, 255]. min_delta: see max_delta. max_delta: how much to change the contrast. Contrast will change with a value between min_delta and max_delta. This value will be multiplied to the current contrast of the image. seed: random seed. preprocess_vars_cache: PreprocessorCache object that records previously performed augmentations. Updated in-place. If this function is called multiple times with the same non-null cache, it will perform deterministically. Returns: image: image which is the same shape as input image. """ with tf.name_scope('RandomAdjustContrast', values=[image]): generator_func = functools.partial(tf.random_uniform, [], min_delta, max_delta, seed=seed) contrast_factor = _get_or_create_preprocess_rand_vars( generator_func, preprocessor_cache.PreprocessorCache.ADJUST_CONTRAST, preprocess_vars_cache) def _adjust_contrast(image): image = tf.image.adjust_contrast(image / 255, contrast_factor) * 255 image = tf.clip_by_value(image, clip_value_min=0.0, clip_value_max=255.0) return image image = _augment_only_rgb_channels(image, _adjust_contrast) return image
Example #27
Source File: preprocessor.py From models with Apache License 2.0 | 5 votes |
def random_adjust_hue(image, max_delta=0.02, seed=None, preprocess_vars_cache=None): """Randomly adjusts hue. Makes sure the output image is still between 0 and 255. Args: image: rank 3 float32 tensor contains 1 image -> [height, width, channels] with pixel values varying between [0, 255]. max_delta: change hue randomly with a value between 0 and max_delta. seed: random seed. preprocess_vars_cache: PreprocessorCache object that records previously performed augmentations. Updated in-place. If this function is called multiple times with the same non-null cache, it will perform deterministically. Returns: image: image which is the same shape as input image. """ with tf.name_scope('RandomAdjustHue', values=[image]): generator_func = functools.partial(tf.random_uniform, [], -max_delta, max_delta, seed=seed) delta = _get_or_create_preprocess_rand_vars( generator_func, preprocessor_cache.PreprocessorCache.ADJUST_HUE, preprocess_vars_cache) def _adjust_hue(image): image = tf.image.adjust_hue(image / 255, delta) * 255 image = tf.clip_by_value(image, clip_value_min=0.0, clip_value_max=255.0) return image image = _augment_only_rgb_channels(image, _adjust_hue) return image
Example #28
Source File: preprocessor.py From models with Apache License 2.0 | 5 votes |
def random_adjust_saturation(image, min_delta=0.8, max_delta=1.25, seed=None, preprocess_vars_cache=None): """Randomly adjusts saturation. Makes sure the output image is still between 0 and 255. Args: image: rank 3 float32 tensor contains 1 image -> [height, width, channels] with pixel values varying between [0, 255]. min_delta: see max_delta. max_delta: how much to change the saturation. Saturation will change with a value between min_delta and max_delta. This value will be multiplied to the current saturation of the image. seed: random seed. preprocess_vars_cache: PreprocessorCache object that records previously performed augmentations. Updated in-place. If this function is called multiple times with the same non-null cache, it will perform deterministically. Returns: image: image which is the same shape as input image. """ with tf.name_scope('RandomAdjustSaturation', values=[image]): generator_func = functools.partial(tf.random_uniform, [], min_delta, max_delta, seed=seed) saturation_factor = _get_or_create_preprocess_rand_vars( generator_func, preprocessor_cache.PreprocessorCache.ADJUST_SATURATION, preprocess_vars_cache) def _adjust_saturation(image): image = tf.image.adjust_saturation(image / 255, saturation_factor) * 255 image = tf.clip_by_value(image, clip_value_min=0.0, clip_value_max=255.0) return image image = _augment_only_rgb_channels(image, _adjust_saturation) return image
Example #29
Source File: preprocessor.py From models with Apache License 2.0 | 5 votes |
def _get_crop_border(border, size): border = tf.cast(border, tf.float32) size = tf.cast(size, tf.float32) i = tf.ceil(tf.log(2.0 * border / size) / tf.log(2.0)) divisor = tf.pow(2.0, i) divisor = tf.clip_by_value(divisor, 1, border) divisor = tf.cast(divisor, tf.int32) return tf.cast(border, tf.int32) // divisor
Example #30
Source File: test_forward.py From incubator-tvm with Apache License 2.0 | 5 votes |
def _test_forward_clip_by_value(ip_shape, clip_value_min, clip_value_max, dtype): tf.reset_default_graph() with tf.Graph().as_default(): in_data = tf.placeholder(dtype, ip_shape, name="in_data") tf.clip_by_value(in_data, clip_value_min, clip_value_max, name="ClipByValue") np_data = np.random.uniform(-100, 100, size=ip_shape).astype(dtype) compare_tf_with_tvm([np_data], ['in_data:0'], 'ClipByValue:0')