Библиотека ml5.js предоставляет удобный интерфейс для работы с предобученными и пользовательскими моделями машинного обучения на JavaScript. Одной из ключевых возможностей является загрузка ранее сохранённых моделей, что позволяет сохранять прогресс обучения и повторно использовать модели без необходимости их повторного обучения.
В ml5.js модель можно сохранить после обучения с помощью метода
save(). Сохранение создаёт папку или файл (в зависимости от
типа модели), включающий:
После сохранения модель становится доступной для
загрузки и повторного использования через метод
load().
В зависимости от типа модели формат файлов может различаться. Основные типы:
Сохраняемая модель обычно включает файлы:
model.json – структура модели.weights.bin – веса модели.metadata.json – дополнительные данные
(опционально).Файлы должны быть размещены в доступной директории сервера или на публичном URL, если загрузка происходит с веб-страницы.
Для загрузки ранее сохранённой модели используется соответствующий конструктор класса с указанием пути к файлу модели. Примеры:
1. Загрузка ImageClassifier
let classifier;
function preload() {
classifier = ml5.imageClassifier('models/myImageModel/model.json');
}
Здесь 'models/myImageModel/model.json' — путь к
сохранённой модели. После загрузки можно использовать методы
classify() для предсказаний.
2. Загрузка PoseNet
let poseNet;
function setup() {
createCanvas(640, 480);
const video = createCapture(VIDEO);
video.hide();
poseNet = ml5.poseNet(video, 'models/myPoseNet/', modelReady);
}
function modelReady() {
console.log('PoseNet загружен');
poseNet.on('pose', gotPoses);
}
Для PoseNet путь указывается к папке с моделью. После загрузки можно
подписаться на событие pose для обработки предсказаний.
Метод загрузки возвращает Promise, что позволяет обрабатывать модель после полной загрузки:
ml5.imageClassifier('models/myImageModel/model.json')
.then(classifier => {
console.log('Модель загружена');
classifier.classify(someImage, (err, results) => {
if (err) {
console.error(err);
} else {
console.log(results);
}
});
});
Использование промисов предотвращает ошибки, связанные с попыткой работы с моделью до завершения её загрузки.
Совместимость версий Модель, сохранённая в одной версии ml5.js или TensorFlow.js, может не корректно загружаться в другой версии. Рекомендуется сохранять информацию о версии библиотеки вместе с моделью.
Оптимизация загрузки Для крупных моделей целесообразно хранить веса отдельно и загружать их через CDN, чтобы ускорить загрузку и уменьшить нагрузку на сервер.
Обработка ошибок В процессе загрузки возможны
ошибки: неправильный путь к файлу, повреждённые данные или
несовместимость формата. Для их обработки используют конструкцию
try/catch или catch в промисах.
ml5.imageClassifier('models/myImageModel/model.json')
.then(classifier => {
console.log('Модель успешно загружена');
})
.catch(error => {
console.error('Ошибка загрузки модели:', error);
});
Загрузка ранее сохранённой модели в ml5.js обеспечивает повторное использование обученных моделей, сокращает время запуска приложений и позволяет интегрировать машинное обучение в веб-проекты с минимальными усилиями.