Пишем веб-приложение для распознавания лиц за час


Оглавление (нажмите, чтобы открыть):

Пишем веб-приложение для распознавания лиц за час

Группа: Главные администраторы
Сообщений: 14349
Регистрация: 12.10.2007
Из: Twilight Zone
Пользователь №: 1

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

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

Итак, представленный ниже метод биометрической аутентификации не рекомендуется для промышленной эксплуатации в качестве замены первого фактора (пароля). Риск при использовании метода в качестве второго фактора существенно меньше, но все еще существует — решайте сами. Я просто расскажу, как и с помощью каких инструментов можно организовать аутентификацию для веб приложения с использованием распознавания и валидации изображения человеческого лица. Аппаратная реализация — обычная web-камера.

Я давно слежу за проектом Open Biometrics, и считаю что утилита br, входящая в комплект openbr, на данный момент это лучший из инструментов, который может помочь с основной нашей задачей – сравнением двух изображений: лицо пользователя, сфотографированное при логине сравнивается с оригиналом, записанным при регистрации. В итоге выдается коэффициент соответствия в диапазоне от 0 до единицы. Синтаксис довольно простой:

$ br -algorithm FaceRecognition -compare me.jpg you.jpg

Результат примерно такой:

[root@facelogin]# br -algorithm FaceRecognition -compare image1.png image2.png

Set algorithm to FaceRecognition

Comparing image1.png and image2.png

Enrolling image1.png to image1jR5xN2.mem

00.00% ELAPSED=00:00:00 REMAINING=00:00:00 COUNT=1

00.00% ELAPSED=00:00:00 REMAINING=00:00:00 COUNT=1

Последняя единичка и есть искомый коэффициент (я сравнивал два одинаковых файла).

Пользователям было бы не очень удобно следить за тем, чтобы в камеру попадало только лицо, и только одно. Поэтому второй нашей задачей является авто-определение лица на снимке камеры и использование только этого фрагмента для последующего сравнивания с помощью утилиты br. Я решил переложить это на плечи браузера, благо возможности HTML5 это позволяют. По запросу “face detection with HTML5” Гугл выдал neave.github.io/face-detection/. Отличный проект, требованиям соответствует, его и будем использовать.

Скрипт от neave немного модифицирован – он будет передавать координаты и размеры лица через форму на скрипт регистрации и входа.

На php быстренько набросаны скрипты регистрации и логина.

Внимание, работает не на всех браузерах — рекомендуется Chrome последней версии (desktop)

Если заинтересовались и хотите повторить у себя на сервере, вот список линков

1. Инструкция по установке пакета openbr (на убунту ставится легко, с centos-ом пришлось помучиться, с windows-ом вообще без проблем)

3. Исходники демо проекта (да, попраны все стандарты и рекомендации – поэтому прошу php код не комментировать – это лишь чтобы показать, как это работает) — не забудтье разрешить в php выполнение /usr/local/bin/br и выставить разрешение на запись для директории $facestorage

Программу с открытым кодом научили распознавать человека по десятку фотографий

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

Изображение: Flashback / Delphine Software International

Исследователи из Университета Карнеги — Меллона на базе исследования по Google разработали проект с открытым исходным кодом, способный распознавать людей после тренировки на небольшом количестве фотографий. Демонстрационное видео опубликовано на YouTube, исходный код доступен в репозитории GitHub.

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

Некоторые из фильтров, наложенные на фотографию Джона Леннона.

Изображение: bamos / github

Для тренировки нейросети разработчики использовали около шести тысяч фотографий десяти знаменитостей. Несмотря на то, что все фотографии сделаны в разных условиях и с разных ракурсов, точность распознавания алгоритма достигала 87 процентов. Авторы отмечают, что точность распознавания возрастет при использовании большего объема данных для тренировки.

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

ТОП-5 программ распознавания лиц по фото: сравнение и обзор!

Первая программа распознавания лиц по фото, которая была доступна для обычных пользователей Рунета, называлась Findface. Она появилась в 2020 году и моментально стала дико популярной. Сервис опирался на фотобанк соцсети Вконтакте, и умел находить людей по фото с очень высокой точностью. В сентябре 2020 года программа перестала работать в прежнем режиме, сервис перешел в сферу обслуживания государственных заказов, а также крупных коммерческих организаций.

Успех данной программы распознавания лиц по фото онлайн не мог не заинтересовать других разработчиков. Сегодня в сети действует множество аналогов Findface, которые распознают людей не менее умело. В этой статье мы сделаем обзор 5 альтернативных программ распознавания по фото, которые легко устанавливаются на компьютер или телефон. Дополнительно рассмотрим их преимущества и недостатки.

1. Search Face

Это программа распознавания лиц по фото в Интернете из базы данных Вконтакте, то есть, полный аналог упомянутой выше FindFace. Умный алгоритм, опираясь на данные встроенной нейросети, быстро анализирует изображение и выдает подборку двойников и клонов. Сервис работает онлайн, то есть, ничего скачивать или устанавливать на устройство не нужно. Все, что потребуется – браузер и Интернет подключение.

  • Зайдите на сайт https://findclone.ru/;
  • Введите свой номер телефона и нажмите клавишу «Регистрация» – «Позвонить мне»;
  • Вам поступит телефонный звонок. Запомните последние 5 цифр входящего номера;
  • Введите эти числа в поле «Пинкод»;
  • Укажите свой пароль;
  • Таким образом, вы зарегистрировались в системе. Теперь жмите клавишу «Войти»;
  • Загрузите исходное фото(или перетащите его на экран);
  • Сервис сразу приступит к поиску и уже через пару секунд вы увидите результаты.

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

  • Cкорость анализа данных;
  • Высокая точность (исходное фото ни разу не попадало в Интернет);
  • Простота интерфейса сайта;
  • Пользоваться сервисом можно как с мобильного, так и с компьютера;
  • В Play Market есть отдельное приложение;

  • Необходимость вводить свой номер телефона;

2. Findme VK

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

  • Зайдите на сайт https://www.findmevk.com ;
  • Добавьте фото;

