Классификация новых примеров: classify

Библиотека ml5.js предоставляет удобный интерфейс для работы с моделями машинного обучения на JavaScript, включая задачи классификации изображений, звуков и текста. Метод classify используется для предсказания класса или категории нового примера на основе уже обученной модели.

Инициализация модели

Для классификации требуется предварительно загрузить модель. В ml5.js поддерживаются предобученные модели, такие как MobileNet, Teachable Machine и другие. Загрузка модели выполняется асинхронно:

let classifier;

ml5.imageClassifier('MobileNet')
  .then(loadedClassifier => {
    classifier = loadedClassifier;
    console.log('Модель загружена');
  });

Ключевой момент: imageClassifier возвращает объект, на котором доступен метод classify.

Использование метода classify

Метод classify принимает два основных типа аргументов:

  1. Данные для классификации: изображение, видео, аудио или текст, в зависимости от типа модели.
  2. Функцию обратного вызова или промис, который получает результат классификации.

Пример классификации изображения с функцией обратного вызова:

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}`));
  }
});

Итоговая структура работы с classify

  1. Загрузка или создание модели.
  2. Подготовка данных (изображение, видео, аудио, текст).
  3. Вызов метода classify с обратным вызовом или через промисы.
  4. Обработка результатов и ошибок.
  5. Опциональная фильтрация по вероятности или количеству возвращаемых классов.

Метод classify в ml5.js является основным инструментом для получения предсказаний на новых данных и позволяет строить интерактивные приложения машинного обучения на фронтенде без сложной настройки инфраструктуры.