Class SampleDistortedBoundingBox<T extends TNumber>

java.lang.Object
org.tensorflow.op.RawOp
org.tensorflow.op.image.SampleDistortedBoundingBox<T>
All Implemented Interfaces:
Op

@Operator(group="image") public final class SampleDistortedBoundingBox<T extends TNumber> extends RawOp
Generate a single randomly distorted bounding box for an image. Bounding box annotations are often supplied in addition to ground-truth labels in image recognition or object localization tasks. A common technique for training such a system is to randomly distort an image while preserving its content, i.e. data augmentation. This Op outputs a randomly distorted localization of an object, i.e. bounding box, given an image_size, bounding_boxes and a series of constraints.

The output of this Op is a single bounding box that may be used to crop the original image. The output is returned as 3 tensors: begin, size and bboxes. The first 2 tensors can be fed directly into tf.slice to crop the image. The latter may be supplied to tf.image.draw_bounding_boxes to visualize what the bounding box looks like.

Bounding boxes are supplied and returned as [y_min, x_min, y_max, x_max]. The bounding box coordinates are floats in [0.0, 1.0] relative to the width and height of the underlying image.

For example,

    # Generate a single distorted bounding box.
    begin, size, bbox_for_draw = tf.image.sample_distorted_bounding_box(
        tf.shape(image),
        bounding_boxes=bounding_boxes)

    # Draw the bounding box in an image summary.
    image_with_box = tf.image.draw_bounding_boxes(tf.expand_dims(image, 0),
                                                  bbox_for_draw)
    tf.summary.image('images_with_box', image_with_box)

    # Employ the bounding box to distort the image.
    distorted_image = tf.slice(image, begin, size)

Note that if no bounding box information is available, setting use_image_if_no_bounding_boxes = true will assume there is a single implicit bounding box covering the whole image. If use_image_if_no_bounding_boxes is false and no bounding boxes are supplied, an error is raised.

  • Field Details

  • Constructor Details

    • SampleDistortedBoundingBox

      public SampleDistortedBoundingBox(Operation operation)
  • Method Details

    • create

      @Endpoint(describeByClass=true) public static <T extends TNumber> SampleDistortedBoundingBox<T> create(Scope scope, Operand<T> imageSize, Operand<TFloat32> boundingBoxes, Operand<TFloat32> minObjectCovered, SampleDistortedBoundingBox.Options... options)
      Factory method to create a class wrapping a new SampleDistortedBoundingBoxV2 operation.
      Type Parameters:
      T - data type for SampleDistortedBoundingBoxV2 output and operands
      Parameters:
      scope - current scope
      imageSize - 1-D, containing [height, width, channels].
      boundingBoxes - 3-D with shape [batch, N, 4] describing the N bounding boxes associated with the image.
      minObjectCovered - The cropped area of the image must contain at least this fraction of any bounding box supplied. The value of this parameter should be non-negative. In the case of 0, the cropped area does not need to overlap any of the bounding boxes supplied.
      options - carries optional attribute values
      Returns:
      a new instance of SampleDistortedBoundingBox
    • seed

      public static SampleDistortedBoundingBox.Options seed(Long seed)
      Sets the seed option.
      Parameters:
      seed - If either seed or seed2 are set to non-zero, the random number generator is seeded by the given seed. Otherwise, it is seeded by a random seed.
      Returns:
      this Options instance.
    • seed2

      public static SampleDistortedBoundingBox.Options seed2(Long seed2)
      Sets the seed2 option.
      Parameters:
      seed2 - A second seed to avoid seed collision.
      Returns:
      this Options instance.
    • aspectRatioRange

      public static SampleDistortedBoundingBox.Options aspectRatioRange(List<Float> aspectRatioRange)
      Sets the aspectRatioRange option.
      Parameters:
      aspectRatioRange - The cropped area of the image must have an aspect ratio = width / height within this range.
      Returns:
      this Options instance.
    • aspectRatioRange

      public static SampleDistortedBoundingBox.Options aspectRatioRange(Float... aspectRatioRange)
      Sets the aspectRatioRange option.
      Parameters:
      aspectRatioRange - The cropped area of the image must have an aspect ratio = width / height within this range.
      Returns:
      this Options instance.
    • areaRange

      public static SampleDistortedBoundingBox.Options areaRange(List<Float> areaRange)
      Sets the areaRange option.
      Parameters:
      areaRange - The cropped area of the image must contain a fraction of the supplied image within this range.
      Returns:
      this Options instance.
    • areaRange

      public static SampleDistortedBoundingBox.Options areaRange(Float... areaRange)
      Sets the areaRange option.
      Parameters:
      areaRange - The cropped area of the image must contain a fraction of the supplied image within this range.
      Returns:
      this Options instance.
    • maxAttempts

      public static SampleDistortedBoundingBox.Options maxAttempts(Long maxAttempts)
      Sets the maxAttempts option.
      Parameters:
      maxAttempts - Number of attempts at generating a cropped region of the image of the specified constraints. After max_attempts failures, return the entire image.
      Returns:
      this Options instance.
    • useImageIfNoBoundingBoxes

      public static SampleDistortedBoundingBox.Options useImageIfNoBoundingBoxes(Boolean useImageIfNoBoundingBoxes)
      Sets the useImageIfNoBoundingBoxes option.
      Parameters:
      useImageIfNoBoundingBoxes - Controls behavior if no bounding boxes supplied. If true, assume an implicit bounding box covering the whole input. If false, raise an error.
      Returns:
      this Options instance.
    • begin

      public Output<T> begin()
      Gets begin. 1-D, containing [offset_height, offset_width, 0]. Provide as input to tf.slice.
      Returns:
      begin.
    • sizeOutput

      public Output<T> sizeOutput()
      Gets sizeOutput. 1-D, containing [target_height, target_width, -1]. Provide as input to tf.slice.
      Returns:
      sizeOutput.
    • bboxes

      public Output<TFloat32> bboxes()
      Gets bboxes. 3-D with shape [1, 1, 4] containing the distorted bounding box. Provide as input to tf.image.draw_bounding_boxes.
      Returns:
      bboxes.