Keras.js представляет собой библиотеку для выполнения предварительно обученных моделей Keras непосредственно в браузере с использованием JavaScript. Она обеспечивает возможность работы с нейронными сетями без необходимости задействовать серверную часть или Python-окружение, что делает её особенно полезной для приложений, требующих мгновенной обратной связи, таких как распознавание изображений или интерактивные веб-интерфейсы.
Модель Keras сохраняется в формате JSON с отдельными бинарными файлами весов. Keras.js поддерживает большинство слоёв Keras, включая свёрточные, полностью связанные, нормализацию и активаторы, а также специальные архитектуры вроде MobileNet, оптимизированные для мобильных устройств.
Депс-сепарабельная свёртка (Depthwise Separable Convolution) — это ключевой элемент легковесных архитектур, таких как MobileNet. Она состоит из двух этапов:
Depthwise Convolution Каждое входное канальное изображение свёртывается отдельно с собственным фильтром. Такой подход снижает количество вычислений, так как фильтры применяются к каждому каналу отдельно, а не ко всем одновременно.
Pointwise Convolution (1×1 Convolution) На выходе depthwise-конволюции применяется свёртка 1×1 для объединения каналов и получения нового набора признаков. Это позволяет модели обучать комбинации каналов без большой нагрузки на вычисления.
Преимущества:
Пример расчёта сокращения параметров:
Для стандартной свёртки с входным размером (H W M) и N фильтров размером (K K):
[ = K K M N]
Для депс-сепарабельной свёртки:
[ = K K M] [ = 1 M N = M N]
Итого:
[ = K^2 M + M N]
Для типичных размеров фильтров 3×3 сокращение может достигать 8–9 раз.
MobileNet — архитектура, специально разработанная для устройств с ограниченными вычислительными ресурсами. Основная идея — использование депс-сепарабельных свёрток для снижения количества параметров при сохранении высокой точности.
Базовый блок
Последовательность блоков Архитектура строится из повторяющихся блоков с постепенным увеличением числа каналов и уменьшением пространственного разрешения.
Финальные слои После последовательности блоков добавляется глобальный average pooling и полностью связанный слой для классификации.
Keras.js позволяет загружать и использовать MobileNet в браузере. Основные шаги:
const KerasJS = require('keras-js');
const model = new KerasJS.Model({
filepath: 'mobilenet-model/model.json',
gpu: true
});
await model.ready();
[1, 224, 224, 3] для MobileNet).const inputData = new Float32Array(224 * 224 * 3);
// заполнение inputData пикселями изображения
const input = { input_1: inputData };
const output = await model.predict(input);
console.log(output.output_1);
При интеграции MobileNet через Keras.js обычно выделяют следующие слои:
Frontend
Модуль Keras.js
Обработка результатов
Эта архитектура позволяет добиться почти мгновенного распознавания без обращения к серверу и снижает задержки в интерактивных приложениях.