Для работы с ml5.js необходим браузер с поддержкой JavaScript. Библиотека подключается через CDN, что упрощает интеграцию в веб-проекты. Основное подключение выглядит следующим образом:
<script src="https://cdnjs.cloudflare.com/ajax/libs/ml5/0.12.2/ml5.min.js"></script>
После подключения создаётся объект ml5, предоставляющий
доступ к различным моделям машинного обучения, включая предобученные
нейросети, такие как MobileNet.
MobileNet — это легковесная сверточная нейросеть, обученная на большом наборе изображений (ImageNet). Она способна распознавать объекты и предоставляет возможности для дополнительного обучения (transfer learning).
let featureExtractor;
let classifier;
let video;
function setup() {
noCanvas();
video = createCapture(VIDEO);
video.size(320, 240);
featureExtractor = ml5.featureExtractor('MobileNet', modelReady);
classifier = featureExtractor.classification(video, videoReady);
}
Ключевые моменты:
ml5.featureExtractor('MobileNet') создаёт объект для
извлечения признаков (feature extraction) из изображения.classification(video) создаёт классификатор на основе
этих признаков.modelReady и videoReady вызываются
после загрузки модели и запуска видеопотока.Обучение классификатора требует примеров для каждой категории. Каждое изображение, захваченное с камеры или загруженное, добавляется с соответствующей меткой.
function addExample(label) {
classifier.addImage(label);
}
Особенности процесса:
label) — это строка, идентифицирующая
категорию.После добавления данных запускается обучение классификатора. ml5.js
предоставляет метод train, который принимает обратный вызов
для отслеживания прогресса.
function trainModel() {
classifier.train((lossValue) => {
if (lossValue) {
console.log('Loss: ' + lossValue);
} else {
console.log('Обучение завершено');
}
});
}
Важные моменты:
lossValue показывает текущую ошибку модели.
При уменьшении значения модель становится точнее.После завершения обучения классификатор способен предсказывать метки для новых изображений.
function classifyImage() {
classifier.classify((err, result) => {
if (err) {
console.error(err);
} else {
console.log(result);
}
});
}
Особенности:
result содержит массив объектов с меткой
(label) и вероятностью (confidence).classify в цикле.Для повторного использования обученной модели ml5.js предоставляет функции сохранения и загрузки.
function saveModel() {
classifier.save();
}
function loadModel() {
classifier.load('model.json', () => {
console.log('Модель загружена');
});
}
Особенности:
video.hide() при работе с видео, чтобы
визуально не отображать поток, если он не нужен для интерфейса.featureExtractor для тонкой настройки обучения.Все ключевые операции ml5.js выполняются асинхронно: загрузка модели, обучение, классификация. Для плавной работы интерфейса важно использовать обратные вызовы или промисы, чтобы не блокировать основной поток браузера.
featureExtractor.load().then(() => {
console.log('Feature Extractor готов');
});
Обучение классификатора MobileNet удобно сочетать с HTML-кнопками:
<button oncl ick="addExample('Кошка')">Добавить Кошку</button>
<button oncl ick="trainModel()">Начать обучение</button>
<button oncl ick="classifyImage()">Классифицировать</button>
Это позволяет создавать интерактивные проекты, где пользователи могут собирать данные, обучать модель и получать предсказания в реальном времени.
Все шаги от инициализации MobileNet до получения предсказаний обеспечивают полный цикл работы с классификацией изображений в ml5.js, позволяя строить проекты с собственными датасетами без глубокого погружения в архитектуру нейросетей.