Keras.js представляет собой библиотеку для выполнения предварительно обученных моделей Keras непосредственно в браузере на JavaScript с использованием WebGL для ускорения вычислений на GPU. Она позволяет интегрировать нейронные сети в веб-приложения без необходимости серверной части, что обеспечивает автономность работы и уменьшает задержки при обработке данных.
Ключевые особенности:
Модели Keras.js хранятся в двух файлах: model.json и
набор бинарных файлов весов. Для их использования создаётся объект
KerasJS.Model, которому передаются следующие параметры:
const model = new KerasJS.Model({
filepaths: {
model: 'model.json',
weights: 'weights.buf'
},
gpu: true
});
Пояснения:
filepaths.model — путь к JSON-файлу модели.filepaths.weights — путь к бинарным весам.gpu: true — использование WebGL для ускорения. Если GPU
недоступен, происходит автоматический переход на CPU.После создания объекта необходимо вызвать метод
model.ready() для асинхронной подготовки модели к
использованию.
Keras.js ожидает данные в формате TypedArray
(Float32Array для чисел с плавающей точкой). Для работы с
изображениями необходимо конвертировать их в массив чисел и
нормализовать:
function preprocessImage(imgElement) {
const canvas = document.createElement('canvas');
canvas.width = 224;
canvas.height = 224;
const ctx = canvas.getContext('2d');
ctx.drawImage(imgElement, 0, 0, 224, 224);
const imageData = ctx.getImageData(0, 0, 224, 224).data;
const data = new Float32Array(224 * 224 * 3);
for (let i = 0; i < 224 * 224; i++) {
data[i * 3 + 0] = imageData[i * 4 + 0] / 255;
data[i * 3 + 1] = imageData[i * 4 + 1] / 255;
data[i * 3 + 2] = imageData[i * 4 + 2] / 255;
}
return data;
}
Особенности подготовки:
После подготовки входного массива вызов предсказания выполняется
методом model.predict():
const inputData = { input_1: preprocessImage(imgElement) };
model.predict(inputData)
.then(outputData => {
console.log('Результат предсказания:', outputData);
})
.catch(err => {
console.error('Ошибка при предсказании:', err);
});
Особенности работы:
Promise, что обеспечивает
асинхронность и не блокирует основной поток браузера.Для выявления проблем при работе с Keras.js используются стандартные инструменты разработчика:
Консоль Вывод ошибок и предупреждений через
console.error и console.log. Полезно проверять
состояние загруженной модели и размеры входных данных.
Network Tab Проверка успешной загрузки
JSON-файла модели и бинарных весов. Ошибки сети часто проявляются в виде
404 или CORS-ошибок.
Performance Tab Оценка времени выполнения предсказаний, особенно при работе с WebGL. Позволяет выявлять узкие места в вычислениях и оптимизировать производительность.
WebGL Debugging Проверка использования GPU через вкладку WebGL или сторонние расширения. Позволяет убедиться, что вычисления действительно ускоряются графическим процессором.
KerasJS.Model можно кэшировать.Типичные ошибки и их решения:
Model is not ready — модель ещё не завершила загрузку.
Необходимо дождаться model.ready().Input size mismatch — размеры входного массива не
соответствуют ожидаемым слоям модели.WebGL context lost — перегрузка GPU, рекомендуется
переход на CPU или уменьшение размера входного изображения.Keras.js может использоваться совместно с: