tf.compat.v1.image.extract_patches
Извлекает patches из images.
tf.compat.v1.image.extract_patches(
images, sizes, strides, rates, padding, name=None
)
Эта операция собирает фрагменты из входного изображения, как при применении свёртки. Все извлечённые фрагменты объединяются по глубине (в последнем измерении) выходного тензора.
В частности, операция извлекает фрагменты формы sizes, расположенные на расстоянии strides друг от друга во входном изображении. Для прореживания выходных данных используется аргумент rates, как и в «atrous»- или дилатированных свёртках.
Результат представляет собой 4-мерный тензор с индексами по пакету, строке и столбцу. 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
| Аргументы | |
|---|---|
images | 4-мерный тензор с формой [batch, in_rows, in_cols, depth]. |
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-мерный тензор того же типа, что и входные данные. |
© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/api_docs/python/tf/compat/v1/image/extract_patches