Шаг назад к Уровню 3 в Национальной инженерной школе Дуала, где я построил свою первую систему распознавания лиц с использованием концепции анализа главных компонентов (PCA), точнее алгоритма Виолы-Джонса. Сегодня я представляю один из самых распространенных проектов «Hello world» в области компьютерного зрения: Распознавание лиц.
Что такое компьютерное зрение?
Компьютерное зрение - это область исследования, в которой изучается, как компьютер видит и понимает цифровые изображения и видео.
Компьютерное зрение включает в себя видение или ощущение визуального стимула, понимание того, что он видел, а также извлечение сложной информации, которая может быть использована для других действий машинного обучения.
Применение компьютерного зрения?
Конечно, как упоминалось в этом посте, одним из приложений компьютерного зрения является обнаружение лиц в глобальном смысле обнаружение объектов. Другое приложение является более конкретным и обычно используется в отраслях как системы распознавания лиц (будет работать над ним в следующей публикации 😎). Что касается автомобильной промышленности, я уверен, что вы уже слышали о беспилотных автомобилях 🤔, которые также используют понятие компьютерного зрения (здесь никакого волшебства!).
Обычно используемой библиотекой с открытым исходным кодом для компьютерного зрения является opencv, которая содержит несколько сотен алгоритмов компьютерного зрения.
Возвращаемся к каскадным классификаторам Хаара!
Каскадный классификатор Хаара - это эффективный подход к обнаружению объектов, который был предложен Полом Виолой и Майклом Джонсом в их статье «Быстрое обнаружение объектов с использованием усиленного каскада простых функций» в 2001 году.
По сути, это подход, основанный на машинном обучении, при котором каскадная функция обучается на большом количестве изображений, как положительных, так и отрицательных. Затем на основе обучения он используется для обнаружения объектов на других изображениях.
Алгоритм основан на простых небольших фильтрах для обнаружения краев (функций) на объекте (изображениях), которые затем объединяются в виде каскада, отсюда и название Каскадные классификаторы.
Как видно на рисунке ниже, извлечение признаков выполняется поэтапно, каждый из которых состоит из набора фильтров (haar-filter).
Информация затем сохраняется в больших отдельных файлах .xml с множеством наборов функций, и каждый xml соответствует очень специфическому типу использования (обнаружение лица, обнаружение очков и т. Д.)
Время кодирования…
Без лишних слов, давайте начнем писать код 🙂 ....
На изображении выше фактически представлен фрагмент кода для нашей задачи (обнаружение лиц).
Итак, в нашем случае мы работаем с файлом haarcascade_frontalface_default.xml (строка 14). Но перед этим нам нужно загрузить кадры изображений, снятых нашей камерой, которые скомпилированы вместе с видео (помните, что видео - это просто компиляция множества изображений (строка 10)). Каждое изображение преобразуется в оттенки серого для лучшего соответствия классификатору (строка 20). Затем классификатор выполняет работу, обнаруживая все лица, обнаруженные на изображении (строка 22), рисует на нем прямоугольники (строки 24–25) и выпускает все изображения в виде видео (строка 27). Все очень просто, не вдаваясь в математический аспект этой концепции (помните, что это привет, а не прощай, мир 😂). Код доступен через мою ссылку на github.
Скоро появятся многие публикации и продвинутая концепция компьютерного зрения. быть в курсе