OpenCV kmean: как выбрать достойные значения для COUNT и EPS?

Я пытаюсь использовать функцию kmean в OpenCV для предварительной классификации 36000 образцов изображений на 100+ классов (чтобы сократить объем работы по подготовке данных о поездах для контролируемого обучения). В этой функции есть два параметра, которые я не совсем понимаю: резюме :: TermCriteria :: EPS а также резюме :: TermCriteria :: COUNT.

cv::kmeans(dataset.t(), K, kmean_labels, cv::TermCriteria( cv::TermCriteria::EPS + cv::TermCriteria::COUNT, 10, 1.0),
3, cv::KMEANS_PP_CENTERS, kmean_centers);

В документах OpenCV это объясняет, что:
резюме :: TermCriteria :: EPS: желаемая точность или изменение параметров, при которых итерационный алгоритм останавливается.

резюме :: TermCriteria :: COUNT: максимальное количество итераций или элементов для вычисления.

Вышеприведенное объяснение мне не совсем понятно. Кто-нибудь может помочь объяснить больше и показать, как найти хорошие значения для COUNT и EPS?
Большое спасибо.

0

Решение

Там нет магических чисел, которые будут соответствовать всем приложениям (иначе они не будут параметрами).

Kmeans — это итеративный алгоритм, который будет двигаться к оптимуму, и каждая итерация должна улучшаться, но вы должны указать своему алгоритму, когда нужно остановиться.

С помощью резюме :: TermCriteria :: COUNT, Вы говорите алгоритм: вы можете выполнить x итерации, затем остановитесь. Но это не гарантирует вам никакой точности.

С помощью резюме :: TermCriteria :: EPS, Вы говорите алгоритму продолжать его итерации, пока разница между двумя последовательными итерациями не станет достаточно маленький. Параметр EPS расскажите алгоритму, насколько мала должна стать эта разница. Конечно, это зависит от набора данных, который вы подаете в алгоритм. Предположим, вы умножили все свои данные на 10; тогда EPS должен меняться соответственно (я полагаю, квадратично, но не уверен в этом).

Когда вы используете и то и другое оба параметра; вы указываете алгоритму остановиться, когда одно из двух условий выполнено; например: прекратить итерации, если разница между двумя последовательными прогонами меньше 0,1, ИЛИ ЖЕ когда вы сделали 10 итераций.

В заключение: только анализ ваших наборов данных, проб и ошибок может дать вам порядочный ценности…

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]