Библиотека ml5.js построена поверх TensorFlow.js, что обеспечивает доступ к современным методам машинного обучения прямо в браузере или в среде Node.js. TensorFlow.js предоставляет низкоуровневые инструменты для работы с тензорами, оптимизации моделей и выполнения вычислений на GPU, тогда как ml5.js выступает как высокоуровневая оболочка, упрощая взаимодействие с этими возможностями.
ml5.js реализует интерфейсы для:
Все эти возможности достигаются благодаря TensorFlow.js, который обрабатывает:
ml5.js использует модели, сохранённые в формате TensorFlow.js
(.json + бинарные веса), что позволяет:
Пример загрузки модели классификации изображений и получения предсказания:
const classifier = ml5.imageClassifier('MobileNet', modelLoaded);
function modelLoaded() {
classifier.classify(document.getElementById('inputImage'), (err, results) => {
if (err) {
console.error(err);
} else {
console.log(results);
}
});
}
В данном случае ml5.imageClassifier использует
TensorFlow.js для выполнения всех операций с тензорами
и вычислений на GPU или CPU.
ml5.js предоставляет высокоуровневый API для обучения нейронных сетей в браузере. Основные этапы:
NeuralNetwork).Пример создания модели для регрессии:
const options = {
task: 'regression',
debug: true
};
const nn = ml5.neuralNetwork(options);
nn.addData({ x: 1 }, { y: 2 });
nn.addData({ x: 2 }, { y: 4 });
nn.normalizeData();
nn.train({ epochs: 50 }, finishedTraining);
function finishedTraining() {
nn.predict({ x: 3 }, (err, results) => {
console.log(results);
});
}
Внутри ml5.neuralNetwork TensorFlow.js создаёт
вычислительный граф, управляет тензорами и вычисляет градиенты для
обновления весов сети.
Хотя ml5.js скрывает большинство деталей работы с тензорами, их понимание необходимо для продвинутой настройки моделей. TensorFlow.js позволяет:
tf.tensor([1, 2, 3]).ml5.js абстрагирует эти операции, но при необходимости можно комбинировать API: например, использовать пользовательские тензоры для генерации изображений и затем подавать их в ml5-модель для классификации.
TensorFlow.js обеспечивает поддержку работы с HTML-элементами:
<video> и <canvas> – передача
данных из видеопотока в тензоры.ml5.js использует эти возможности для создания интерактивных проектов: распознавания жестов, трекинга лица, генерации музыки и текста в реальном времени.
Использование ml5.js позволяет сосредоточиться на логике приложения и экспериментировании с моделями, при этом опираясь на мощный фундамент TensorFlow.js для эффективных вычислений и обучения.