当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python tf.image.sample_distorted_bounding_box用法及代码示例


为图像生成单个随机扭曲的边界框。

用法

tf.image.sample_distorted_bounding_box(
    image_size, bounding_boxes, seed=0, min_object_covered=0.1,
    aspect_ratio_range=None, area_range=None, max_attempts=None,
    use_image_if_no_bounding_boxes=None, name=None
)

参数

  • image_size 一个Tensor。必须是以下类型之一:uint8 , int8 , int16 , int32 , int64。一维,包含 [height, width, channels]
  • bounding_boxes Tensor 类型为 float32 。 3-D,形状为[batch, N, 4],说明了与图像相关的 N 个边界框。
  • seed 可选的 int 。默认为 0 。如果 seed 设置为非零,则随机数生成器由给定的 seed 播种。否则,它由随机种子播种。
  • min_object_covered float32 类型的张量。默认为 0.1 。图像的裁剪区域必须至少包含所提供的任何边界框的这一部分。此参数的值应为非负数。在 0 的情况下,裁剪区域不需要与提供的任何边界框重叠。
  • aspect_ratio_range floats 的可选列表。默认为 [0.75, 1.33] 。图像的裁剪区域必须具有此范围内的 ratio = width / height 方面。
  • area_range floats 的可选列表。默认为 [0.05, 1] 。图像的裁剪区域必须包含此范围内提供的图像的一小部分。
  • max_attempts 可选的 int 。默认为 100 。尝试生成具有指定约束的图像的裁剪区域的次数。 max_attempts 失败后,返回整个图像。
  • use_image_if_no_bounding_boxes 可选的 bool 。默认为 False 。如果未提供边界框,则控制行为。如果为真,则假设一个隐式边界框覆盖整个输入。如果为 false,则引发错误。
  • name 操作的名称(可选)。

返回

  • Tensor 对象的元组(开始、大小、bbox)。
  • begin 一个Tensor。具有与 image_size 相同的类型。一维,包含 [offset_height, offset_width, 0] 。作为输入提供给 tf.slice
  • size 一个Tensor。具有与 image_size 相同的类型。一维,包含 [target_height, target_width, -1] 。作为输入提供给 tf.slice
  • bboxes Tensor 类型为 float32 。 3-D,形状为[1, 1, 4],包含扭曲的边界框。作为输入提供给 tf.image.draw_bounding_boxes

抛出

  • ValueError 如果未指定种子并启用操作确定性。

在图像识别或对象定位任务中,除了 ground-truth 标签之外,通常还提供边界框注释。训练这种系统的常用技术是在保留其内容的同时随机扭曲图像,即数据增强。在给定 image_size , bounding_boxes 和一系列约束的情况下,此 Op 输出对象的随机失真定位,即边界框。

这个 Op 的输出是一个单一的边界框,可以用来裁剪原始图像。输出作为 3 个张量返回:begin , sizebboxes。前 2 个张量可以直接输入 tf.slice 以裁剪图像。后者可以提供给tf.image.draw_bounding_boxes 以可视化边界框的外观。

边界框以 [y_min, x_min, y_max, x_max] 的形式提供和返回。边界框坐标是 [0.0, 1.0] 中相对于底层图像的宽度和高度的浮点数。

例如,

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

    # 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.compat.v1.summary.image('images_with_box', image_with_box)

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

请注意,如果没有可用的边界框信息,设置 use_image_if_no_bounding_boxes = true 将假定有一个隐式边界框覆盖整个图像。如果use_image_if_no_bounding_boxes 为假且未提供边界框,则会引发错误。

要在给定 seed 值的情况下生成确定性结果,请使用 tf.image.stateless_sample_distorted_bounding_box 。与使用seed 参数和tf.image.random_* ops 不同,tf.image.stateless_random_* ops 保证相同的结果给定相同的种子,而与调用函数的次数无关,并且与全局种子设置无关(例如 tf.random.set_seed )。

相关用法


注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.image.sample_distorted_bounding_box。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。