Библиотека ml5.js предоставляет удобный интерфейс
для работы с предобученными моделями машинного обучения в браузере.
Загрузка модели осуществляется с помощью соответствующих методов,
специфичных для типа модели. Например, для классификации изображений
используется функция ml5.imageClassifier(), для генерации
текста — ml5.charRNN().
Процесс загрузки модели асинхронный. Методы возвращают объект Promise или принимают callback-функцию, которая вызывается после полной загрузки модели. Это позволяет безопасно работать с моделью только после того, как она готова к предсказаниям.
Пример асинхронной загрузки модели для классификации изображений:
let classifier;
ml5.imageClassifier('MobileNet')
.then(model => {
classifier = model;
console.log('Модель загружена и готова к использованию');
})
.catch(error => console.error('Ошибка загрузки модели:', error));
Использование Promise гарантирует, что дальнейшие вызовы методов модели не будут выполнены до её полной готовности.
После загрузки модели важно убедиться, что она готова к работе. В ml5.js это чаще всего обозначается событием или состоянием, при котором объект модели становится доступным для предсказаний.
Некоторые модели предоставляют метод ready() или
позволяют использовать callback-параметр при инициализации:
ml5.imageClassifier('MobileNet', model => {
console.log('Модель готова к предсказаниям');
});
На этом этапе выполняются следующие задачи внутри библиотеки:
Важно учитывать, что попытка вызвать метод предсказания до завершения этой стадии приведет к ошибкам или некорректным результатам.
После того как модель загружена и готова, можно выполнять предсказания. Ml5.js предоставляет удобные методы в зависимости от типа модели.
Метод classify() используется для анализа изображений.
Можно передавать HTML-элемент <img>,
<video>, <canvas> или объект p5.js
image().
classifier.classify(document.getElementById('image'), (error, results) => {
if (error) {
console.error(error);
return;
}
console.log('Результаты предсказания:', results);
});
Ключевые моменты:
results содержит массив объектов с полями
label и confidence.label — название распознанного класса.confidence — вероятность принадлежности к этому
классу.Для моделей типа CharRNN используется метод
generate(). Он принимает объект с параметрами, например,
начальный текст, количество символов и температуру генерации:
let charRNN = ml5.charRNN('models/tiny Shakespeare/');
charRNN.generate({ seed: 'To be', length: 100, temperature: 0.5 }, (err, result) => {
console.log(result.sample);
});
Параметры управления предсказанием:
Модели для распознавания аудио (soundClassifier) или
объектов (poseNet) работают аналогично, но используют
методы classify() и события pose для передачи
результатов в реальном времени.
При работе с ml5.js критически важно обрабатывать исключения, возникающие при загрузке и предсказании:
Асинхронное ожидание готовности модели можно реализовать с помощью
async/await:
async function loadModel() {
try {
const model = await ml5.imageClassifier('MobileNet');
const results = await model.classify(document.getElementById('image'));
console.log(results);
} catch (error) {
console.error('Ошибка при работе с моделью:', error);
}
}
loadModel();
Такой подход упрощает цепочку вызовов и делает код более читаемым.
Эти принципы обеспечивают стабильность и предсказуемость поведения модели в реальном времени.