從輸入圖像張量中提取裁剪並調整它們的大小。
用法
tf.image.crop_and_resize(
image, boxes, box_indices, crop_size, method='bilinear',
extrapolation_value=0.0, name=None
)
參數
-
image
形狀為[batch, image_height, image_width, depth]
的 4-D 張量。image_height
和image_width
都需要為正。 -
boxes
形狀為[num_boxes, 4]
的二維張量。張量的第i
行指定了box_ind[i]
圖像中框的坐標,並在規範化坐標[y1, x1, y2, x2]
中指定。y
的歸一化坐標值映射到y * (image_height - 1)
處的圖像坐標,因此歸一化圖像高度的[0, 1]
區間映射到圖像高度坐標中的[0, image_height - 1]
。我們確實允許y1
>y2
,在這種情況下,采樣的裁剪是原始圖像的 up-down 翻轉版本。寬度尺寸的處理方式類似。[0, 1]
範圍之外的歸一化坐標是允許的,在這種情況下,我們使用extrapolation_value
來推斷輸入圖像值。 -
box_indices
形狀為[num_boxes]
的一維張量,在[0, batch)
中具有 int32 值。box_ind[i]
的值指定第i
框所指的圖像。 -
crop_size
2 個元素的一維張量,size = [crop_height, crop_width]
。所有裁剪的圖像塊都將調整為此大小。不保留圖像內容的縱橫比。crop_height
和crop_width
都需要為正。 -
method
一個可選字符串,指定調整大小的采樣方法。它可以是"bilinear"
或"nearest"
並且默認為"bilinear"
。目前支持兩種采樣方法:雙線性和最近鄰。 -
extrapolation_value
可選的float
。默認為0.0
。適用時用於外推的值。 -
name
操作的名稱(可選)。
返回
-
形狀為
[num_boxes, crop_height, crop_width, depth]
的 4-D 張量。
從輸入圖像張量中提取裁剪,並使用雙線性采樣或最近鄰采樣(可能會更改縱橫比)將它們調整為由 crop_size
指定的通用輸出大小。這比 crop_to_bounding_box
操作更通用,後者從輸入圖像中提取固定大小的切片,並且不允許調整大小或更改縱橫比。
在 boxes
的邊界框位置定義的位置處從輸入 image
返回具有 crops
的張量。裁剪後的框都被調整大小(使用雙線性或最近鄰插值)到固定的 size = [crop_height, crop_width]
。結果是一個 4-D 張量 [num_boxes, crop_height, crop_width, depth]
。調整大小是角對齊的。特別是,如果 boxes = [[0, 0, 1, 1]]
,該方法將給出與使用 tf.compat.v1.image.resize_bilinear()
或 tf.compat.v1.image.resize_nearest_neighbor()
(取決於 method
參數)和 align_corners=True
相同的結果。
例子:
import tensorflow as tf
BATCH_SIZE = 1
NUM_BOXES = 5
IMAGE_HEIGHT = 256
IMAGE_WIDTH = 256
CHANNELS = 3
CROP_SIZE = (24, 24)
image = tf.random.normal(shape=(BATCH_SIZE, IMAGE_HEIGHT, IMAGE_WIDTH,
CHANNELS) )
boxes = tf.random.uniform(shape=(NUM_BOXES, 4))
box_indices = tf.random.uniform(shape=(NUM_BOXES,), minval=0,
maxval=BATCH_SIZE, dtype=tf.int32)
output = tf.image.crop_and_resize(image, boxes, box_indices, CROP_SIZE)
output.shape #=> (5, 24, 24, 3)
相關用法
- Python tf.image.crop_to_bounding_box用法及代碼示例
- Python tf.image.convert_image_dtype用法及代碼示例
- Python tf.image.central_crop用法及代碼示例
- Python tf.image.random_brightness用法及代碼示例
- Python tf.image.pad_to_bounding_box用法及代碼示例
- Python tf.image.adjust_hue用法及代碼示例
- Python tf.image.random_contrast用法及代碼示例
- Python tf.image.rot90用法及代碼示例
- Python tf.image.random_hue用法及代碼示例
- Python tf.image.flip_left_right用法及代碼示例
- Python tf.image.stateless_random_flip_up_down用法及代碼示例
- Python tf.image.random_saturation用法及代碼示例
- Python tf.image.extract_glimpse用法及代碼示例
- Python tf.image.flip_up_down用法及代碼示例
- Python tf.image.stateless_random_jpeg_quality用法及代碼示例
- Python tf.image.psnr用法及代碼示例
- Python tf.image.stateless_random_hue用法及代碼示例
- Python tf.image.rgb_to_yiq用法及代碼示例
- Python tf.image.stateless_random_crop用法及代碼示例
- Python tf.image.resize_with_crop_or_pad用法及代碼示例
注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.image.crop_and_resize。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。