#include <image_ops.h>
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.
Arguments:
[height, width, channels].[batch, N, 4] describing the N bounding boxes associated with the image.Optional attributes (see Attrs):
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.max_attempts failures, return the entire image.Returns:
Output begin: 1-D, containing [offset_height, offset_width, 0]. Provide as input to tf.slice.Output size: 1-D, containing [target_height, target_width, -1]. Provide as input to tf.slice.Output bboxes: 3-D with shape [1, 1, 4] containing the distorted bounding box. Provide as input to tf.image.draw_bounding_boxes. | Constructors and Destructors | |
|---|---|
SampleDistortedBoundingBox(const ::tensorflow::Scope & scope, ::tensorflow::Input image_size, ::tensorflow::Input bounding_boxes) | |
SampleDistortedBoundingBox(const ::tensorflow::Scope & scope, ::tensorflow::Input image_size, ::tensorflow::Input bounding_boxes, const SampleDistortedBoundingBox::Attrs & attrs) |
| Public attributes | |
|---|---|
bboxes | |
begin | |
size | |
| Public static functions | |
|---|---|
AreaRange(const gtl::ArraySlice< float > & x) | |
AspectRatioRange(const gtl::ArraySlice< float > & x) | |
MaxAttempts(int64 x) | |
MinObjectCovered(float x) | |
Seed(int64 x) | |
Seed2(int64 x) | |
UseImageIfNoBoundingBoxes(bool x) | |
| Structs | |
|---|---|
| tensorflow::ops::SampleDistortedBoundingBox::Attrs | Optional attribute setters for SampleDistortedBoundingBox. |
::tensorflow::Output bboxes
::tensorflow::Output begin
::tensorflow::Output size
SampleDistortedBoundingBox( const ::tensorflow::Scope & scope, ::tensorflow::Input image_size, ::tensorflow::Input bounding_boxes )
SampleDistortedBoundingBox( const ::tensorflow::Scope & scope, ::tensorflow::Input image_size, ::tensorflow::Input bounding_boxes, const SampleDistortedBoundingBox::Attrs & attrs )
Attrs AreaRange( const gtl::ArraySlice< float > & x )
Attrs AspectRatioRange( const gtl::ArraySlice< float > & x )
Attrs MaxAttempts( int64 x )
Attrs MinObjectCovered( float x )
Attrs Seed( int64 x )
Attrs Seed2( int64 x )
Attrs UseImageIfNoBoundingBoxes( bool x )
© 2018 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/api_docs/cc/class/tensorflow/ops/sample-distorted-bounding-box.html