Последняя будет немаленькой – вы познакомитесь с сотней своих двойников. Программа отсортирует похожие изображения и выгрузит их на экран, буквально, за 5 секунд.

  • Скорость обработки информации;
  • Отсутствие необходимости где-либо регистрироваться;
  • Средний результат в точности;
  • Азиатские лица программа различает плохо;
  • Не подходит для поисков определенного человека;

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

3. Сервис Яндекс.Картинки

Программное обеспечение распознавания лиц стоит немало, и оно вряд ли подойдет обычному пользователю Интернета. Такое оборудование приобретают крупные компании, супермаркеты, государственные службы.

Вот несколько компаний, которые реализуют программы для распознавания лиц в видеонаблюдении:

  • Findface;
  • Hikvision;
  • Verilook Standard SDK.

Средняя цена за стартовый пакет софта – от 450 долларов. Как видите, профессиональные продукты вряд ли заинтересуют стандартного пользователя.

Один из самых востребованных веб-сервисов, который отлично работает бесплатно – это Яндекс.Картинки. Программа выполняет не только распознавание лиц по фото, но и ищет похожие картинки.

  • Зайдите на сайт https://yandex.kz/images/;
  • Нажмите на значок фотоаппарата справа от поисковой строки;
  • Добавьте исходную картинку;
  • Нажмите «Поиск»;
  • Анализирует не только базу данных Вконтакте, но, вообще, весь Рунет;
  • Больше шансов разыскать нужного человека;
  • Яндекс выдаст все сайты, на которых загружено это или похожее фото;
  • Очень много одинаковых картинок, что затруднит анализ результатов и займет гораздо больше времени;

Перечисленные выше сервисы позволяют распознавать лица как с компьютера, так и с телефона. Однако, с компа работать гораздо удобнее. Далее мы приведем программу для распознавания лиц по фото для Андроида, которую легко установить на смартфон.

4. Photo Sherlock

Это отличная мобильная программа для распознавания лиц в соцсетях, с очень высокими рейтингами в Play Market.

  • Скачайте утилиту из Play Market;
  • Установите ее на телефон и разрешите ей доступ к камере и галерее;
  • Загрузите изображение с карты памяти или сделайте фото;
  • Нажмите клавишу «Найти это фото»;
  • Дождитесь окончания анализа.
  • Маленький вес программы;
  • Выдача результатов в Гугл;
  • Ищет только полностью идентичные картинки или лица;
  • Часто всплывает реклама, что раздражает и отвлекает;

Если вы хотите полюбоваться на своих двойников – воспользуйтесь лучше Search Face. Эксперимент нас позабавил – Путина программа нашла, а вот Жириновского почему-то нет.


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

5. Поиск по фото

Утилита находится в AppStore в свободном доступе. Она выполняет поиск и распознавание лица с фото исходника, основываясь на данных поисковых систем Google и Yandex. Совместима с операционной системой IOS 9.1 и старше.

  • Найдите приложение в магазине;
  • Установите его на телефон;
  • Вызовите касанием боковую шторку слева;
  • Добавьте файл с устройства или сделайте снимок;
  • Если нужно, укажите нужный размер фото;
  • Жмите «Поиск»;
  • Программа ищет весьма неплохо и быстро;
  • Часто вылетает;
  • Долго приходится разбираться с интерфейсом,даже с помощью инструкции;

Технология распознавания лиц сегодня находится в периоде развития, на самом его пике. Хотите знать, как работает программа распознавания лиц, и насколько опасен такой софт для человечества? У нас есть развернутые статьи на эти темы, а здесь мы лишь кратко опишем принцип работы системы. Говоря простым языком, она анализирует соответствие исходного лица с тысячами других из своей базы данных. Идентификация происходит на основе 20 критериев – расстояние между точками на лице, анализ кожи, пор, глубина посадки черт и т.д.

Программы для распознавания лиц на видео сегодня устанавливают в супермаркетах, ночных клубах, аэропортах. Они позволяют вычислять людей из «черного» списка, помогают увеличить скорость обслуживания. Государственные системы распознавания лиц призваны снизить уровень преступности и повысить нашу безопасность.

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

Программа распознавания лиц : 2 комментария

Здравствуйте! У меня есть фотография от 1897 года, на ней изображены три юноши. Один из них мой дед. Есть другая фотография от 1916 года, изображен конкретно мой дед. Как определить, какой юноша на первой фотографии является моим дедом? Какую использовать программу для идентификации лица? С уважением Лина

Здравствуйте, Лина.
В сети есть много онлайн-сервисов по определению схожести фото. Мы бы порекомендовали Вам сделать скрин фотографий и обрежьте по отдельности каждого из трех юношей. Загрузите в сервис и нажмите «Сравнение». Но учтите, что все они работают с определенной погрешностью. Тем более что фото старые.

Мастер Йода рекомендует:  Настройка HTTP2 в nginx на UbuntuDebian

Пишем веб-приложение для распознавания лиц за час

В предыдущем уроке, посвященном OpenCV, мы рассказали, как отслеживать цветной объект в реальном времени. Теперь мы будем использовать PiCam для распознавания лица в режиме реального времени с помощью Python, как вы можете видеть ниже:

Этот проект был выполнен с помощью «Open Source Computer Vision Library», OpenCV. В этом уроке мы сосредоточимся на Raspberry Pi (так, Raspbian как OS) и Python, но я также проверил код на My Mac, и он также отлично работает. OpenCV был разработан для эффектного вычисления и работы в реальном времени. Таким образом, он идеально подходит для распознавания лиц в реальном времени с помощью камеры.

Чтобы создать полный проект по распознаванию лиц, мы должны работать на 3 очень разных этапах:

  1. Обнаружение лиц и сбор данных
  2. Обучение распознавателя
  3. Распознавание лица

На приведенной ниже блок-схеме показаны этапы:

Шаг 1: Список деталей

Шаг 2: Установка пакета OpenCV 3

Я использую Raspberry Pi V3, обновленный до последней версии Raspbian (Stretch), поэтому лучший способ установить OpenCV — следовать отличному учебному пособию, разработанному Адрианом Розброком: Raspbian Stretch: Установка OpenCV 3 + Python на Raspberry Pi V3.

