ml5.js предоставляет высокоуровневый интерфейс для работы с моделями машинного обучения в браузере на JavaScript. Одной из ключевых возможностей является загрузка кастомных моделей через URL, что позволяет использовать модели, обученные вне среды ml5.js, и интегрировать их в веб-приложения.
Загрузка модели по URL реализуется через методы, специфичные для каждого типа модели. Общая схема следующая:
Подготовка модели Модель должна быть сохранена в
формате, поддерживаемом ml5.js (например, TensorFlow.js формат
.json и веса .bin). Если используется модель,
обученная в Python с TensorFlow, её необходимо конвертировать с помощью
tensorflowjs_converter.
Указание URL URL может быть абсолютным (с внешнего сервера) или относительным (локально, в структуре проекта). Важно обеспечить корректный доступ к файлам модели через CORS, если они загружаются с внешнего источника.
Инициализация модели Для загрузки используется объект соответствующей модели. Например:
const classifier = ml5.imageClassifier('URL_к_модели/model.json', modelLoaded);
Здесь modelLoaded — функция обратного вызова, которая
срабатывает после успешной загрузки модели.
ml5.js использует асинхронный подход. Функция обратного вызова позволяет убедиться, что модель готова к использованию перед началом инференса.
function modelLoaded() {
console.log('Модель успешно загружена!');
}
При работе с большими моделями может возникнуть задержка, поэтому часто используют индикаторы загрузки или промисы:
ml5.imageClassifier('URL_к_модели/model.json')
.then(classifier => {
console.log('Модель готова к работе');
})
.catch(error => {
console.error('Ошибка загрузки модели:', error);
});
Классификаторы изображений
(imageClassifier) Поддерживают загрузку кастомных
моделей и предобученных моделей, таких как MobileNet. Можно передавать
URL напрямую, и ml5.js автоматически загружает веса и структуру
сети.
Сегментация изображений
(imageSegmenter) При использовании кастомных
моделей важно убедиться, что формат модели соответствует требованиям
ml5.js: выходной слой должен выдавать сегментационные карты в ожидаемом
формате.
Распознавание текста (charRNN) Для
текстовых моделей необходимо передавать путь к JSON-файлу с
конфигурацией сети и весами, которые предварительно были преобразованы в
формат TensorFlow.js.
PoseNet и другие модели для видео При загрузке с
URL важно указывать не только модель, но и конфигурацию детектора
(например, architecture, outputStride), чтобы
инференс выполнялся корректно.
async/await
повышает читаемость кода.let classifier;
let img;
function preload() {
img = loadImage('example.jpg');
}
function setup() {
createCanvas(400, 400);
classifier = ml5.imageClassifier('https://example.com/model/model.json', () => {
console.log('Кастомная модель загружена');
classifyImage();
});
}
function classifyImage() {
classifier.classify(img, (error, results) => {
if (error) {
console.error(error);
} else {
console.log('Результаты классификации:', results);
}
});
}
В этом примере создаётся простое приложение, загружающее кастомную модель с внешнего URL и классифицирующее локальное изображение.
ml5.js поддерживает загрузку моделей как старых версий TensorFlow.js, так и новых. Важно учитывать:
Загрузка модели по URL позволяет легко интегрировать кастомные и сторонние модели в веб-приложения без необходимости локальной сборки. Ключевым моментом является корректное указание пути к JSON-файлу модели, поддержка CORS и асинхронная работа с обратными вызовами или промисами. Такой подход открывает возможность динамически менять модели и использовать предобученные сети, расширяя функциональность приложения на базе ml5.js.