Помогают защитить Большой Барьерный Риф с TensorFlow на Kaggle Присоединяйтесь вызов

Общие подписи для изображений

На этой странице описаны общие сигнатуры , которые должны быть реализованы с помощью модулей в формате TF1 Hub для выполнения задач связанных с изображением. (Для формата TF2 SavedModel см аналогичный SavedModel API .)

Некоторые модули могут использоваться более чем для одной задачи (например, модули классификации изображений, как правило, в процессе извлекают некоторые признаки). Таким образом, каждый модуль обеспечивает (1) , названные подписи для всех задач , ожидаемых от издателя, и (2) подпись по умолчанию output = m(images) для назначенной основной задачи.

Вектор функции изображения

Сводка использования

Вектор признаков изображения является плотным тензором 1-D , который представляет собой целое изображение, как правило , для классификации по модели потребителя. ( В отличии от промежуточных активаций CNNs, он не предлагает пространственную разбивку. В отличии от классификации изображений , он отбрасывает классификацию выученной модели издателя.)

Модуль для извлечения признаков изображения имеет подпись по умолчанию, которая сопоставляет пакет изображений с пакетом векторов признаков. Его можно использовать так:

  module_spec = hub.load_module_spec("path/to/module")
  height, width = hub.get_expected_image_size(module_spec)
  images = ...  # A batch of images with shape [batch_size, height, width, 3].
  module = hub.Module(module_spec)
  features = module(images)   # A batch with shape [batch_size, num_features].

Он также определяет соответствующую именованную подпись.

Спецификация подписи

Именованная подпись для извлечения векторов признаков изображения вызывается как

  outputs = module(dict(images=images), signature="image_feature_vector",
                   as_dict=True)
  features = outputs["default"]

Вход следует общей конвенции для ввода изображений .

Выходы словарь содержит "default" по float32 [batch_size, num_features] "default" выход DTYPE float32 и форма [batch_size, num_features] . batch_size такого же , как на входе, но не известно , во время графика строительства. num_features является известным, модулем конкретного постоянная независимо от входного размера.

Эти векторы функций предназначены для использования для классификации с помощью простого классификатора с прямой связью (например, объединенные функции из самого верхнего сверточного слоя в типичной CNN для классификации изображений).

Применение исключения к функциям вывода (или нет) должно быть оставлено на усмотрение потребителя модуля. Сам модуль не должен выполнять отключение на фактических выходах (даже если он использует внутреннее отключение в других местах).

Словарь выходов может предоставлять дополнительные выходы, например, активации скрытых слоев внутри модуля. Их ключи и значения зависят от модуля. Рекомендуется префиксов , зависящие от архитектуры ключей с именем архитектуры (например, чтобы избежать путаницы промежуточный слой "InceptionV3/Mixed_5c" с самым верхним слоем сверточного "InceptionV2/Mixed_5c" ).

Классификация изображений

Сводка использования

Классификация изображения отображает пиксели изображения на линейные баллы (логит) для членства в классах систематики , выбранный модуль издатель. Это позволяет потребителям сделать выводы из конкретной классификации узнала модуль издателя, а не только его основные характеристики (см Image характеристического вектор ).

Модуль для извлечения признаков изображения имеет подпись по умолчанию, которая сопоставляет пакет изображений с пакетом журналов. Его можно использовать так:

  module_spec = hub.load_module_spec("path/to/module")
  height, width = hub.get_expected_image_size(module_spec)
  images = ...  # A batch of images with shape [batch_size, height, width, 3].
  module = hub.Module(module_spec)
  logits = module(images)   # A batch with shape [batch_size, num_classes].

Он также определяет соответствующую именованную подпись.

Спецификация подписи

Именованная подпись для извлечения векторов признаков изображения вызывается как

  outputs = module(dict(images=images), signature="image_classification",
                   as_dict=True)
  logits = outputs["default"]

Вход следует общей конвенции для ввода изображений .

Выходы словарь содержит "default" по float32 [batch_size, num_classes] "default" выход DTYPE float32 и форма [batch_size, num_classes] . batch_size такого же , как на входе, но не известно , во время графика строительства. num_classes это число классов в классификации, которая является известной константой , не зависящей от размера входного сигнала.

Оценка outputs["default"][i, c] по i c outputs["default"][i, c] дает оценку , предсказывающий членство Например i в классе с индексом c .

Это зависит от базовой классификации, предназначены ли эти оценки для использования с softmax (для взаимоисключающих классов), сигмоидой (для ортогональных классов) или чем-то еще. Документация модуля должна описывать это и ссылаться на определение индексов классов.

Словарь выходов может предоставлять дополнительные выходы, например, активации скрытых слоев внутри модуля. Их ключи и значения зависят от модуля. Рекомендуется префиксов , зависящие от архитектуры ключей с именем архитектуры (например, чтобы избежать путаницы промежуточный слой "InceptionV3/Mixed_5c" с самым верхним слоем сверточного "InceptionV2/Mixed_5c" ).

Ввод изображения

Это характерно для всех типов модулей изображений и подписей изображений.

Подпись , которая принимает пакет изображений в качестве входных данных принимает их в качестве плотного тензора 4-D из DTYPE float32 и форма [batch_size, height, width, 3] , элементы которого RGB цветовые значения пикселов нормированы на интервале [0, 1] . Это то , что вы получаете от tf.image.decode_*() с последующим tf.image.convert_image_dtype(..., tf.float32) .

Модуль ровно один (или один основной) ввода изображений использует имя "images" для этого входа.

Модуль принимает любой batch_size , и , соответственно , устанавливает первый размер TensorInfo.tensor_shape к «неизвестному». Последнее измерение фиксируется к числу 3 каналов RGB. height и width размеры прикреплены к ожидаемому размеру входных изображений. (В будущих работах это ограничение может быть снято для полностью сверточных модулей.)

Потребители модуля не должны проверять форму напрямую, но получают информацию о размере, вызывая hub.get_expected_image_size () в модуле или спецификации модуля, и, как ожидается, изменят размер входных изображений соответствующим образом (обычно до / во время пакетной обработки).

Для простоты, модули TF-концентратор использовать channels_last (или NHWC ) расположение тензоров, и оставить его на графике оптимизатор TensorFlow для перезаписи данных на channels_first (или NCHW ) , если это необходимо. Он делает это по умолчанию, начиная с версии 1.7 TensorFlow.