Я попробовал несколько разных руководств по установке OpenCV на моем Pi. Учебник Адриана — лучший. Я советую вам сделать то же самое, следуя его указаниям шаг за шагом.

После того, как вы закончите установку по учебнику Адриана, у Вас должна быть виртуальная среда OpenCV, готовая запускать наш эксперимент на Raspberry Pi.

Перейдем к нашей виртуальной среде и убедитесь, что OpenCV 3 правильно установлен.

Адриан рекомендует запускать команду «source» каждый раз, когда вы открываете новый терминал, чтобы обеспечить правильную настройку системных переменных.

Затем перейдем к нашей виртуальной среде:

Если вы видите текст (cv), предшествующий вашему запросу, то вы находитесь в виртуальной среде cv:

Адриан обращает внимание, что виртуальная среда cv Python полностью независима и секвестрирована из стандартной версии Python, включенной в загрузку Raspbian Stretch. Таким образом, любые пакеты Python в каталоге глобальных пакетов сайтов не будут доступны для виртуальной среды cv. Аналогично, любые пакеты Python, установленные в сайтах-пакетах cv, не будут доступны для глобальной установки Python.

Теперь введите интерпретатор Python:

и убедитесь, что вы используете версию 3.5 (или выше)

Внутри интерпретатора (появится «>>>») импортируйте библиотеку OpenCV:

Если сообщений об ошибках не выходят, значит OpenCV правильно установлен на ВАШЕЙ PYTHON ВИРТУАЛЬНОЙ СРЕДЕ.

Вы также можете проверить какая версия OpenCV установлена:

Должен появиться 3.3.0 (или более высокая версия, которая может быть выпущена в будущем). Вышеупомянутый терминал PrintScreen показывает предыдущие шаги.

Шаг 3: Тестирование Вашей Камеры

Как только вы установите OpenCV в свой RPi, давайте проверим, работает ли ваша камера правильно.

Я предполагаю, что у вас есть PiCam, уже установленный на вашем Raspberry Pi.

Введите ниже код Python в вашу среду IDE:

Вышеприведенный код будет захватывать видеопоток, который будет создан вашим PiCam, и отображать его как в цвете BGR, так и в режиме Gray.

Обратите внимание, что я повернул камеру по вертикали из-за того, что она собрана. Если это не ваше дело, прокомментируйте или удалите командную строку «flip».

Вы также можете загрузить код из GitHub: simpleCamTest.py

Для выполнения введите команду:

Чтобы закончить программу, вы должны нажать клавишу [ESC] на клавиатуре.


Щелкните мышью на окне видео, прежде чем нажимать [ESC]

На приведенном выше рисунке показан результат.

Некоторые разработчики обнаружили проблемы при попытке открыть камеру (сообщение об ошибке «Ошибка подтверждения»). Это может произойти, если камера не была включена во время установки OpenCv, поэтому драйверы камеры не установлены правильно. Чтобы исправить, используйте команду:

Вы также можете добавить bcm2835-v4l2 в последнюю строку файла / etc / modules, чтобы драйвер загружался при загрузке.

Чтобы узнать больше о OpenCV, Вы можете ознакомитьсяс уроком: загрузка -video-python-opencv-tutorial

Шаг 4: Определение Лица

Самой основной задачей Распознавания Лица является, конечно же, «Определения Лица». Прежде всего, вы должны «захватить» лицо, чтобы распознать его, по сравнению с новым лицом, захваченным в будущем.

Наиболее распространенный способ обнаружения лица (или любых объектов), использует «классификатор каскадов Хаар».

Обнаружение объектов с использованием «классификатора каскадов Хаар» — эффективный метод обнаружения объектов, предложенный Полом Виолой и Майклом Джонсом в своей статье «Быстрое обнаружение объектов с использованием расширенного каскада простых функций» в 2001 году. Это подход, основанный на механизме обучения, каскадная функция обучается из множества положительных и отрицательных изображений. Затем он используется для обнаружения объектов на других изображениях.

В уроке мы будем работать с распознаванием лиц. Первоначально алгоритм требует много положительных изображений (изображений лиц) и негативных изображений (изображений без лиц) для обучения классификатора. Затем нам нужно извлечь из него функции. Хорошей новостью является то, что OpenCV поставляется с тренером, а также с детектором. Если вы хотите обучить свой классификатор для любого объекта, такого как автомобиль, самолеты и т. Д., Вы можете использовать OpenCV для его создания. Его полная информация приведена здесь: Обучение каскадного классификатора.

Если вы не хотите создавать свой собственный классификатор, OpenCV уже содержит много предварительно подготовленных классификаторов для лица, глаз, улыбки и т. Д. Эти файлы XML можно загрузить из каталога haarcascades.

Достаточно теории, давайте создадим детектор лица с OpenCV!

Загрузите файл: faceDetection.py из GitHub.

Верьте или нет, несколько строк кода — все, что вам нужно, чтобы обнаружить лицо, используя Python и OpenCV.

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

Это строка, которая загружает «классификатор» (который должен находиться в каталоге с именем «Cascades /» в каталоге вашего проекта).

Затем мы установим нашу камеру и внутри цикла, загрузим входное видео в режиме серого (то же, что мы видели раньше).

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

  • grey— это входное изображение в оттенках серого.
  • scaleFactor — это параметр, определяющий размер изображения при каждой шкале изображения. Он используется для создания масштабной пирамиды.
  • minNeighbors — параметр, указывающий, сколько соседей должно иметь каждый прямоугольник кандидата, чтобы сохранить его. Более высокое число дает более низкие ложные срабатывания.
  • minSize — минимальный размер прямоугольника, который считается лицом.

Функция будет определять лица на изображении. Затем мы должны «маркировать» лица на изображении, используя, например, синий прямоугольник. Это делается с помощью этой части кода:

Если грани найдены, они возвращают позиции обнаруженных лиц в виде прямоугольника с левым углом (x, y) и имеют «w» в качестве его ширины и «h» как его высоту ==> (x, y, w, час). См. Приведенную выше картинку.

