Библиотека ml5.js предоставляет высокоуровневый интерфейс для работы с машинным обучением в браузере. Она построена на основе TensorFlow.js и ориентирована на простое подключение готовых моделей, обучение собственных и выполнение задач анализа данных и генерации контента. Основные типы задач, с которыми работает ml5.js, можно разделить на три категории: классификация, регрессия и генерация. Каждая из них имеет свои особенности и методы реализации.
Классификация — это задача предсказания
категориальной метки на основе входных данных. В ml5.js она реализуется
через несколько моделей и интерфейсов, например,
imageClassifier, soundClassifier и
featureExtractor.
Image Classification Используется для распознавания изображений. Модель обучается или загружается предобученной (например, MobileNet, Coco-SSD). Пример создания классификатора изображений:
const classifier = ml5.imageClassifier('MobileNet', modelReady);
function modelReady() {
console.log('Модель загружена');
}
function classifyImage(img) {
classifier.classify(img, (err, results) => {
if (err) {
console.error(err);
return;
}
console.log(results);
});
}
Здесь results содержит массив объектов с меткой
label и вероятностью confidence.
Sound Classification Применяется для
распознавания звуков с микрофона. Использует модели, такие как
SpeechCommands. Пример:
const soundClassifier = ml5.soundClassifier('SpeechCommands18w', modelReady);
function modelReady() {
soundClassifier.classify((err, results) => {
if (err) console.error(err);
console.log(results);
});
}Особенности
featureExtractor.Регрессия — задача предсказания числового значения
на основе входных данных. В ml5.js реализуется через
NeuralNetwork с настройкой типа
regression.
Создание модели регрессии
const options = {
task: 'regression',
debug: true
};
const nn = ml5.neuralNetwork(options);Добавление данных Для обучения модели данные
добавляются в формате {input: {...}, output: {...}}.
Например, предсказание температуры по влажности:
nn.addData({humidity: 70}, {temperature: 22});
nn.addData({humidity: 50}, {temperature: 18});Обучение модели
nn.normalizeData();
nn.train({epochs: 50}, finishedTraining);
function finishedTraining() {
nn.predict({humidity: 60}, (err, results) => {
console.log(results);
});
}Особенности
Генерация — задача создания нового контента на основе обученной модели. ml5.js поддерживает генерацию текста, музыки и изображений.
Text Generation Использует рекуррентные нейронные сети (LSTM) для генерации текста на основе обученного корпуса. Пример:
const charRNN = ml5.charRNN('models/anna', modelReady);
function modelReady() {
const data = {
seed: 'Once upon a time',
length: 100
};
charRNN.generate(data, (err, result) => {
console.log(result.sample);
});
}Music Generation Использует модель
musicRNN для создания мелодий. Пример генерации MIDI
последовательности:
const musicRNN = ml5.musicRNN('models/basic_rnn', modelReady);
function modelReady() {
const seed = {
notes: [{pitch: 60, startTime: 0, duration: 0.5}],
totalTime: 1
};
musicRNN.generate(seed, 20, (err, result) => {
console.log(result);
});
}Особенности генерации
featureExtractor позволяет использовать мощные
предобученные модели как основу для классификации и
регрессии, ускоряя обучение и повышая точность. Пример:
const featureExtractor = ml5.featureExtractor('MobileNet', modelReady);
const classifier = featureExtractor.classification();
function modelReady() {
classifier.addImage(img, 'cat');
classifier.train({epochs: 20}, finishedTraining);
}
ml5.js предлагает мощный, но простой инструмент для работы с основными типами задач машинного обучения. Классификация, регрессия и генерация обеспечивают широкие возможности для анализа, предсказаний и творческой генерации контента прямо в браузере. Их комбинация через featureExtractor делает библиотеку гибкой и эффективной в реальных проектах.