ml5.featureExtractor является высокоуровневым
интерфейсом для извлечения признаков (features) из изображений, видео
или аудио с использованием предобученных моделей машинного обучения,
таких как MobileNet, Darknet,
PoseNet, и других. Основная цель этого инструмента —
облегчить процесс создания собственных моделей на основе уже
существующих мощных нейронных сетей, предоставляя доступ к их внутренним
представлениям данных.
Feature extractor — это модель, обученная на большой выборке данных, которая способна преобразовывать входные данные в компактное и информативное представление признаков. В случае изображений это означает, что каждый кадр или объект преобразуется в вектор признаков, который содержит ключевую информацию о структуре, форме, цвете и текстуре, игнорируя лишние детали.
Для инициализации feature extractor в ml5.js используется следующая конструкция:
const featureExtractor = ml5.featureExtractor('MobileNet', modelReady);
Параметры:
'MobileNet' — имя предобученной модели. MobileNet
оптимизирован для мобильных устройств и подходит для задач классификации
изображений.modelReady — функция обратного вызова, вызываемая после
полной загрузки модели.После загрузки модель готова к извлечению признаков и обучению новых классификаторов поверх полученных признаков.
Feature extractor позволяет создавать собственный классификатор, используя внутренние представления данных:
const classifier = featureExtractor.classification(videoElement, videoReady);
videoElement — HTML-элемент <video>
или <img> для получения данных.videoReady — функция обратного вызова после
инициализации источника данных.Классификатор может быть обучен на пользовательских метках, создавая модель, адаптированную под конкретные задачи, без необходимости полного обучения сложной нейронной сети с нуля.
После создания классификатора добавляются тренировочные примеры:
classifier.addImage(label);
label — текстовая метка, описывающая текущий кадр или
изображение.Обучение осуществляется вызовом метода train:
classifier.train(lossValue => {
if (lossValue == null) {
console.log('Обучение завершено');
} else {
console.log('Потеря на текущем шаге:', lossValue);
}
});
lossValue — показатель ошибки на текущей итерации
обучения. С уменьшением значения модели становится точнее.После обучения классификатор готов к предсказанию меток на новых данных:
classifier.classify(videoElement, (err, result) => {
if (err) {
console.error(err);
} else {
console.log(result);
}
});
result содержит массив объектов с label и
confidence (вероятностью), показывая, насколько модель
уверена в предсказании.lossValue позволяет контролировать качество обучения и
предотвращать переобучение.Такой подход обеспечивает высокую эффективность и точность, минимизируя время обучения и потребление ресурсов.
ml5.featureExtractor сочетает простоту использования и
мощь предобученных моделей, позволяя строить адаптивные классификаторы,
способные работать в браузере и обрабатывать данные в реальном
времени.