Как только мы получим эти координаты, мы можем создать «ROI» (рисованный прямоугольник) для лица и представить результат с помощью функции imshow ()

Запустите вышеупомянутый скрипт python в вашей среде python, используя терминал Rpi:

Вы также можете включить классификаторы для «обнаружения глаз» или даже «обнаружения улыбки». В этих случаях вы будете включать функцию классификатора и рисовать прямоугольник внутри контура лица, потому что не было бы смысла обнаруживать глаз или улыбку за пределами лица.

Обратите внимание, что на Pi, имея несколько классификаторов в одном коде, будет замедляться обработка, как только этот метод обнаружения (HaarCascades) использует большую вычислительную мощность. На системном блоке легче запустить его.

На GitHub вы найдете другие примеры:

И в приведенной выше картине вы можете увидеть результат.

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

Шаг 5: Сбор данных

Прежде всего, я должен поблагодарить Рамиза Раджи за его великую работу над Распознаванием Лица на фотографиях:

а также Anirban Kar, который разработал очень всеобъемлющий учебник с использованием видео:

Я очень рекомендую Вам взглянуть на оба учебника.

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

Сначала создайте каталог, в котором вы разрабатываете свой проект, например, FacialRecognitionProject:

В этом каталоге, помимо 3 сценариев python, которые мы создадим для нашего проекта, мы должны будем сохранить на нем классификатор лица. Вы можете скачать его с моего GitHub:

Затем создайте подкаталог, в котором мы будем хранить наши образцы лица и назовите его «dataset»:

И загрузите код из GitHub: 01_face_dataset.py

Код очень похож на код, который мы писали для обнаружения лиц. Мы добавили, что это была «команда ввода» для захвата идентификатора пользователя, который должен быть целым числом (1, 2, 3 и т. Д.),

И для каждого из захваченных кадров мы должны сохранить его как файл в каталоге «dataset»:

Обратите внимание, что для сохранения вышеуказанного файла необходимо импортировать библиотеку «os». Имя каждого файла будет следовать за структурой:

Например, для пользователя с face_ >

Как показано на фотографии моего Pi. В моем коде я собираю 30 образцов из каждого идентификатора. Вы можете изменить его на последнем «elif». Число выборок используется для разрыва цикла, в котором захватываются образцы лица.

Запустите скрипт Python и запишите несколько идентификаторов. Вы должны запускать скрипт каждый раз, когда хотите сгенерировать нового пользователя (или изменить фотографии для уже существующего).

Шаг 6: Тренировка

На этом втором этапе мы должны взять все пользовательские данные из нашего набора данных и «инструктор» в OpenCV Recognizer. Это делается непосредственно с помощью определенной функции OpenCV. Результатом будет файл .yml, который будет сохранен в каталоге «trainer /».

Итак, давайте начнем создание подкаталога, в котором мы будем хранить подготовленные данные:

Загрузите с GitHub второй скрипт python: 02_face_training.py

Убедитесь, что у вас установлена библиотека PIL на вашем Raspberry Pi. Если нет, запустите следующую команду в терминале:

Мы будем использовать в качестве распознавателя, LBPH (LOCAL BINARY PATTERNS HISTOGRAMS) Face Recognizer, включенный в пакет OpenCV. Мы делаем это в следующей строке:

Функция «getImagesAndLabels (path)» будет принимать все фотографии в каталоге: «dataset /», возвращая 2 массива: «Идентификаторы(lds)» и «Лица(Faces)». С этими массивами в качестве входных данных мы будем «обучать наш распознаватель»:

В результате файл с именем «trainer.yml» будет сохранен в каталоге тренера, который был ранее создан нами.

Это оно! Я включил последний оператор печати, который я отобразил для подтверждения, количество лиц, которых мы обучили.

Каждый раз, когда вы выполняете Фазу 1, Фаза 2 также должна быть запущена.

Шаг 7: Распознавание лица


Теперь мы достигли заключительной фазы нашего проекта. Здесь мы увидим лицо на нашей камере, и если бы этот человек был сфотографирован и обучен раньше, наш распознаватель сделает «обработку», возвращающее свой идентификатор и индекс, показавший, насколько уверен в этом признак распознаватель.

Загрузите скрипт python 3-й фазы из GitHub: 03_face_recognition.py.

Мы включаем здесь новый массив, поэтому мы будем отображать «имена», а не пронумерованные идентификаторы:

Так, например: Marcelo будет пользователем с >

Затем мы обнаружим лицо, такое же, что и раньше, с помощью классификатора haasCascade. Имея обнаруженное лицо, мы можем назвать наиболее важную функцию в приведенном выше коде:

Функция ecognizer.predict () Принимает в качестве параметра захваченную часть лица, подлежащую анализу, и возвращает своего вероятного владельца, указывая его идентификатор и степень уверенности распознавателя в связи с этим совпадением.

Обратите внимание, что индекс доверия будет возвращать «ноль», если он будет считаться идеальным совпадением.

И наконец, если распознаватель может определить лицо, мы помещаем текст над изображением с вероятным идентификатором и насколько «вероятность (probability)» в% соответствует правилу («вероятность» = 100 — индекс доверия). Если нет, на лицо помещается ярлык «неизвестный».

Ниже gif с результатом:

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

Шаг 8: Вывод

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

Подробнее и окончательный код, Вы можете найти на депозитарий GitHub: OpenCV-Face-Recognition

Ниже представлен обзор будущего урока, в котором мы рассмотрим «автоматическую слежение за лицом и другие методы обнаружения лиц»:

Современные приложения — Добавление средств распознавания лиц в ваше приложение

На конференции Build 2020 компания Microsoft объявила о выпуске Cognitive Services API. Среди множества доступных API есть несколько сервисов машинного зрения. Эти сервисы могут анализировать возраст и пол лиц на входном изображении. Есть даже API для распознавания эмоций индивидуума на основе выражения его лица. Для рекламы этой технологии по всей территории были расставлены многочисленные киоски, демонстрирующие различные области ее применения. Cognitive Services API создан на основе знаний и усилий Microsoft в области машинного обучения. Тысячи размеченных изображений пропускались через нейронную сеть. Лучше всего то, что вы можете использовать эти сервисы, ничего не зная о машинном обучении или искусственном интеллекте. Вы просто вызываете некий веб-сервис из своего приложения. Интервью с одним из членом группы, участвовавшим в этом проекте, можно посмотреть по ссылке bit.ly/1TGi1QK.

