VGG (Visual Geometry Group) — это семейство сверточных нейронных сетей, разработанных для задач распознавания изображений. Основная особенность архитектуры заключается в использовании последовательных сверточных слоев с маленькими фильтрами размером 3×3 и постоянным увеличением глубины сети при сохранении структуры. VGG доказала высокую точность на ImageNet, что делает её популярной для переносного обучения и экспериментов в браузере с Keras.js.
Последовательность сверточных блоков
Увеличение глубины сети
Полносвязные слои в конце
Keras.js позволяет запускать модели, обученные в Python Keras, непосредственно в браузере с использованием WebGL для ускорения вычислений. Модель VGG необходимо сначала экспортировать в формат JSON с весами в бинарных файлах.
from keras.applications import VGG16
model = VGG16(weights='imagenet')
model.save('vgg16.h5')
kerasjs-converter vgg16.h5 vgg16_kerasjs_model/
После конвертации появляется каталог с файлом model.json
и бинарными файлами весов, готовый для использования в браузере.
const KerasJS = require('keras-js');
const model = new KerasJS.Model({
filepaths: {
model: 'vgg16_kerasjs_model/model.json',
weights: 'vgg16_kerasjs_model/weights.buf'
},
gpu: true
});
await model.ready();
float32.[0, 1] или по формуле x/255.0.function preprocessImage(image) {
// image — HTMLImageElement
const canvas = document.createElement('canvas');
canvas.width = 224;
canvas.height = 224;
const ctx = canvas.getContext('2d');
ctx.drawImage(image, 0, 0, 224, 224);
const imgData = 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] = imgData[i * 4 + 0] / 255;
data[i * 3 + 1] = imgData[i * 4 + 1] / 255;
data[i * 3 + 2] = imgData[i * 4 + 2] / 255;
}
return data;
}
const inputData = preprocessImage(image);
const outputData = await model.predict({ input_1: inputData });
console.log('Распознанный класс:', outputData);
Архитектура VGG в Keras.js обеспечивает мощный инструмент для веб-разработчиков, позволяя интегрировать сложные нейронные сети прямо в браузер без необходимости серверного выполнения. Основная ценность заключается в простоте структуры слоев и высоком качестве извлекаемых признаков.