Keras.js представляет собой библиотеку для выполнения предварительно обученных моделей Keras прямо в браузере с использованием WebGL. Она позволяет работать с нейронными сетями без необходимости серверной обработки, обеспечивая низкую задержку и возможность интерактивной визуализации. Основные компоненты работы с Keras.js включают загрузку модели, подготовку данных и выполнение предсказаний.
Модель, созданная в Keras (Python), экспортируется в формат JSON и веса в бинарный формат, которые затем подгружаются через Keras.js. Формат JSON содержит архитектуру сети, список слоёв, их параметры и функции активации. Бинарные веса соответствуют значениям весов слоёв, сохранённым в Keras.
Пример загрузки модели выглядит следующим образом:
const KerasJS = require('keras-js');
const model = new KerasJS.Model({
filepaths: {
model: 'model.json',
weights: 'model_weights.buf',
metadata: 'model_metadata.json'
},
gpu: true
});
Флаг gpu: true активирует выполнение модели на
графическом процессоре через WebGL, что критически важно для обработки
больших изображений или видео в реальном времени.
Шумоподавляющий автоэнкодер (Denoising Autoencoder) — разновидность автоэнкодеров, цель которых восстановление исходного сигнала из зашумлённого входа. Структура сети включает:
sigmoid для нормализованных данных.Основная идея шумоподавляющего автоэнкодера — обучение сети выделять значимые признаки данных и игнорировать шум, что достигается путём добавления случайного шума к входным данным при обучении.
Перед подачей изображений в Keras.js требуется преобразовать их в
формат, совместимый с массивами Float32Array. Для этого
изображение нормализуется и, при необходимости, изменяется размер:
function preprocessImage(img, width, height) {
const canvas = document.createElement('canvas');
canvas.width = width;
canvas.height = height;
const ctx = canvas.getContext('2d');
ctx.drawImage(img, 0, 0, width, height);
const imageData = ctx.getImageData(0, 0, width, height).data;
const floatData = new Float32Array(width * height * 3);
for (let i = 0; i < width * height; i++) {
floatData[i * 3] = imageData[i * 4] / 255.0;
floatData[i * 3 + 1] = imageData[i * 4 + 1] / 255.0;
floatData[i * 3 + 2] = imageData[i * 4 + 2] / 255.0;
}
return floatData;
}
Такой подход обеспечивает совместимость с моделями, обученными на нормализованных данных.
После загрузки модели и подготовки данных выполняется предсказание:
const inputData = preprocessImage(imgElement, 128, 128);
model.ready().then(() => {
model.predict({ input: inputData }).then(outputData => {
const outputImage = postprocessOutput(outputData, 128, 128);
document.body.appendChild(outputImage);
});
});
Метод postprocessOutput преобразует массив предсказаний
обратно в изображение. Обычно значения умножаются на 255 и формируются
ImageData объекты для отображения на Canvas.
gpu: true существенно ускоряет вычисления
на больших изображениях.Использование Keras.js позволяет переносить сложные модели шумоподавления прямо в веб-приложения, обеспечивая интерактивное восстановление изображений без серверных вычислений и значительных задержек.