TensorFlow函數(shù):tf.image.sample_distorted_bounding_box

2018-06-22 11:17 更新

tf.image.sample_distorted_bounding_box函數(shù)

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

定義在:tensorflow/python/ops/image_ops_impl.py.

請參閱指南:圖像操作>圖像使用邊框

為圖像生成一個隨機扭曲的邊界框.

在圖像識別或?qū)ο蠖ㄎ蝗蝿?wù)中,除了ground-truth標(biāo)簽外,通常還會提供邊界框注釋.訓(xùn)練這種系統(tǒng)的一種常用技術(shù)是隨機地扭曲圖像,同時保留其內(nèi)容,即數(shù)據(jù)增強.這個運算輸出中的對象的隨機扭曲的定位,即邊界框,給定一個image_size,bounding_boxes和一系列的限制.

該操作的輸出是一個可用于裁剪原始圖像的單個邊界框.輸出返回為3個張量:begin,size和bboxes.前兩個張可直接送入tf.slice以裁剪圖像.可以提供后者tf.image.draw_bounding_boxes以可視化邊界框的外觀.

邊界框被提供并作為[y_min, x_min, y_max, x_max]返回.邊界框坐標(biāo)在[0.0, 1.0]相對于底層圖像的寬度和高度的浮點數(shù).

例如:

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

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

請注意,如果沒有邊界框信息可用,則設(shè)置use_image_if_no_bounding_boxes=true將假定存在覆蓋整個圖像的單個隱式邊界框.如果use_image_if_no_bounding_boxes為false并且沒有提供邊界框,則會引發(fā)錯誤.

參數(shù):

  • image_size:一個Tensor,必須是下列類型之一:uint8,int8,int16,int32,int64,是1維的,并且包含[height, width, channels].
  • bounding_boxes:一個float32類型的Tensor,三維的,形狀為[batch, N, 4],描述與圖像相關(guān)的?個邊界框.
  • seed:可選的int,默認(rèn)為0;如果seed或者seed2其中之一被設(shè)置為非零,則隨機數(shù)發(fā)生器由給定的seed播種;否則,它會被隨機種子播種.
  • seed2:可選的int,默認(rèn)為0;用于避免種子碰撞的第二個種子.
  • min_object_covered:一個float32類型的張量,默認(rèn)為0.1,圖像的裁剪區(qū)域必須至少包含提供的任何邊界框的這一部分;該參數(shù)的值應(yīng)該是非負的;在0的情況下,裁剪區(qū)域不需要與任何提供的邊界框重疊.
  • aspect_ratio_range:一個可選的floats列表,默認(rèn)為[0.75, 1.33],圖像的裁剪區(qū)域必須在此范圍內(nèi)具有寬高比=寬度/高度(ratio = width / height).
  • area_range:一個可選的floats列表,默認(rèn)為[0.05, 1],圖像的裁剪區(qū)域必須在此范圍內(nèi)包含所提供圖像的一部分.
  • max_attempts:可選的int,默認(rèn)為100,生成指定約束圖像的裁剪區(qū)域的嘗試次數(shù);max_attempts失敗后,返回整個圖像.
  • use_image_if_no_bounding_boxes:可選的bool,默認(rèn)為False.如果未提供邊界框,則控制行為.如果為true,則假定覆蓋整個輸入的隱式邊界框.如果為false,則提出錯誤.
  • name:操作的名稱(可選).

返回:

Tensor對象的元型態(tài)組(begin, size, bboxes).

  • begin:一個Tensor,與image_size具有相同類型;1維,包含[offset_height, offset_width, 0],提供給tf.slice的輸入.
  • size:一個Tensor,與image_size具有相同類型;1維,包含[target_height, target_width, -1],提供給tf.slice的輸入.
  • bboxes:一個float32類型的Tensor,三維的,形狀為[1, 1, 4],包含所有游戲扭曲的邊界框,提供給tf.image.draw_bounding_boxes的輸入.
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號