Читать полную версию документа можно здесь: http://arxiv.org/abs/1704.04861

Прошло шесть месяцев или около того с тех пор, как эта статья вышла из Google. Поздно на вечеринку, но лучше поздно, чем никогда! Прямо к делу — фундаментальное различие между обычной архитектурой Convolution Networks и MobileNets заключается в том, что для обучения требуется гораздо меньшее количество параметров, и поэтому она более эффективна, чем обычные CNN. Эффективность имеет компромисс с точностью: подойдет ли эта архитектура для вашего варианта использования? На вопрос, на который лучше всего отвечать, исходя из специфики проблемы, которую вы пытаетесь решить. На данный момент я бы рассматривал эту архитектуру как инструмент в моем наборе инструментов.

Обзор

Фундаментальный подход MobileNets основан на:

  • концепция под названием разделяемые по глубине свертки, и
  • Два глобальных гиперпараметра, которые можно использовать для достижения желаемого баланса между задержкой и точностью.

Важное напоминание здесь: мы говорим не о графических процессорах, а о мобильных устройствах как о нашей цели для выполнения классификации действий Vision ML, распознавания лиц, обнаружения объектов и т. д., и, следовательно, обсуждение компромиссов является важным.

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

Архитектура

Архитектура основана на разделяемых по глубине фильтрах. В традиционных моделях сверточный фильтр применяется на всю глубину. В случае цветных изображений есть три канала — красный (R), зеленый (G) и синий (B). Фильтры применяются ко всем каналам. В MobileNet фильтры применяются на конкретном канале. Затем вторым шагом является точечная свертка, свертка 1x1 для объединения выходных данных сверток по глубине. Итак, один слой для фильтрации (на канал) и один слой для объединения.

Стандартные свертки имеют вычислительную стоимость:

где вычислительная стоимость мультипликативно зависит от количества входных каналов M, количества выходных каналов N, размера ядра Dk × Dk и размера карты признаков Df × Df.

Вычислительная стоимость глубоких сверток MobileNets составляет:

Первая часть перед «+» предназначена для глубинной фильтрации, а вторая — для линейной комбинации глубинных фильтров.

Другими словами -

MobileNet использует разделяемые по глубине свертки 3 × 3, которые требуют от 8 до 9 раз меньше вычислений, чем стандартные свертки, лишь с небольшим снижением точности.

Глобальные гиперпараметры

Два гиперпараметра для настройки: альфа и множитель разрешения.

альфа: определяет, какая часть архитектуры MobileNets будет использоваться. Из Документации Кераса:

альфа: определяет ширину сети.

— Если `alpha` ‹ 1.0, пропорционально уменьшается количество фильтров в каждом слое.

— Если `alpha` 1.0, пропорционально увеличивается количество фильтров в каждом слое.

— Если `alpha` = 1, на каждом слое по умолчанию используется количество фильтров из бумаги.

depth_multiplier: количество выходных каналов свертки по глубине для каждого входного канала. Также известен как множитель разрешения

Вывод

Я, например, хотел бы поиграть с этой архитектурой и посмотреть, как работают мои текущие модели на основе CNN. Приятно видеть, что Keras, мой нынешний любимый фреймворк, поддерживает эту архитектуру в своем модуле приложений. Зачем ждать?

Прежде чем закрыть, приведу пару хороших статей по теме с использованием Tensorflow:





Полный текст статьи читайте здесь: http://arxiv.org/abs/1704.04861

Первоначально опубликовано на https://suryas.org 11 октября 2017 г.