tensorflow::
ops::
SampleDistortedBoundingBox
#include <image_ops.h>
Generate a single randomly distorted bounding box for an image.
Summary
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.
Args:
- scope: A Scope object
-
image_size: 1-D, containing
[height, width, channels]
. -
bounding_boxes: 3-D with shape
[batch, N, 4]
describing the N bounding boxes associated with the image.
Optional attributes (see
Attrs
):
-
seed: If either
seed
orseed2
are set to non-zero, the random number generator is seeded by the givenseed
. Otherwise, it is seeded by a random seed. - seed2: A second seed to avoid seed collision.
- min_object_covered: 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.
- aspect_ratio_range: The cropped area of the image must have an aspect ratio = width / height within this range.
- area_range: The cropped area of the image must contain a fraction of the supplied image within this range.
-
max_attempts: Number of attempts at generating a cropped region of the image of the specified constraints. After
max_attempts
failures, return the entire image. - use_image_if_no_bounding_boxes: Controls behavior if no bounding boxes supplied. If true, assume an implicit bounding box covering the whole input. If false, raise an error.
Returns:
-
Output
begin: 1-D, containing[offset_height, offset_width, 0]
. Provide as input totf.slice
. -
Output
size: 1-D, containing[target_height, target_width, -1]
. Provide as input totf.slice
. -
Output
bboxes: 3-D with shape[1, 1, 4]
containing the distorted bounding box. Provide as input totf.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
|
|
operation
|
|
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::
|
Optional attribute setters for SampleDistortedBoundingBox . |
Public attributes
Public functions
SampleDistortedBoundingBox
SampleDistortedBoundingBox( const ::tensorflow::Scope & scope, ::tensorflow::Input image_size, ::tensorflow::Input bounding_boxes )
SampleDistortedBoundingBox
SampleDistortedBoundingBox( const ::tensorflow::Scope & scope, ::tensorflow::Input image_size, ::tensorflow::Input bounding_boxes, const SampleDistortedBoundingBox::Attrs & attrs )