ENIGMA AI
ENIGMA AI

Вы знакомы с архитектурой нейронных сетей MobileNet?

встречается 1× TensorFlow middle architecture

Как ответить

MobileNet — это семейство свёрточных нейросетей, оптимизированных для работы на устройствах с ограниченными ресурсами (мобильные телефоны, встраиваемые системы). Основная идея — заменить стандартные свёртки на depthwise separable свёртки, что резко снижает количество параметров и вычислений при минимальной потере точности.

В TensorFlow MobileNet доступны через tf.keras.applications. Например, загрузить предобученную на ImageNet модель можно одной строкой:

import tensorflow as tf

base_model = tf.keras.applications.MobileNetV2(
    input_shape=(224, 224, 3),
    include_top=False,
    weights='imagenet'
)

Ключевые особенности разных версий:

  • MobileNetV1 (2017): depthwise separable свёртки (depthwise + pointwise). Параметр alpha (ширина сети) управляет числом фильтров — от 0.25 до 1.0. Это позволяет балансировать между скоростью и точностью.
  • MobileNetV2 (2018): добавил inverted residuals (узкие -> широкие -> узкие слои) и linear bottlenecks. Это улучшило градиентный поток и точность при тех же вычислениях. Стал де-факто стандартом для мобильных задач.
  • MobileNetV3 (2019): использует Neural Architecture Search (NAS) и NetAdapt для поиска оптимальной структуры. Ввёл h-swish активацию и squeeze-and-excitation модули. Есть версии Large и Small под разные сценарии.

На практике для fine-tuning обычно замораживают базовую модель и добавляют сверху классификатор под свою задачу. Например, для бинарной классификации:

base_model.trainable = False

model = tf.keras.Sequential([
    base_model,
    tf.keras.layers.GlobalAveragePooling2D(),
    tf.keras.layers.Dense(1, activation='sigmoid')
])

model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

Важно помнить про разрешение входных изображений — MobileNet ожидает 224x224 (или 192, 160, 128 — зависит от версии). При использовании alpha < 1.0 модель становится легче, но точность падает — это trade-off, который нужно проверять на своих данных.

Из недостатков: глубинная свёртка плохо ложится на обычные GPU (из-за low arithmetic intensity), поэтому на десктопе MobileNet может работать не быстрее ResNet50, если не оптимизировать. Для продакшена на мобильных платформах стоит конвертировать модель в TFLite и протестировать на реальном устройстве.

Ключевые тезисы

  • MobileNet использует depthwise separable свёртки для снижения параметров и FLOPs в 8-9 раз по сравнению со стандартными свёртками.
  • Параметр alpha (ширина сети) позволяет регулировать количество фильтров от 0.25 до 1.0 — это главный рычаг настройки скорости/точности.
  • MobileNetV2 ввёл inverted residuals и linear bottlenecks, что улучшило точность при тех же вычислительных затратах.
  • В TensorFlow модели доступны через tf.keras.applications, легко адаптируются под свои задачи через transfer learning.
  • Для мобильного продакшена обязательна конвертация в TFLite и тестирование на целевых устройствах — из-за особенностей depthwise свёрток на GPU.

Что спросят дальше

  • — Как вы объясните разницу между MobileNetV2 и EfficientNet-Lite? В каком случае вы выберете одну архитектуру вместо другой?
  • — Допустим, ваша модель на MobileNetV2 показывает 85% accuracy, но на устройстве работает слишком медленно. Какие шаги предпримете для ускорения без сильной потери качества?
  • — Расскажите про inverted residual block — зачем нужен узкий вход и выход, а расширение внутри? Как это связано с ReLU6 и линейными узкими слоями?

Готовьтесь к собеседованию с ENIGMA AI

AI-суфлёр подсказывает ответы прямо на собеседовании в реальном времени — незаметно для интервьюера.

Скачать приложение