Мастер Йода рекомендует:  Работа с шаблонами, использование HTML-Template с CGI-скриптами

С помощью Cognitive Services API можно добавить базовые средства распознавания лиц в приложение, не вызывая никакие API. Пространство имен Windows.Media.FaceAnalysis содержит функциональность для распознавания лиц на изображениях или в видео. Это базовый набор, где нет богатых возможностей Cognitive Services. По сути, он очень похож на распознавание лиц во многих цифровых камерах. Хотя эти средства являются базовыми, у них есть два преимущества: они работают без подключения к сети и, поскольку вы не обращаетесь к какому-либо API, не влекут за собой никаких издержек. В качестве стратегии оптимизации ваше приложение может локально распознавать наличие лица до вызова Cognitive Services API. Тем самым приложение не будет отправлять изображения, заведомо не содержащие лиц, в Cognitive Services API. Это может дать вам значительную экономию затрат и сократить использование полосы пропускания для ваших пользователей. Локальное распознавание лиц может быть полезным дополнением при применении интеллектуальных облачных сервисов вроде Cognitive Services.

Подготовка проекта

В Visual Studio 2015 создайте новый проект Universal Windows Platform (UWP) App, выберите шаблон Blank и присвойте проекту имя FaceDetection. Поскольку это приложение будет использовать веб-камеру, вы должны добавить эту возможность в приложение. В Solution Explorer дважды щелкните файл Package.appxmanifest. На вкладке Capabilities установите флажки рядом с Microphone и Webcam, как показано на рис. 1. Сохраните файл.

Рис. 1. Добавление возможностей Webcam и Microphone в приложение

Программа распознает лица по фотографии в интернете

В марте 2015-го года трое исследователей компании Google опубликовали свою научную работу, в которой рассказывалось о новой системе искусственного интеллекта под названием FaceNet.

Данная система способна распознавать лица людей с очень высоким уровнем точности. Ее результат был близок к 100% (точнее 99,63% — новый рекорд!) на стандартном комплекте данных Labeled Faces in the Wild. Этот набор данных содержит более 13 000 изображений лиц, которые были собраны со всего интернета.

Распознавание лиц

Стоит отметить, что в декабре 2014-го года несколько китайских исследователей также презентовали свою систему опознавания лиц, результат которой более 99% (на наборе Labeled Faces in the Wild).

Система, созданная исследователями компании Facebook, тоже показала неплохой результат — 97,5%. На тот момент ученные утверждали, что в среднем результат реального человека при распознавании лиц 97,5%, т.е. при показе двух фотографий, в более чем 97% случаев другой человек правильно определит, принадлежат ли лица на фотографиях одному и тому же человеку.

Точная система распознавания лиц по фото

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

Применение программы распознавания лиц

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

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

Более ранние системы распознавания

Софтверная компания Face.com также создала программу, которая идентифицирует людей по фотографии в интернете.

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

В связи с опасениями вторжения в частную жизнь, Face.com ранее ограничил доступ к программному обеспечению. Однако, выпущенное приложение Photo Finder дает возможности поиска людей в интернете.

Генеральный директор Face.com Гил Хирш (Gil Hirsh) говорит, что запущенный сервис позволяет разработчикам применять их технологии для распознавания лиц в собственных приложениях.

Гил Хирш говорит, что систему можно использовать для поиска своих родственников на популярном сервисе Flickr, в газетах или на видео в YouTube.

Подобные программы раньше были в распоряжении у пограничной службы Великобритании — UK Border Agency. Также кое-какие подобные инструменты присутствуют в Google Picasa и Facebook.

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

Однако, существуют серьезные опасения по поводу правильного использования технологий и их влияния на личную жизнь. Саймон Дэвис (Simon Davies), директор Privacy International считает, что новые технологии затрагивают тему неприкосновенности жизни людей в интернете. Privacy International, по его словам, будет настаивать в этом случае на более строгих международных ограничениях.

Программа распознавания лиц по фото онлайн

Случаются ситуации, когда нам нужно узнать информацию о человеке, который присутствовал в определенном месте или где-то работал. Можно поискать сведения о нем в интернете, для этого существует масса сервисов. Но, если, кроме его фотографии, ничего не имеется, то выход тоже есть – работа с программами, в режиме онлайн распознающих человека по фото, и способных найти либо похожих людей, либо аккаунт юзера в социальных сетях. Также можно воспользоваться поисковыми системами – они найдут профиль человека в соцсетях или укажут знаменитостей, с которыми замечено сходство. И, если вам нужна программа для распознавания лиц людей по фото в режиме онлайн, то сегодня я расскажу о нескольких сервисах. И среди них вы выберете тот, который сможет наиболее полно удовлетворить запрос по имеющейся фотографии.

Как распознать лицо человека по фотографии

Поиск по фото выполняется при помощи таких сервисов, как ставшее популярным в последнее время российское приложение PicTriev, Blippar, Betaface, а также поисковых систем . Изображения должны быть достаточно качественными, чтобы гарантировать высокую степень узнаваемости, а лицо – открытым и четким. Если сервис не смог выполнить поиск по причине некоторой размытости фото, обрабатываем изображение в фоторедакторе и добиваемся наилучших параметров. После этого заново загружаем в окно и включаем поиск.

Теперь разберем по порядку каждую из программ.

Поисковые системы Google и Yandex для распознавания лиц

  1. Переходим в поиск картинок Google.
  2. В строке поиска находится значок фотоаппарата, после нажатия на который производятся действия с картинкой.
  3. Изображение можно перетащить (в т. ч. и сразу из интернета), загрузить файлом с компьютера, а также указать его URL.
  4. Запускается поиск и на полученных результатах мы видим найденное изображение (можно посмотреть в разных размерах) и похожие на него, а также сайты, на которых размещена искомая картинка.

