Шаг назад к Уровню 3 в Национальной инженерной школе Дуала, где я построил свою первую систему распознавания лиц с использованием концепции анализа главных компонентов (PCA), точнее алгоритма Виолы-Джонса. Сегодня я представляю один из самых распространенных проектов «Hello world» в области компьютерного зрения: Распознавание лиц.

Что такое компьютерное зрение?

Компьютерное зрение - это область исследования, в которой изучается, как компьютер видит и понимает цифровые изображения и видео.

Компьютерное зрение включает в себя видение или ощущение визуального стимула, понимание того, что он видел, а также извлечение сложной информации, которая может быть использована для других действий машинного обучения.

Применение компьютерного зрения?

Конечно, как упоминалось в этом посте, одним из приложений компьютерного зрения является обнаружение лиц в глобальном смысле обнаружение объектов. Другое приложение является более конкретным и обычно используется в отраслях как системы распознавания лиц (будет работать над ним в следующей публикации 😎). Что касается автомобильной промышленности, я уверен, что вы уже слышали о беспилотных автомобилях 🤔, которые также используют понятие компьютерного зрения (здесь никакого волшебства!).

Обычно используемой библиотекой с открытым исходным кодом для компьютерного зрения является opencv, которая содержит несколько сотен алгоритмов компьютерного зрения.

Возвращаемся к каскадным классификаторам Хаара!

Каскадный классификатор Хаара - это эффективный подход к обнаружению объектов, который был предложен Полом Виолой и Майклом Джонсом в их статье «Быстрое обнаружение объектов с использованием усиленного каскада простых функций» в 2001 году.

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

Алгоритм основан на простых небольших фильтрах для обнаружения краев (функций) на объекте (изображениях), которые затем объединяются в виде каскада, отсюда и название Каскадные классификаторы.

Как видно на рисунке ниже, извлечение признаков выполняется поэтапно, каждый из которых состоит из набора фильтров (haar-filter).

Информация затем сохраняется в больших отдельных файлах .xml с множеством наборов функций, и каждый xml соответствует очень специфическому типу использования (обнаружение лица, обнаружение очков и т. Д.)

Время кодирования…

Без лишних слов, давайте начнем писать код 🙂 ....

На изображении выше фактически представлен фрагмент кода для нашей задачи (обнаружение лиц).

Итак, в нашем случае мы работаем с файлом haarcascade_frontalface_default.xml (строка 14). Но перед этим нам нужно загрузить кадры изображений, снятых нашей камерой, которые скомпилированы вместе с видео (помните, что видео - это просто компиляция множества изображений (строка 10)). Каждое изображение преобразуется в оттенки серого для лучшего соответствия классификатору (строка 20). Затем классификатор выполняет работу, обнаруживая все лица, обнаруженные на изображении (строка 22), рисует на нем прямоугольники (строки 24–25) и выпускает все изображения в виде видео (строка 27). Все очень просто, не вдаваясь в математический аспект этой концепции (помните, что это привет, а не прощай, мир 😂). Код доступен через мою ссылку на github.

Скоро появятся многие публикации и продвинутая концепция компьютерного зрения. быть в курсе