Библиотека ml5.js предоставляет удобный интерфейс для работы с моделями машинного обучения в браузере, упрощая интеграцию пользовательских моделей, созданных с помощью Google Teachable Machine. Процесс работы с такими моделями состоит из нескольких этапов: экспорт модели, подключение к проекту, загрузка модели и использование её для предсказаний.
Создание модели. В Teachable Machine создаются категории, загружаются изображения или аудио, и производится обучение. Каждая категория должна быть репрезентативной, чтобы повысить точность предсказаний.
Экспорт модели. После обучения нужно перейти в раздел «Export Model» и выбрать опцию TensorFlow.js. Teachable Machine создаёт папку с файлами модели:
model.json — конфигурация и структура сети.metadata.json — информация о классах и метаданных.weights.bin — веса нейронной сети.Размещение файлов. Для использования модели в веб-приложении необходимо разместить эти файлы на сервере или использовать статическую папку проекта.
Для работы с пользовательскими моделями необходимо подключить библиотеку ml5.js в HTML-документе:
<script src="https://cdnjs.cloudflare.com/ajax/libs/ml5/0.12.2/ml5.min.js"></script>
При использовании модульной структуры можно подключать ml5 через npm:
npm install ml5
ml5.js предоставляет объект
imageClassifier для классификации изображений. Загрузка
пользовательской модели осуществляется следующим образом:
let classifier;
function preload() {
const modelURL = 'path/to/your/model.json';
classifier = ml5.imageClassifier(modelURL);
}
modelURL — путь к файлу model.json.Особенности загрузки:
preload() используется для гарантии, что модель
будет полностью загружена перед использованием.После загрузки модели классификация производится методом
classify():
function classifyImage(imageElement) {
classifier.classify(imageElement, (error, results) => {
if (error) {
console.error(error);
return;
}
console.log(results);
});
}
imageElement может быть HTML-элементом
<img>, <video> или
<canvas>.
results — массив объектов, где каждый объект
содержит:
label — название категории,confidence — вероятность предсказания.Пример обработки результата:
results.forEach(result => {
console.log(`Категория: ${result.label}, Достоверность: ${(result.confidence * 100).toFixed(2)}%`);
});
Для динамической классификации можно использовать поток с камеры:
let video;
function setup() {
createCanvas(640, 480);
video = createCapture(VIDEO);
video.hide();
const modelURL = 'path/to/your/model.json';
classifier = ml5.imageClassifier(modelURL, video, modelReady);
}
function modelReady() {
classifyVideo();
}
function classifyVideo() {
classifier.classify(video, (error, results) => {
if (error) {
console.error(error);
return;
}
console.log(results[0].label, results[0].confidence);
classifyVideo(); // непрерывная классификация
});
}
classifyVideo() рекурсивно, чтобы
получить непрерывное предсказание.Teachable Machine позволяет экспортировать модели в разных форматах,
но ml5.js поддерживает только TensorFlow.js модели
(model.json + веса). При использовании других форматов
необходимо конвертировать их через TensorFlow.js конвертеры.
async/await позволяет
избежать вложенных callback-функций:async function classifyAsync(image) {
try {
const results = await classifier.classify(image);
console.log(results);
} catch (error) {
console.error(error);
}
}
requestAnimationFrame.Файл metadata.json содержит названия категорий, что
позволяет отображать их в интерфейсе приложения без ручного
прописывания. Доступ к метаданным:
console.log(classifier.model.labels);
Это особенно полезно при динамическом формировании элементов интерфейса для каждой категории.
model.json — путь к
файлу указан неверно.preload() или событие modelReady.Эта последовательность действий обеспечивает стабильное подключение и использование пользовательской модели из Teachable Machine в проекте на JavaScript с библиотекой ml5.js. Модель становится готовой к классификации изображений или потокового видео, а структура кода позволяет масштабировать проект и интегрировать результаты в визуальные интерфейсы.