Что ответил Google

Поиск по картинке Yandex работает по тому же принципу и результаты выдает в таком же стиле, как и Google.


Итоги поиска Yandex

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

PicTriev — онлайн-сервис, который поможет найти человека по фото

Фото загружается на сервис PicTriev в виде файла либо URL-ссылки. В итогах поиска показаны процент принадлежности к мужскому либо женскому типу лица, а также предполагаемый возраст. Результаты могут сильно не совпадать.

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

Betaface — программа для профессионалов

Betaface – это сервис для профессионалов и ориентирован на медиа-компании. После автоматического распознавания лица выдается вся информация, которую удалось узнать. Продукт платный, но для ознакомления воспользуемся демо-версией Betaface. Нажимаем “ Начать обнаружение ” и загружаем фотографию на сайт.

Сервис выдает следующие данные:

  • уровень привлекательности;
  • возраст;
  • наличие лысины/ челки;
  • размер носа/ губ и другие нюансы.

Интересная информация от Betaface

Также Betaface предлагает поискать совпадения с людьми из базы знаменитостей или Википедии . На каждом из найденных изображений будет указан процент совпадений. Фото с самым высоким показателем должно показать, кто изображен на оригинале.

Процент схожести со знаменитостями

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

Blippar — мобильное приложение для распознавания людей

Blippar – мобильное приложение для устройств с ОС Andro >предоставляет в результатах поиска профиль пользователя в социальных сетях, а также все, чем он интересуется и что предпочитает . Сервис находится в стадии развития и пока может “познакомить” нас только с известными людьми. Вбив в поиск фотографию знаменитости, мы узнаем, кто это, какие книги читает, где бывает, что смотрит и многое другое.

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

FindFace — программа от российского разработчика

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

Итак, чтобы найти человека (если у него есть аккаунт ВКонтакте), переходим на FindFace.

Главная страница FindFace

Главная страница очень простая – ничего лишнего, только форма, в которой уже стоит галочка в окошке, означающая согласие юзера с пользовательским соглашением (ссылка на него кликабельна и можно сразу же с ним ознакомиться). Без этого согласия пользоваться поиском FindFace не получится . Приложение доступно как в веб-версии, так и на устройствах с ОС Andro >Найди одинаковых! ” и разрешаем сайту получить доступ к нашему профилю ВКонтакте (который и будет аккаунтом на FindFace).

Последний представлен в трех вариантах:

Статус Особенности
Бесплатный 30 бесплатных запросов
Premium 75 запросов в месяц
VIP 300 запросов в месяц

Есть возможность получить Premium аккаунт бесплатно на месяц – для этого нужно пригласить воспользоваться сервисом 10 друзей, поделившись ссылкой ВКонтакте или отправив ее на электронную почту выбранным получателям.

Дальнейший порядок действий:

    Загружаем или перетаскиваем фотографию в специальное поле (весом не больше 5 Мб и в форматах JPG или PNG).

