ml5.js предоставляет удобный интерфейс для работы с предобученными и пользовательскими моделями машинного обучения на JavaScript. Возможность загружать модели из файлов открывает широкие перспективы для кастомных проектов, где требуется использование специфических данных или архитектур, созданных вне стандартных наборов ml5.js.
Для работы с локальными или удалёнными моделями ml5.js использует объекты JSON-файлов модели и сопутствующие веса модели. Стандартный формат модели, поддерживаемый ml5.js, обычно состоит из двух компонентов:
ml5.js позволяет загрузить модель, используя функцию соответствующего
класса, например ml5.neuralNetwork() для нейросетей, или
специализированные методы, такие как ml5.imageClassifier(),
ml5.poseNet(), ml5.soundClassifier(), если
речь идёт о конкретных типах моделей.
Создание экземпляра класса модели Для нейросетей это выглядит следующим образом:
const options = {
task: 'classification',
debug: true
};
const nn = ml5.neuralNetwork(options);
Параметр task определяет тип задачи:
classification, regression или
other. Опция debug позволяет отслеживать
процесс загрузки и предсказаний.
Загрузка файлов модели
Функция load используется для загрузки модели и
весов:
const modelDetails = {
model: 'model/model.json',
metadata: 'model/model_meta.json',
weights: 'model/model.weights.bin'
};
nn.load(modelDetails, () => {
console.log('Модель успешно загружена');
});
Важно: пути к файлам должны быть корректными относительно корня проекта или URL-адресов, если модель хранится на сервере.
Проверка доступности модели
После загрузки можно получить информацию о структуре модели:
console.log(nn.model);
console.log(nn.data);
Это позволяет убедиться, что слои и веса корректно подключены.
После загрузки модели её можно использовать для предсказаний на новых данных. Для классификации:
const input = { feature1: 0.5, feature2: 1.2 };
nn.classify(input, (err, results) => {
if (err) {
console.error(err);
return;
}
console.log(results);
});
Для регрессии используется аналогичный метод
predict:
nn.predict(input, (err, output) => {
if (err) {
console.error(err);
return;
}
console.log(output);
});
Асинхронность: Загрузка модели происходит
асинхронно. Использование async/await или колбеков
необходимо для предотвращения ошибок при обращении к модели до её полной
загрузки.
async function loadModel() {
await nn.load(modelDetails);
console.log('Модель готова к использованию');
}
loadModel();Оптимизация ресурсов: Большие модели могут потреблять значительное количество памяти. Рекомендуется использовать минимальный набор слоев и весов для конкретной задачи, а также выгружать модель при её неиспользовании:
nn.dispose();ml5.js поддерживает загрузку моделей, экспортированных из TensorFlow.js. Экспорт включает JSON с архитектурой и бинарные файлы с весами. Формат совместим с ml5.js, если модель была обучена с использованием поддерживаемых слоев (Dense, Conv2D, LSTM и др.).
Для imageClassifier можно загружать как предобученные
модели, так и кастомные:
const classifier = ml5.imageClassifier('model/custom-model/model.json', () => {
console.log('Кастомная модель изображений загружена');
});
После загрузки можно производить классификацию изображений, видео с веб-камеры или canvas:
classifier.classify(document.getElementById('imageElement'), (err, results) => {
if (err) console.error(err);
console.log(results);
});
model/.model.json).*.bin) должны быть рядом с JSON или
указаны явно.metadata.json) обеспечивают сохранение
информации о классах, нормализации и других параметрах.Частые ошибки при загрузке моделей:
await для метода
load.Использование debug: true в опциях модели позволяет
увидеть подробный процесс загрузки и выявить ошибки на ранней
стадии.