Как ответить
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 и протестировать на реальном устройстве.