Библиотека ml5.js предоставляет удобный интерфейс
для работы с моделями машинного обучения на JavaScript, включая задачи
классификации изображений, звуков и текста. Метод
classify используется для предсказания
класса или категории нового примера на основе уже обученной модели.
Для классификации требуется предварительно загрузить модель. В ml5.js поддерживаются предобученные модели, такие как MobileNet, Teachable Machine и другие. Загрузка модели выполняется асинхронно:
let classifier;
ml5.imageClassifier('MobileNet')
.then(loadedClassifier => {
classifier = loadedClassifier;
console.log('Модель загружена');
});
Ключевой момент: imageClassifier
возвращает объект, на котором доступен метод classify.
classifyМетод classify принимает два основных типа
аргументов:
Пример классификации изображения с функцией обратного вызова:
classifier.classify(document.getElementById('myImage'), (error, results) => {
if (error) {
console.error(error);
} else {
console.log(results);
}
});
Результат results представляет собой
массив объектов с ключами:
label — название класса, к которому модель относит
объект.confidence — вероятность (от 0 до 1), показывающая
уверенность модели в предсказании.Пример обработки результата:
results.forEach(result => {
console.log(`${result.label}: ${(result.confidence * 100).toFixed(2)}%`);
});
classify с промисамиСовременный подход — использование промисов для работы с асинхронными методами:
async function classifyImage(imageElement) {
try {
const results = await classifier.classify(imageElement);
results.forEach(result => {
console.log(`${result.label}: ${(result.confidence * 100).toFixed(2)}%`);
});
} catch (error) {
console.error(error);
}
}
Преимущество промисов в том, что код становится более
последовательным и легко интегрируется с async/await.
ml5.js позволяет классифицировать не только статические изображения,
но и потоковое видео. Для этого используется объект video
из библиотеки p5.js или стандартного HTML:
let video;
video = createCapture(VIDEO);
video.size(320, 240);
video.hide();
classifier.classify(video, (error, results) => {
if (error) {
console.error(error);
} else {
console.log(results[0].label, results[0].confidence);
}
});
При этом классификация выполняется многократно в реальном времени, что позволяет создавать интерактивные приложения, например, для распознавания жестов или эмоций.
Для работы с собственными наборами данных используется Teachable Machine или аналогичные инструменты. После тренировки модели экспортируется JSON-файл, который можно загрузить в ml5.js:
ml5.imageClassifier('model.json')
.then(classifier => {
return classifier.classify(document.getElementById('customImage'));
})
.then(results => {
console.log(results);
});
Ключевой аспект работы с classify — обработка ошибок.
Метод может возвращать ошибку при:
Рекомендуется всегда проверять наличие модели и корректность входного
объекта перед вызовом classify.
Некоторые версии ml5.js позволяют указывать дополнительные опции:
topk — количество предсказаний, которые следует
вернуть.minConfidence — минимальная вероятность, при которой
результат считается допустимым.Пример использования опций:
classifier.classify(imageElement, { topk: 3 }, (error, results) => {
if (!error) {
results.forEach(r => console.log(`${r.label}: ${r.confidence}`));
}
});
classifyclassify с обратным вызовом или через
промисы.Метод classify в ml5.js является основным инструментом
для получения предсказаний на новых данных и позволяет строить
интерактивные приложения машинного обучения на фронтенде без сложной
настройки инфраструктуры.