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