Работаем в FindFace

  • Поиск осуществлен, и мы видим, что ВКонтакте найден 51 человек, у которых на фотографии изображен Владимир Владимирович Путин.
  • С этой страницы можно просмотреть профиль пользователя (5 раз на бесплатном аккаунте FindFace, неограниченное количество раз – на Premium и VIP), задать параметры либо начать новый поиск.
  • Задаем параметры поиска

    В конце 2020 года была запущена версия сервиса FindFace для поиска в Twitter, но с администрацией этой социальной сети деятельность не была согласована, и при переходе по ссылке страница выдает ошибку .

    Распознавание лиц в реальном времени

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

    2 ответа 2

    Нужно определять и сравнивать набор биометрических / антропометрических данных лица. С помощью OpenBR + несложной СУБД можно решить.

    Еще есть интересные вещи — Visage SDK и DLIB

    Всё ещё ищете ответ? Посмотрите другие вопросы с метками android или задайте свой вопрос.

    Похожие

    Подписаться на ленту

    Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

    дизайн сайта / логотип © 2020 Stack Exchange Inc; пользовательское содержимое попадает под действие лицензии cc by-sa 4.0 с указанием ссылки на источник. rev 2020.11.9.35389

    Российская технология распознавания лиц признана лучшей в мире

    Американское агентство передовых исследований в области разведки совместно с Национальным институтом стандартов и технологий США протестировало разные методы распознавания лиц и признали лучшей разработку российской компании NtechLab. Её алгоритмы применяются в приложении FindFace, служащем для поиска людей в социальной сети «ВКонтакте» по их фотографии, и позволяют найти нужного человека среди 1 миллиарда пользователей всего за полсекунды.

    Мастер Йода рекомендует:  Онлайн-курсы по основам Microsoft Azure

    Разработка NtechLab была признана лучшей в двух номинациях из трёх: «Скорость идентификации» и «Точность верификации». Представители NtechLab заявили, что победа в конкурсе американской разведки является своего рода бенчмарком в области безопасности, на результаты которого ориентируются заказчики готовых решений и потенциальные инвесторы. Как сообщается, признание Национальным институтом стандартов и технологий США является одним из самых престижных и важных для любой разработки, так как оно определяет текущий уровень развития каждой конкретной технологии.

    Пишем веб-приложение для распознавания лиц за час

    В предыдущем уроке, посвященном OpenCV, мы рассказали, как отслеживать цветной объект в реальном времени. Теперь мы будем использовать PiCam для распознавания лица в режиме реального времени с помощью Python, как вы можете видеть ниже:

    Этот проект был выполнен с помощью «Open Source Computer Vision Library», OpenCV. В этом уроке мы сосредоточимся на Raspberry Pi (так, Raspbian как OS) и Python, но я также проверил код на My Mac, и он также отлично работает. OpenCV был разработан для эффектного вычисления и работы в реальном времени. Таким образом, он идеально подходит для распознавания лиц в реальном времени с помощью камеры.

    Чтобы создать полный проект по распознаванию лиц, мы должны работать на 3 очень разных этапах:

    1. Обнаружение лиц и сбор данных
    2. Обучение распознавателя
    3. Распознавание лица

    На приведенной ниже блок-схеме показаны этапы:

    Шаг 1: Список деталей

    Шаг 2: Установка пакета OpenCV 3


    Я использую Raspberry Pi V3, обновленный до последней версии Raspbian (Stretch), поэтому лучший способ установить OpenCV — следовать отличному учебному пособию, разработанному Адрианом Розброком: Raspbian Stretch: Установка OpenCV 3 + Python на Raspberry Pi V3.

    Я попробовал несколько разных руководств по установке OpenCV на моем Pi. Учебник Адриана — лучший. Я советую вам сделать то же самое, следуя его указаниям шаг за шагом.

    После того, как вы закончите установку по учебнику Адриана, у Вас должна быть виртуальная среда OpenCV, готовая запускать наш эксперимент на Raspberry Pi.

    Перейдем к нашей виртуальной среде и убедитесь, что OpenCV 3 правильно установлен.

    Адриан рекомендует запускать команду «source» каждый раз, когда вы открываете новый терминал, чтобы обеспечить правильную настройку системных переменных.

    Затем перейдем к нашей виртуальной среде:

    Если вы видите текст (cv), предшествующий вашему запросу, то вы находитесь в виртуальной среде cv:

    Адриан обращает внимание, что виртуальная среда cv Python полностью независима и секвестрирована из стандартной версии Python, включенной в загрузку Raspbian Stretch. Таким образом, любые пакеты Python в каталоге глобальных пакетов сайтов не будут доступны для виртуальной среды cv. Аналогично, любые пакеты Python, установленные в сайтах-пакетах cv, не будут доступны для глобальной установки Python.

    Теперь введите интерпретатор Python:

    и убедитесь, что вы используете версию 3.5 (или выше)

    Внутри интерпретатора (появится «>>>») импортируйте библиотеку OpenCV:

    Если сообщений об ошибках не выходят, значит OpenCV правильно установлен на ВАШЕЙ PYTHON ВИРТУАЛЬНОЙ СРЕДЕ.

    Вы также можете проверить какая версия OpenCV установлена:

    Должен появиться 3.3.0 (или более высокая версия, которая может быть выпущена в будущем). Вышеупомянутый терминал PrintScreen показывает предыдущие шаги.

    Шаг 3: Тестирование Вашей Камеры

    Как только вы установите OpenCV в свой RPi, давайте проверим, работает ли ваша камера правильно.

    Я предполагаю, что у вас есть PiCam, уже установленный на вашем Raspberry Pi.

    Введите ниже код Python в вашу среду IDE:

    Вышеприведенный код будет захватывать видеопоток, который будет создан вашим PiCam, и отображать его как в цвете BGR, так и в режиме Gray.

    Обратите внимание, что я повернул камеру по вертикали из-за того, что она собрана. Если это не ваше дело, прокомментируйте или удалите командную строку «flip».

    Вы также можете загрузить код из GitHub: simpleCamTest.py

    Для выполнения введите команду:

    Чтобы закончить программу, вы должны нажать клавишу [ESC] на клавиатуре.

    Щелкните мышью на окне видео, прежде чем нажимать [ESC]

    На приведенном выше рисунке показан результат.

    Некоторые разработчики обнаружили проблемы при попытке открыть камеру (сообщение об ошибке «Ошибка подтверждения»). Это может произойти, если камера не была включена во время установки OpenCv, поэтому драйверы камеры не установлены правильно. Чтобы исправить, используйте команду:

    Вы также можете добавить bcm2835-v4l2 в последнюю строку файла / etc / modules, чтобы драйвер загружался при загрузке.

    Чтобы узнать больше о OpenCV, Вы можете ознакомитьсяс уроком: загрузка -video-python-opencv-tutorial

    Шаг 4: Определение Лица

    Самой основной задачей Распознавания Лица является, конечно же, «Определения Лица». Прежде всего, вы должны «захватить» лицо, чтобы распознать его, по сравнению с новым лицом, захваченным в будущем.

    Наиболее распространенный способ обнаружения лица (или любых объектов), использует «классификатор каскадов Хаар».

    Обнаружение объектов с использованием «классификатора каскадов Хаар» — эффективный метод обнаружения объектов, предложенный Полом Виолой и Майклом Джонсом в своей статье «Быстрое обнаружение объектов с использованием расширенного каскада простых функций» в 2001 году. Это подход, основанный на механизме обучения, каскадная функция обучается из множества положительных и отрицательных изображений. Затем он используется для обнаружения объектов на других изображениях.

    В уроке мы будем работать с распознаванием лиц. Первоначально алгоритм требует много положительных изображений (изображений лиц) и негативных изображений (изображений без лиц) для обучения классификатора. Затем нам нужно извлечь из него функции. Хорошей новостью является то, что OpenCV поставляется с тренером, а также с детектором. Если вы хотите обучить свой классификатор для любого объекта, такого как автомобиль, самолеты и т. Д., Вы можете использовать OpenCV для его создания. Его полная информация приведена здесь: Обучение каскадного классификатора.

    Если вы не хотите создавать свой собственный классификатор, OpenCV уже содержит много предварительно подготовленных классификаторов для лица, глаз, улыбки и т. Д. Эти файлы XML можно загрузить из каталога haarcascades.

    Достаточно теории, давайте создадим детектор лица с OpenCV!

    Загрузите файл: faceDetection.py из GitHub.

    Верьте или нет, несколько строк кода — все, что вам нужно, чтобы обнаружить лицо, используя Python и OpenCV.

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

    Это строка, которая загружает «классификатор» (который должен находиться в каталоге с именем «Cascades /» в каталоге вашего проекта).

    Затем мы установим нашу камеру и внутри цикла, загрузим входное видео в режиме серого (то же, что мы видели раньше).

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

    • grey— это входное изображение в оттенках серого.
    • scaleFactor — это параметр, определяющий размер изображения при каждой шкале изображения. Он используется для создания масштабной пирамиды.
    • minNeighbors — параметр, указывающий, сколько соседей должно иметь каждый прямоугольник кандидата, чтобы сохранить его. Более высокое число дает более низкие ложные срабатывания.
    • minSize — минимальный размер прямоугольника, который считается лицом.

    Функция будет определять лица на изображении. Затем мы должны «маркировать» лица на изображении, используя, например, синий прямоугольник. Это делается с помощью этой части кода:

    Если грани найдены, они возвращают позиции обнаруженных лиц в виде прямоугольника с левым углом (x, y) и имеют «w» в качестве его ширины и «h» как его высоту ==> (x, y, w, час). См. Приведенную выше картинку.

    Как только мы получим эти координаты, мы можем создать «ROI» (рисованный прямоугольник) для лица и представить результат с помощью функции imshow ()

    Запустите вышеупомянутый скрипт python в вашей среде python, используя терминал Rpi:

    Вы также можете включить классификаторы для «обнаружения глаз» или даже «обнаружения улыбки». В этих случаях вы будете включать функцию классификатора и рисовать прямоугольник внутри контура лица, потому что не было бы смысла обнаруживать глаз или улыбку за пределами лица.

    Обратите внимание, что на Pi, имея несколько классификаторов в одном коде, будет замедляться обработка, как только этот метод обнаружения (HaarCascades) использует большую вычислительную мощность. На системном блоке легче запустить его.

    На GitHub вы найдете другие примеры:

    И в приведенной выше картине вы можете увидеть результат.

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

    Шаг 5: Сбор данных

    Прежде всего, я должен поблагодарить Рамиза Раджи за его великую работу над Распознаванием Лица на фотографиях:

    а также Anirban Kar, который разработал очень всеобъемлющий учебник с использованием видео:

    Я очень рекомендую Вам взглянуть на оба учебника.

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

    Сначала создайте каталог, в котором вы разрабатываете свой проект, например, FacialRecognitionProject:

    В этом каталоге, помимо 3 сценариев python, которые мы создадим для нашего проекта, мы должны будем сохранить на нем классификатор лица. Вы можете скачать его с моего GitHub:

    Затем создайте подкаталог, в котором мы будем хранить наши образцы лица и назовите его «dataset»:

    И загрузите код из GitHub: 01_face_dataset.py

    Код очень похож на код, который мы писали для обнаружения лиц. Мы добавили, что это была «команда ввода» для захвата идентификатора пользователя, который должен быть целым числом (1, 2, 3 и т. Д.),

    И для каждого из захваченных кадров мы должны сохранить его как файл в каталоге «dataset»:

    Обратите внимание, что для сохранения вышеуказанного файла необходимо импортировать библиотеку «os». Имя каждого файла будет следовать за структурой:

    Например, для пользователя с face_ >

    Как показано на фотографии моего Pi. В моем коде я собираю 30 образцов из каждого идентификатора. Вы можете изменить его на последнем «elif». Число выборок используется для разрыва цикла, в котором захватываются образцы лица.

    Запустите скрипт Python и запишите несколько идентификаторов. Вы должны запускать скрипт каждый раз, когда хотите сгенерировать нового пользователя (или изменить фотографии для уже существующего).

    Шаг 6: Тренировка

    На этом втором этапе мы должны взять все пользовательские данные из нашего набора данных и «инструктор» в OpenCV Recognizer. Это делается непосредственно с помощью определенной функции OpenCV. Результатом будет файл .yml, который будет сохранен в каталоге «trainer /».

    Итак, давайте начнем создание подкаталога, в котором мы будем хранить подготовленные данные:

    Загрузите с GitHub второй скрипт python: 02_face_training.py

    Убедитесь, что у вас установлена библиотека PIL на вашем Raspberry Pi. Если нет, запустите следующую команду в терминале:

    Мы будем использовать в качестве распознавателя, LBPH (LOCAL BINARY PATTERNS HISTOGRAMS) Face Recognizer, включенный в пакет OpenCV. Мы делаем это в следующей строке:

    Функция «getImagesAndLabels (path)» будет принимать все фотографии в каталоге: «dataset /», возвращая 2 массива: «Идентификаторы(lds)» и «Лица(Faces)». С этими массивами в качестве входных данных мы будем «обучать наш распознаватель»:

    В результате файл с именем «trainer.yml» будет сохранен в каталоге тренера, который был ранее создан нами.

    Это оно! Я включил последний оператор печати, который я отобразил для подтверждения, количество лиц, которых мы обучили.

    Каждый раз, когда вы выполняете Фазу 1, Фаза 2 также должна быть запущена.

    Шаг 7: Распознавание лица

    Теперь мы достигли заключительной фазы нашего проекта. Здесь мы увидим лицо на нашей камере, и если бы этот человек был сфотографирован и обучен раньше, наш распознаватель сделает «обработку», возвращающее свой идентификатор и индекс, показавший, насколько уверен в этом признак распознаватель.

    Загрузите скрипт python 3-й фазы из GitHub: 03_face_recognition.py.

    Мы включаем здесь новый массив, поэтому мы будем отображать «имена», а не пронумерованные идентификаторы:

    Так, например: Marcelo будет пользователем с >

    Затем мы обнаружим лицо, такое же, что и раньше, с помощью классификатора haasCascade. Имея обнаруженное лицо, мы можем назвать наиболее важную функцию в приведенном выше коде:

    Функция ecognizer.predict () Принимает в качестве параметра захваченную часть лица, подлежащую анализу, и возвращает своего вероятного владельца, указывая его идентификатор и степень уверенности распознавателя в связи с этим совпадением.

    Обратите внимание, что индекс доверия будет возвращать «ноль», если он будет считаться идеальным совпадением.

    И наконец, если распознаватель может определить лицо, мы помещаем текст над изображением с вероятным идентификатором и насколько «вероятность (probability)» в% соответствует правилу («вероятность» = 100 — индекс доверия). Если нет, на лицо помещается ярлык «неизвестный».

    Ниже gif с результатом:

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

    Шаг 8: Вывод

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

    Подробнее и окончательный код, Вы можете найти на депозитарий GitHub: OpenCV-Face-Recognition

    Ниже представлен обзор будущего урока, в котором мы рассмотрим «автоматическую слежение за лицом и другие методы обнаружения лиц»:

    Добавить комментарий