ml5.js — это высокоуровневая библиотека на JavaScript, обеспечивающая доступ к современным методам машинного обучения через простые интерфейсы. Одним из ключевых преимуществ ml5.js является возможность использования заранее обученных моделей, включая модели, разработанные в TensorFlow и Keras. Для интеграции таких моделей требуется корректная конвертация и подготовка формата, совместимого с браузером.
Модели, созданные в TensorFlow (TF) или Keras, хранятся в двух основных форматах:
Для работы с ml5.js необходим формат TensorFlow.js, который представляет собой JSON-файл с весами, разделёнными на бинарные файлы.
Этапы подготовки:
Конвертация моделей осуществляется с помощью официального инструмента TensorFlow.js Converter. Он доступен как пакет npm:
npm install -g @tensorflow/tfjs-converter
Дополнительно рекомендуется установить TensorFlow для Python, если требуется конвертация из Keras:
pip install tensorflow
Для моделей Keras в формате .h5 процесс конвертации
состоит из нескольких шагов.
Пример команды для конвертации:
tensorflowjs_converter \
--input_format=keras \
model.h5 \
web_model/
--input_format=keras указывает исходный формат.model.h5 — путь к файлу модели.web_model/ — директория, куда будут сохранены файлы для
использования в ml5.js.После конвертации создаётся файл model.json и несколько
бинарных файлов весов (group1-shard1of1.bin и т.д.).
Особенности:
tf.layers.Для моделей TensorFlow SavedModel команда будет выглядеть так:
tensorflowjs_converter \
--input_format=tf_saved_model \
--output_format=tfjs_graph_model \
saved_model/ \
web_model/
--output_format=tfjs_graph_model генерирует формат
графа, оптимальный для inference в браузере.После конвертации модель становится доступной для использования в ml5.js через соответствующие классы:
Пример использования конвертированной модели Keras:
const options = {
task: 'classification',
debug: true
};
const classifier = ml5.neuralNetwork(options);
classifier.load('web_model/model.json', () => {
console.log('Модель успешно загружена');
});
После загрузки доступны методы classify(),
predict(), addData() и train()
для работы с данными в браузере.
Для эффективного использования в ml5.js необходимо учитывать ограничения браузерной среды:
tensorflowjs_converter \
--input_format=keras \
--quantize_float16 \
model.h5 \
web_model/
Поддержка операций — некоторые операции
TensorFlow не поддерживаются в TensorFlow.js, следует заранее проверить
граф модели с помощью tfjs-layers или
tfjs-converter.
Асинхронная загрузка — ml5.js загружает модели
асинхронно, поэтому вызовы к load() и
predict() должны учитывать промисы или колбэки.
После конвертации важно убедиться, что модель:
Для отладки можно использовать TensorFlow.js DevTools или включить
debug: true при создании экземпляра
ml5.neuralNetwork().
Для успешной конвертации следует синхронизировать версии TensorFlow/Keras с TensorFlow.js:
Этот процесс обеспечивает плавную интеграцию сложных моделей машинного обучения в веб-приложения, позволяя использовать возможности ml5.js для интерактивных проектов, визуализаций и браузерного обучения.