Библиотека ml5.js предоставляет удобные инструменты для работы с машинным обучением в браузере. Одной из ключевых задач при использовании моделей классификации является управление порогом уверенности и фильтрация результатов, чтобы исключить низконадёжные предсказания и повысить качество работы приложения.
Порог уверенности — это значение, определяющее, какие предсказания
модели считаются достаточными для дальнейшей обработки. В ml5.js каждая
модель классификации возвращает массив объектов,
содержащих метку (label) и вероятность
(confidence). Например, при использовании модели
imageClassifier:
const classifier = await ml5.imageClassifier('MobileNet');
const results = await classifier.classify(img);
console.log(results);
Структура results выглядит так:
[
{ "label": "cat", "confidence": 0.85 },
{ "label": "dog", "confidence": 0.10 },
{ "label": "fox", "confidence": 0.05 }
]
Чтобы учитывать только надёжные предсказания, используется порог уверенности:
const threshold = 0.7;
const reliableResults = results.filter(r => r.confidence >= threshold);
Ключевые моменты:
confidence варьируется от 0 до 1.После применения порога уверенности можно дополнительно сортировать результаты, чтобы сразу получать наиболее вероятные предсказания:
const sortedResults = reliableResults.sort((a, b) => b.confidence - a.confidence);
console.log(sortedResults[0]); // Наиболее надёжное предсказание
Таким образом достигается несколько целей одновременно:
Для моделей, работающих в реальном времени (например, с веб-камерой), порог уверенности можно использовать для уменьшения «шумного» вывода:
function gotResult(error, results) {
if (error) {
console.error(error);
return;
}
const threshold = 0.6;
const filtered = results.filter(r => r.confidence >= threshold);
if (filtered.length > 0) {
displayLabel(filtered[0].label, filtered[0].confidence);
}
}
classifier.classify(video, gotResult);
Здесь displayLabel — функция, которая обновляет
пользовательский интерфейс только при уверенных предсказаниях. Такой
подход позволяет сократить ложные срабатывания и сделать визуализацию
более стабильной.
Для более сложных сценариев можно комбинировать порог уверенности с дополнительными правилами, например, исключать определённые метки или учитывать только топ-N результатов:
const topN = 3;
const forbiddenLabels = ['unknown', 'background'];
const filteredTop = results
.filter(r => r.confidence >= threshold && !forbiddenLabels.includes(r.label))
.slice(0, topN);
Эта техника позволяет:
confidence для
конкретной модели на реальных данных.Настройка порога уверенности и фильтрация результатов в ml5.js позволяют управлять качеством предсказаний, снижать количество ошибок и обеспечивать корректную работу приложений, работающих с машинным обучением в реальном времени.