Spec-Zone.ru › TensorFlow

tf.keras.preprocessing.image.smart_resize

Изменяет размер изображений до заданного размера без искажения соотношения сторон.

tf.keras.preprocessing.image.smart_resize(
    x,
    size,
    interpolation='bilinear',
    data_format='channels_last',
    backend_module=None
)

Наборы изображений обычно содержат изображения разных размеров. Однако перед обработкой слоями Keras эти изображения необходимо объединить в пакеты. Для объединения в пакеты изображения должны иметь одинаковую высоту и ширину.

Можно просто сделать так в TF (или использовать эквивалент в JAX):

size = (200, 200)
ds = ds.map(lambda img: resize(img, size))

Однако в этом случае соотношение сторон изображений будет искажено, поскольку, как правило, оно отличается от size. Во многих случаях это допустимо, но не всегда (например, это может стать проблемой для моделей генерации изображений).

Обратите внимание: передача аргумента preserve_aspect_ratio=True в resize позволяет сохранить соотношение сторон, но при этом заданный целевой размер соблюдаться не будет.

Для этого:

size = (200, 200)
ds = ds.map(lambda img: smart_resize(img, size))

Фактический размер выходных изображений будет (200, 200), и они не будут искажены. Вместо этого будут обрезаны части изображения, не помещающиеся в заданный размер.

Процесс изменения размера:

  1. Вырезать из центра изображения наибольшую область с тем же соотношением сторон, что и у целевого размера. Например, если size=(200, 200), а размер входного изображения составляет (340, 500), мы вырезаем область размером (340, 340) по центру изображения по ширине.
  2. Изменить размер вырезанной области до целевого размера. В приведённом выше примере мы изменяем размер области (340, 340) до (200, 200).
Аргументы
x Входное изображение или пакет изображений (в виде тензора или массива NumPy). Формат должен быть (height, width, channels) или (batch_size, height, width, channels).
size Кортеж из (height, width) целых чисел. Целевой размер.
interpolation Строка, задающая интерполяцию для изменения размера. По умолчанию — 'bilinear'. Поддерживаются bilinear, nearest, bicubic, lanczos3, lanczos5.
data_format "channels_last" или "channels_first".
backend_module Используемый модуль бэкенда (если он отличается от бэкенда по умолчанию).
Возвращает
Массив с формой (size[0], size[1], channels). Если входное изображение было массивом NumPy, выходное значение также будет массивом NumPy; если входное изображение было тензором, нативным для бэкенда, выходное значение также будет тензором, нативным для бэкенда.

© 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/keras/preprocessing/image/smart_resize

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API