從 images
中提取 patches
。
用法
tf.image.extract_patches(
images, sizes, strides, rates, padding, name=None
)
參數
-
images
形狀為[batch, in_rows, in_cols, depth]
的 4-D 張量。 -
sizes
提取的補丁的大小。必須是[1, size_rows, size_cols, 1]
。 -
strides
長度為 4 的一維張量。兩個連續補丁的中心在圖像中的距離。必須是:[1, stride_rows, stride_cols, 1]
。 -
rates
長度為 4 的一維張量。必須是:[1, rate_rows, rate_cols, 1]
。這是輸入步幅,指定兩個連續的補丁樣本在輸入中的距離。相當於使用patch_sizes_eff = patch_sizes + (patch_sizes - 1) * (rates - 1)
提取補丁,然後以rates
的因子對它們進行空間二次采樣。這相當於擴張(又名 Atrous)卷積中的rate
。 -
padding
要使用的填充算法的類型。 -
name
操作的名稱(可選)。
返回
- 與輸入類型相同的 4-D 張量。
此操作從輸入圖像中收集補丁,就像應用卷積一樣。所有提取的補丁都堆疊在輸出的深度(最後)維度中。
具體來說,op 提取形狀為 sizes
的塊,這些塊在輸入圖像中相隔 strides
。使用rates
參數對輸出進行二次采樣,其方式與"atrous" 或"dilated" 卷積相同。
結果是一個按批次、行和列索引的 4D 張量。 output[i, x, y]
包含大小為 sizes[1], sizes[2]
的扁平補丁,該補丁取自從 images[i, x*strides[1], y*strides[2]]
開始的輸入。
每個輸出補丁都可以重新整形為 sizes[1], sizes[2], depth
,其中 depth
是 images.shape[3]
。
輸出元素以 rate
參數給定的間隔從輸入中獲取,就像在擴張卷積中一樣。
padding
參數對每個補丁的大小沒有影響,它決定了提取多少補丁。如果 VALID
,則僅包含完全包含在輸入圖像中的補丁。如果 SAME
,則包括起點在輸入內部的所有補丁,輸入外部的區域默認為零。
例子:
n = 10
# images is a 1 x 10 x 10 x 1 array that contains the numbers 1 through 100
images = [[[[x * n + y + 1] for y in range(n)] for x in range(n)]]
# We generate two outputs as follows:
# 1. 3x3 patches with stride length 5
# 2. Same as above, but the rate is increased to 2
tf.image.extract_patches(images=images,
sizes=[1, 3, 3, 1],
strides=[1, 5, 5, 1],
rates=[1, 1, 1, 1],
padding='VALID')
# Yields:
[[[[ 1 2 3 11 12 13 21 22 23]
[ 6 7 8 16 17 18 26 27 28]]
[[51 52 53 61 62 63 71 72 73]
[56 57 58 66 67 68 76 77 78]]]]
如果我們用 *
標記輸入圖像中用於輸出的像素,我們會看到以下模式:
* * * 4 5 * * * 9 10
* * * 14 15 * * * 19 20
* * * 24 25 * * * 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
* * * 54 55 * * * 59 60
* * * 64 65 * * * 69 70
* * * 74 75 * * * 79 80
81 82 83 84 85 86 87 88 89 90
91 92 93 94 95 96 97 98 99 100
tf.image.extract_patches(images=images,
sizes=[1, 3, 3, 1],
strides=[1, 5, 5, 1],
rates=[1, 2, 2, 1],
padding='VALID')
# Yields:
[[[[ 1 3 5 21 23 25 41 43 45]
[ 6 8 10 26 28 30 46 48 50]]
[[ 51 53 55 71 73 75 91 93 95]
[ 56 58 60 76 78 80 96 98 100]]]]
我們可以再次繪製效果,這次使用符號*
, x
, +
和o
來區分補丁:
* 2 * 4 * x 7 x 9 x
11 12 13 14 15 16 17 18 19 20
* 22 * 24 * x 27 x 29 x
31 32 33 34 35 36 37 38 39 40
* 42 * 44 * x 47 x 49 x
+ 52 + 54 + o 57 o 59 o
61 62 63 64 65 66 67 68 69 70
+ 72 + 74 + o 77 o 79 o
81 82 83 84 85 86 87 88 89 90
+ 92 + 94 + o 97 o 99 o
相關用法
- Python tf.image.extract_glimpse用法及代碼示例
- 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.convert_image_dtype用法及代碼示例
- Python tf.image.stateless_random_flip_up_down用法及代碼示例
- Python tf.image.random_saturation用法及代碼示例
- Python tf.image.flip_up_down用法及代碼示例
- Python tf.image.crop_to_bounding_box用法及代碼示例
- Python tf.image.stateless_random_jpeg_quality用法及代碼示例
- Python tf.image.crop_and_resize用法及代碼示例
- 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.extract_patches。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。