Spec-Zone.ru › TensorFlow

tf.nn.atrous_conv2d

Атрусная свёртка (также называемая свёрткой с отверстиями или дилатированной свёрткой).

Посмотреть псевдонимы

Псевдонимы совместимости для миграции

Подробнее см. в руководстве по миграции.

tf.compat.v1.nn.atrous_conv2d

tf.nn.atrous_conv2d(
    value, filters, rate, padding, name=None
)

Эта функция представляет собой более простую оболочку для более универсальной функции tf.nn.convolution и существует только для обратной совместимости. Вы можете использовать tf.nn.convolution для выполнения атрусной свёртки размерности 1, 2 или 3.

Вычисляет двумерную атрусную свёртку, также известную как свёртка с отверстиями или дилатированная свёртка, для тензоров value и filters размерности 4. Если параметр rate равен единице, выполняется обычная двумерная свёртка. Если параметр rate больше единицы, выполняется свёртка с отверстиями, при которой входные значения выбираются через каждые rate пикселей по измерениям height и width. Это эквивалентно свёртке входных данных с набором увеличенных фильтров, полученных вставкой rate - 1 нулей между соседними значениями фильтров по измерениям height и width, отсюда и название «атрусная свёртка» или «свёртка с отверстиями» (французское слово trous означает «отверстия»).

Точнее:

output[batch, height, width, out_channel] =
    sum_{dheight, dwidth, in_channel} (
        filters[dheight, dwidth, in_channel, out_channel] *
        value[batch, height + rate*dheight, width + rate*dwidth, in_channel]
    )

Атрусная свёртка позволяет явно управлять плотностью вычисления откликов признаков в полностью свёрточных сетях. В сочетании с билинейной интерполяцией она предлагает альтернативу conv2d_transpose в задачах плотного предсказания, таких как семантическая сегментация изображений, вычисление оптического потока или оценка глубины. Она также позволяет эффективно увеличивать поле зрения фильтров без увеличения числа параметров или объёма вычислений.

Описание атрусной свёртки и её применения для плотного извлечения признаков см. в работе (Chen et al., 2015). Эта же операция подробнее исследуется в работе (Yu et al., 2016). Среди других более ранних работ, в которых атрусная свёртка эффективно применяется различными способами, — (Sermanet et al., 2014) и (Giusti et al., 2013). Атрусная свёртка также тесно связана с так называемыми тождествами Нобла в многоскоростной обработке сигналов.

Существует множество способов реализации атрусной свёртки (см. приведённые выше ссылки). Приведённая здесь реализация сводит

atrous_conv2d(value, filters, rate, padding=padding)

к следующим трём операциям:

paddings = ...
net = space_to_batch(value, paddings, block_size=rate)
net = conv2d(net, filters, strides=[1, 1, 1, 1], padding="VALID")
crops = ...
net = batch_to_space(net, crops, block_size=rate)

Расширенное использование. Обратите внимание на следующую оптимизацию: последовательность операций atrous_conv2d с одинаковыми параметрами rate, дополнением 'SAME' padding и фильтрами нечётной высоты/ширины:

net = atrous_conv2d(net, filters1, rate, padding="SAME")
net = atrous_conv2d(net, filters2, rate, padding="SAME")
...
net = atrous_conv2d(net, filtersK, rate, padding="SAME")

можно эквивалентно выполнить с меньшими затратами вычислений и памяти следующим образом:

pad = ...  # padding so that the input dims are multiples of rate
net = space_to_batch(net, paddings=pad, block_size=rate)
net = conv2d(net, filters1, strides=[1, 1, 1, 1], padding="SAME")
net = conv2d(net, filters2, strides=[1, 1, 1, 1], padding="SAME")
...
net = conv2d(net, filtersK, strides=[1, 1, 1, 1], padding="SAME")
net = batch_to_space(net, crops=pad, block_size=rate)

поскольку пара последовательных операций space_to_batch и batch_to_space с одинаковым block_size взаимно сокращается, если их входные данные paddings и crops идентичны.

Аргументы
value Тензор Tensor размерности 4 типа float. Он должен иметь формат по умолчанию «NHWC». Его форма: [batch, in_height, in_width, in_channels].
filters Тензор Tensor размерности 4 того же типа, что и value, и формы [filter_height, filter_width, in_channels, out_channels]. Размерность filters' in_channels должна совпадать с размерностью value. Атрусная свёртка эквивалентна стандартной свёртке с увеличенными фильтрами эффективной высоты filter_height + (filter_height - 1) * (rate - 1) и эффективной ширины filter_width + (filter_width - 1) * (rate - 1), полученными вставкой rate - 1 нулей между соседними элементами пространственных измерений filters'.
rate Положительное значение int32. Шаг, с которым выбираются входные значения по измерениям height и width. Иными словами, коэффициент увеличения значений фильтра путём вставки нулей по измерениям height и width. В литературе этот параметр также иногда называется input stride или dilation.
padding Строка: либо 'VALID', либо 'SAME'. Алгоритм дополнения. Подробнее см. здесь.
name Необязательное имя возвращаемого тензора.
Возвращает
Объект Tensor того же типа, что и value. Форма результата при дополнении 'VALID':
[batch, height - rate * (filter_width - 1),
 width - rate * (filter_height - 1), out_channels].

Форма результата при дополнении 'SAME':

[batch, height, width, out_channels].
Вызывает исключение
ValueError Если глубина входных/выходных данных не совпадает с формой filters' или если дополнение отличается от 'VALID' или 'SAME'.
Источники
Многоуровневая агрегация контекста с помощью дилатированных свёрток: Yu et al., 2016 (pdf) Семантическая сегментация изображений с помощью глубоких свёрточных сетей и полностью связанных CRF: Chen et al., 2015 (pdf) OverFeat — интегрированное распознавание, локализация и обнаружение с помощью свёрточных сетей: Sermanet et al., 2014 (pdf) Быстрое сканирование изображений с помощью глубоких свёрточных нейронных сетей с максимальным пулингом: Giusti et al., 2013 (pdf)

© 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/nn/atrous_conv2d

Spec-Zone.ru

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