Программа для поиска фото по лицу на компьютере
Итак, все фотографии разложены по папкам и находить фотографии Новых годов или дней рождения стало быстро и удобно. Фотографии из отпусков тоже можно найти относительно быстро, но хотелось большего. А именно, искать по людям и не просто по людям, а по набору людей, например, найти все совместные фотографии детей или фотографии с бабушкой и т.д.
Поэтому я решил немного углубиться в так называемый Face Recognition.
Все просто?
С первого взгляда, когда смотришь на тематические статьи, кажется, что со стороны пользователя все просто: взял по одной фотографии человека, сказал системе, что это, мол, Саша, Алиса, Тима; потом на вход дается набор фотографий и система однозначно (ну ок, не однозначно, а с некоторой большой вероятностью) устанавливает «кто есть кто». Но на практике так работает, если надо отличить Байдена от Обамы на протокольных фотографиях из Белого дома. Не совсем так работает, когда нужно различать лица на домашних фотках (плохой ракурс, освещение, перекрытие лиц предметами и т.д.). Совсем не так работает, когда на фотографиях близкие родственники. И почти никак не работает если фотографии покрывают всю жизнь от младенчества до зрелости (я и сам часто не могу отличить фотографию одного своего ребенка от другого если нет контекста или хотя бы даты снимка).
Еще, смотря на коммерческие системы, кажется, что стоит дать на вход одну фронтальную фотографию и лицо будет распознано во всех ракурсах и на всех кадрах. Но, как показал опыт, часто многие системы просто пропускают «не очень хорошие» лица: перекрытые, в профиль и т.д, а пользователь даже и не узнает, что на этой фотографии лицо было проигнорировано, да и доступ к алгоритмам коммерческих систем не всегда есть, так что пришлось работать с тем, что нашел в opensource.
В итоге, помимо самой системы распознавания, пришлось делать пользовательский интерфейс проверки качества распознавания, добавления новых шаблонов, повторного распознавания и других мелочей.
Но об этом чуть позже.
Белогривые лошадки?
Вначале, я, как любитель серверов и всего облачного, решил, что, наверное, можно не изобретать велосипед и воспользоваться готовыми облачными решениями.
Но, посмотрев на цены популярных облачных решений и сравнив со своим объемом информации, понял, что на те деньги которые потребуются, чтобы пропустить через облака всю домашнюю медиатеку, можно и дома поставить не такой уж плохой сервер.
В итоге «белогривые лошадки» помчались без оглядки мимо, а я принялся за реализацию локально-серверного варианта. Тем более, что какой-никакой сервер дома уже стоял и процессор там большую часть времени простаивал.
На случай, если кого интересуют облачные решения, оставлю пару ссылок:
Там весьма богатый функционал, не только распознавание лиц. И, для небольших объемов, он даже местами бесплатный.
CPU -> GPU
Сначала я, будучи наивным, запустил поиск лиц по алгоритму CNN (см. ниже) на CPU.
В итоге одна фотография в 1000 пикселей по длинной стороне, обрабатывалась пару минут. Прикинув объем медиатеки, обозначенный в заголовке, и произведя нехитрые расчеты, я довольно сильно приуныл, тратить четыре года чистого процессорного времени в ожидании обработки всех фотографий в мои планы совсем не входило.
Но, как и многие, я знал, что для ускорения некоторых типов вычислений можно применять GPU. Так вот, Face Recognition как из тех типов вычислений. Поэтому, почитав отзывы и подобрав подходящий вариант, я помчался на местную онлайн барахолку и за довольно небольшую сумму наличности купил GeForce GTX 1050 Ti. И, даже на такой скромной карточке, процесс пошел куда шустрее… меньше секунды на одну фотографию! Но, увы, это не происходит по щелчку пальцев. Вначале надо чтобы весь зоопарк библиотек смог с этой видеокарточкой заработать.
И тут начинается веселье: сперва надо поставить драйвера для видеокарточки и CUDА. Потом поставить… библиотеки с поддержкой CUDА? Нет, потом надо ставить сборочное окружение, так как теперь все те библиотеки, что запросто встали из репозиториев без поддержки GPU ускорения придется собирать и ставить руками.
Настройка всего этого зоопарка — тема отдельной статьи и даже не одной (благо на просторах Интернета их немало), но в первый раз все это заняло пару вечеров и немало дискового пространства.
Итак, сервер настроен, библиотеки стоят, вентиляторы охлаждения CPU и GPU работают на малых оборотах в ожидании задач, можно и начать распознавать лица.
Этапы распознавания
Весь этап распознавания лиц на фотографии можно разбить на несколько этапов:
Нахождение лиц на фотографии (face detection)
Поиск элементов лица (landmarks detection)
Кодировка лица (face encoding)
Сравнение лица с шаблонами (face matching)
Нахождение лиц на фотографии можно делать разными способами, но самые популярные это:
Гистограмма направленных градиентов (HOG).
Алгоритм на базе сверточных нейронных сетей (CNN).
HOG работает быстро, вполне достаточно CPU, но распознает хуже и только фронтальные лица.
CNN целесообразно использовать только на GPU, зато распознает гораздо лучше и во всех возможных позах.
Я использовал реализации этих алгоритмов из библиотеки face_recognition (пришлось немного ее модифицировать, чтобы бы заставить работать с элементами лица полученными в других библиотеках, см. ниже). Эта библиотека является по сути удобной оберткой над dlib.
При первом же прогоне полноформатной фотографии на 8 мегапикселей с цифрового фотоаппарата, видеокарта сказала: «Упс» и выкинула исключение о том, что, мол, милый друг, моих 4 GB видеопамяти для этой задачи маловато. Поэтому волевым решением было решено урезать все входные фотографии до 1000 пикселей по длинной стороне ( max_image_size в конфиге, если что), этого размера вполне достаточно, если вас не сильно интересуют лица всяких прохожих далеко на заднем плане (о да, иногда, в процессе отладки, там попадались довольно странные лица)
Поиск элементов лица заключается в поиске опознавательных точек. Необходимый минимум — это углы глаз и нос, причем, довольно часто, соотношение пропорций расстояний между глазами и носом довольно точно позволяет идентифицировать лицо. Но чаще происходит также распознавание рта, овала лица и бровей.
Некоторые алгоритмы также позволяют находить элементы лица в трёхмерных координатах, что полезно, например, при поиске направления поворота лица.
Я «игрался» с двумя алгоритмами: первый из упомянутой выше библиотеки face_recognition (она же dlib), второй из библиотеки face-alignment.
Первый работает, в общем-то, неплохо, но увы, только на фронтальных фотографиях. На фотографиях в профиль начинается «веселье». И самое главное «веселье» в том, что алгоритм не определяет фас или профиль, а просто находит фас по мере всех своих «нейроспособностей». В итоге весьма весомая часть распознанных лиц выглядит примерно так:
Вначале, решил «в лоб» научить нейронную сеть отличать хороший результат от плохого, руками отобрал примерно 10000 фотографий с хорошим/плохим результатом настроил нейронку и получил точность… около 80%, что было совсем недостаточно, так как до этого система примерно на таком же количестве искала точки корректно. Да, немного точность повысилась, но процент брака, а соответственно потенциальной ручной работы, был велик.
Затем я решил предпринять попытку настроить нейронку на распознание лиц в фас и в профиль. И… достиг примерно такого же результата. В общем, для таких экспериментов нужно куда большая база образцов, иначе точность будет так себе. На все эти мытарства ушло около месяца, а потом я наткнулся на второй алгоритм, и проблемы исчезли. Да, я немного углубил свои познания в нейронных сетях, но, так сказать, осадочек остался.
Второй алгоритм, кончено тоже не идеален, но, во-первых, процент брака меньше, и, во-вторых, и в главных, брак такой, что его довольно легко распознать алгоритмически. Когда не происходит распознавания черт лица на выходе идет такая абракадабра, что простым анализом, например, линия рта или овала лица не может иметь острых углов или размер глаза не может быть больше трети от лица, легко отсеивается.
Для лучшего распознавания элементов лица некоторым алгоритмам (например из библиотеки deepface) желательно чтобы лицо было выровнено по линии глаз, но некоторые обходятся и без этого (из face_recogintion, dlib).
Кодировка лица заключается в переводе изображения лица (или только координат полученных элементов лица) в то представление, в которым можно осуществлять сравнение двух лиц. Чаще всего это матричный вид. Иногда этот этап совмещен с предыдущим. Особых тонкостей и возможностей тонкой настройки тут нет, просто приходиться использовать вариант из той библиотеки, с помощью которой осуществлен поиск элементов лица.
После кодировки лицо можно сравнить с кодировками шаблонов других лиц и по «близости» к ним судить о принадлежности одному или другому человеку.
Вот как раз с шаблонами и началась самая большая заморочка.
При малом количестве шаблонов (я в начале взял по одной фотографии лица каждого человека которого надо было распознавать, потом по 10) у меня так и не получилось подстроить пороги срабатывания так, чтобы близкие родственники однозначно распознавались, кто есть кто. Поставишь большой порог, система путает братьев/сестер, поставишь маленький, и для многих фотографий соответствия вообще не находится. В итоге, методом многократных итераций, подобрал максимальный порог при котором не было путаницы между отдельными людьми и смирился с тем что шаблонов придется делать много, очень много. Теперь если взять фотографии за тот год из которого нет ни одного шаблона, то лишь где-то две трети лиц будут однозначно распознаны, остальные либо попадут в категорию «вроде бы похож» (weak match) либо вообще не распознаны, такие приходиться посмотреть глазами, добавить в шаблоны и повторить итерацию сравнения.
«Профильно-фронтальные» проблемы
Прогнав через систему фотографии за несколько лет, я понял, что большинство несоответствий идет тогда, когда лицо повернуто в сторону, т. е. алгоритм не проводит соответствие между лицами, принадлежащими одному человеку, но под разным углом к камере.
К сожалению, я не смог найти в открытом доступе готовых алгоритмов которые решают эту задачу и смирился с тем что шаблонов потребуется много. При этом я также понял, что в большинстве случаев для исходных задач (а ну-ка найди мне фотографии Алисы с бабушкой) чаще всего фотографии в профиль не так важны, поэтому добавил в систему возможность отсекать фотографии в профиль, тем самым снижая объем ручной работы. Так что, если кто-то захочет воспользоваться моей системой, но при этом не готов на подвиг в виде бессонных ночей рассматривания сотен и тысяч (пусть даже любимых) лиц, то можно просто использовать конфигурационный файл с именем frontal.cfg и снизить объем последующей ручной работы в несколько раз.
А что насчет видео?
Разобравшись с фотографиями, я решил, а не замахнуться ли нам на Вильяма, понимаете ли, нашего Шекспира распознавание лиц в видео? Эта задача, с практической точки зрения, выглядела даже более полезной чем предыдущая, так как, если на фотографии по иконкам в режиме предпросмотра можно довольно быстро понять кто есть кто, то на видео эта задача уже практически нерешаемая, лицо-то в видео далеко не всегда на первом же кадре. По реализации эта задача не очень сильно отличается от работы с фото, только вместо одного кадра на файл их теперь несколько тысяч.
В начале сделал «в лоб»: распознавать все кадры и все лица, но после прогона первых нескольких дней было решено сделать несколько оптимизаций, так как объем ручной работы предстоял немалый, да и ждать обработки всех видео файлов пришлось бы не один месяц.
Во-первых, распознавать только первые несколько минут видео ( max_video_frames в конфиге) так как, чаще всего, все главные действующие лица уже появились на видео. Во-вторых, распознавать не каждый кадр, а с некоторым прореживанием ( video_frames_step в конфиге) так как главные действующие лица не мелькают в кадре лишь на мгновение, а держатся долго. Ну и в довершение, лицо должно попасться не в одном кадре, а в нескольких ( min_video_face_count в конфиге) по той же причине, если лицо только мигнуло, то для исходной задачи оно не так уж и важно.
Впоследствии я также попытался применить наработанную базу к распознанию лиц с камер видеонаблюдения (с целью подключить к умному дому), но это уже другая история. Если кратко, все это довольно просто делается с помощью написания буквально пары десятков строк. Но, увы, те камеры, что сейчас у меня стоят и под тем углом, что они стоят, не обеспечивают достаточного разрешения, чтобы уверенно работать в нужном режиме, так что, пока, от этой идеи отказался.
Если кому-то захотелось воспользоваться моими наработками, все исходники и краткая инструкция тут.
Под катом я приведу
несколько скриншотов и сценариев использования системы
Представим, что вы из тех людей, что читают README файлы и систему уже поставили и даже запустили.
Перед вами главное окно. Запустим распознавание папки:
«Recognition» -> «Add new files…»
(первый запуск будет довольно долгий, так как библиотеки подгружают необходимые модели из Интернета)
Получим кучу нераспознанных лиц:
Добавим (кликом на нужные или выделением с последующим кликом на одну из выделенных) их в шаблоны, введем новое имя для прекрасной незнакомки:
По мере добавления новых людей, список будет расширяться и вводить имена будет не нужно, достаточно выбрать из уже введённых ранее (заглавную фотографию человека можно заменить подложив в папку с шаблонами файл 0_face.jpg).
Если просочилась ошибка поиска элементов лица, до данную фотографию опасно добавлять в шаблоны, так как совершенно непредсказуемо, что именно потом с ним совпадет. Для этого есть галочка «Bad encoding», текущая фотография будет отнесена к данному человеку, но в сравнениях с другими она участвовать не будет.
Повторим сравнение: «Match» -> «Rematch folder…».
После этого часть лиц будет однозначно распознана, а часть попадет в категорию «weak», т.е. похож, но не совсем. По этой категории следует пройтись отдельно и также добавить в шаблоны. Можно не бояться добавить в шаблоны много, это лишь улучшит качество распознания, выделять группу лиц можно с помощью Shift и Ctrl.
Пока лица находятся в категории «weak» или «unknown» они не будут синхронизироваться и по ним не будет осуществляться поиск.
Если для понимания «кто есть кто» нужно больше контекста, есть две подсказки, во-первых, на фотографии отображается год (предполагается что фотографии именованы с помощью системы из прошлой статьи), во-вторых, по клику на иконку
откроется оригинал фотографии.
А если хочется узнать с каким именно шаблоном было совпадение можно кликнуть на иконку
(если она подсвечена зеленым, то значит именно эта фотография и была использована как шаблон).
Ну распознали мы все, а что дальше?
Как дальше искать людей? Теперь в базе данных есть информация по каждой фотографии, кто на ней изображен. Отлично! Но как смотреть теперь? Поскольку у меня основной системой просмотра фотографий сейчас является Plex, то я не придумал ничего лучше, чем экспортировать данные о людях на фото в эту его базу в виде тегов. К сожалению, открытого API у них нет, но, к счастью, его база просто хранится в sqlite файле и имеет не очень сложный формат. Поэтому я просто пишу туда теги на прямую. (Не буду грузить статью деталями реализации базы данных Plex, но, если кому-то они интересны, могут посмотреть в исходниках в файле plexdb.py).
Для синхронизации же непосредственно тегов я сделал отдельный скрипт. На веб не выносил, так как его проще регулярно запускать по крону.
face-rec-plexsync -a set_tags
Немного подождать и вуаля! Теперь можно искать!
И все было замечательно до тех пор, пока некоторое время назад кто-то особо талантливый в команде разработки Plex не поломал расширенный поиск. Так что искать по отдельным лицам можно, а вот уже по сложным критериям (несколько лиц, лицо и год и т.д. теперь нельзя). Баг у них на форуме висит уже больше года, народ жалуется, но воз и ныне там. Поэтому я добавил возможность поиска в консоль и если консоль такой же ваш друг, как и мой, то можно обойтись и ей. (Up: в момент когда статья была уже на финальной стадии, баг все-таки починили и в следующем релизе все должно работать)
Например, с помощью вот такого запроса, можно найти все фотографии с Тимой и Алисой за 2020 год
face-rec-db -a find_files_by_names -f 2020 -n Тима,Алиса
Понятно, что смотреть фотографии в консоли не очень интересно, но если добавить после команды что-то вроде
| xargs -I<> ln -s <> /mnt/multimedia/query/
то в нужной папке появятся символические ссылки на искомые файлы, а дальше можно просматривать их любой удобной программы, как обычную папку с фотографиями.
Так же, если вы для просмотра используете какую-либо другую систему работы с фотографиями, а слово «питон» для вас означает больше чем животное из отряда чешуйчатых, то, на базе модуля plexsync.py, вам не составит труда написать синхронизацию с вашей системой.
Разумеется это не полное описание всех возможностей, помимо описанного сценария, есть возможность, например, кластеризации, чтобы сгруппировать нераспознанные или плохо распознанные лица. Еще есть возможность поиска по фотографии (был ли вообще такой человек в домашнем архиве?). Еще можно запускать распознавание в консольном режиме или синхронизировать набор фотографий с базой Plex. Есть различные инструменты для работы с шаблонами и т.д.
Заключение
Вот такой вот небольшой пример наведения порядка в домашних фотографиях.
Многое уже сделано, стало гораздо удобнее, но еще есть масса «хотелок», надеюсь когда-нибудь и до них дойдут руки:
Распознать голос в видео и аудио записях. Есть десятки тысяч аудио заметок и искать по ним вообще невозможно, это даже хуже, чем видео.
Кроме лиц добавить распознание других объектов: животные, предметы.
Как фантазия на будущее, распознавать условия съемки и окружение: горы, море, в помещении и т.д.
Тоже, скорее из фантазий: попробовать научить нейронку отличать плохие фото от хороших на базе большой выборки, но боюсь, что будет точность как отличием фотографий фас и профиль, нужна очень большая выборка, пока такой нет.
Иногда мне кажется, оборачиваясь назад и оценивая затраченное время, что было бы проще оплатить какую-нибудь облачную систему, типа гугл-фото, которая предоставляет в каком-то виде подобный функционал, но, во-первых, локальное хранение (с бекапом, само собой) надежнее и быстрее, а, во-вторых, я получил неоценимый опыт и это главное!
В этой статье я хотел бы остановиться на алгоритмах распознавания лиц, а заодно познакомить вас с очень интересной и полезной библиотекой OpenCV. Уверен, что этот материал окажется полезным для новичков в этой области.
Что нам понадобится:
• Установленный Python 2.7 с библиотеками NumPy и PIL
• OpenCV 2-й версии
Здесь ссылка на материал по установке всех необходимых компонентов. Установка всего необходимого не составит труда.
Для начала давайте разберемся, как распознать лицо на фотографии. Во-первых, нужно найти, где на фото расположено лицо человека и не спутать его с часами на стене и кактусом на подоконнике. Казалось бы, простая задача для человека, оказывается не такой простой для компьютера. Для того, чтобы найти лицо мы должны выделить его основные компоненты, такие как нос, лоб, глаза, губы и т.д. Для этого будем использовать шаблоны (они же примитивы Хаара) на подобие таких:
Если шаблоны соответствуют конкретным областям на изображении, будем считать, что на изображении есть человеческое лицо. На самом деле подобных шаблонов гораздо больше. Для каждого из них считается разность между яркостью белой и черной областей. Это значение сравнивается с эталоном и принимается решение о том, есть ли здесь часть человеческого лица или нет.
Этот метод называется методом Виолы-Джонса (так же известен как каскады Хаара). Давайте представим, что у нас на фотографии не одно большое лицо, а много мелких. Если применить шаблоны ко всей картинке мы не найдем там лиц, т.к. они будут меньше шаблонов. Для того чтобы искать на всем фото лица разных размеров используется метод скользящего окна. Именно внутри этого окна и высчитываются примитивы. Окно как бы скользит по всему изображению. После каждого прохождения изображения окно увеличивается, чтобы найти лица большего масштаба.
Наглядно демонстрацию алгоритма можно посмотреть на этом видео:
И так мы нашли лицо на фотографии, но как определить, что это лицо именно того кого мы ищем? Для решения этой задачи будем использовать алгоритм Local Binary Patterns. Суть его заключается в том, что мы разбиваем изображение на части и в каждой такой части каждый пиксель сравнивается с соседними 8 пикселями. Если значение центрального пикселя больше соседнего, то пишем 0, в противном случае 1. И так для каждого пикселя у нас получается некоторое число. Далее на основе этих чисел для всех частей, на которые мы разбивали фотографию, считается гистограмма. Все гистограммы со всех частей объединяются в один вектор характеризующий изображение в целом. Если мы хотим узнать насколько похожи два лица, нам придется вычислить для каждого из них такой вектор и сравнить их. Рисунки ниже помогут лучше понять суть алгоритма:
Ну хорошо, давайте, наконец напишем немного кода. За основу я взял код из этой статьи.
Параметр cascadePath содержит имя файла с уже готовыми значениями для распознавания лиц. Этот файл можно взять из директории с OpenCV (opencv\build\etc\haarcascades\).
Далее создаем объект CascadeClassifier и объект распознавания лиц LBPHFaceRecognizer. На последнем остановимся поподробнее, точнее, на его параметрах. Первые два значения 1 и 8 характеризуют окрестности пикселя. Наглядно, что это такое можно продемонстрировать этой картинкой:
То есть первое число это радиус в котором мы выбираем пиксели, а второй число этих пикселей. Чем больше пикселей в окрестности точки мы возьмем, тем точнее будет наше распознавание.
Следующие параметры (8,8) характеризуют размеры областей на которые мы разбиваем исходное изображение с лицом. Чем оно меньше, тем больше будет таких областей и тем качественнее распознавание.
И наконец, последнее значение это параметр confidence threshold, определяющий пороговое значение для распознавания лица. Чем меньше confidence тем больше алгоритм уверен в том, что на фотографии изображено известное ему лицо. Порог означает, что когда уверенности мало алгоритм просто считает это лицо незнакомым. В данном случае порог равен 123.
Идем дальше. Напишем функцию, которая находит по определенному пути во всех фотографиях лица людей и сохраняет их.
Для примера я использовал БД лиц под названием Yale Faces. В ней есть 15 человек с разными выражениями лиц на каждой фотографии.
Имя каждого файла в этой БД выглядит следующим образом: subject01.sad. Сначала идет слово subject, далее порядковый номер человека, а после характеристика фото. Например, характеристика sad означает грустное лицо, happy веселое и т.п.
Функция get_images считывает каждую фотографию, кроме тех, что с окончанием .happy и выделяет ту область, где находится лицо. Фотографии с веселым выражением лица будем использовать на следующем шаге для распознавания, это будет контрольная выборка, т.е. те фото на которых мы будем проверять качество распознавания.
Так же из каждого названия файла извлекается номер человека на фотографии и сохраняется список labels. Каждой фотографии в итоге будет сопоставлен этот номер.
Функция faceCascade.detectMultiScale() определяет области на фотографии, где есть человеческие
лица. Она возвращает список с параметрами [x,y,w,h] для каждого найденного лица. Эти
параметры описывают прямоугольную область в том месте, где нашлось лицо.
Теперь давайте разберемся с параметрами функции:
image – исходное изображение
scaleFactor – определяет то, на сколько будет увеличиваться скользящее окно поиска на каждой итерации. 1.1 означает на 10%, 1.05 на 5% и т.д. Чем больше это значение, тем быстрее работает алгоритм.
minNeighbors — Чем больше это значение, тем более параноидальным будет поиск и тем чаще он будет пропускать реальные лица, считая, что это ложное срабатывание. Оптимальное значение 3-6.
minSize – минимальный размер лица на фото. 30 на 30 обычно вполне достаточно.
Ну что же, теперь мы можем создать набор лиц и соответствующих им меток. Давайте научим программу распознавать эти лица.
Указываем путь к нашим фото, получаем список с фотографиями и метками. А дальше запускаем нашу функцию тренировки с помощью алгоритма LBP. Ничего сверхъестественного в ней нет, просто передаем ей значения, полученные после запуска функции get_images(). Все остальное программа сделает сама.
И так у нас есть обученный «распознаватель» и есть набор счастливых лиц. Теперь нам необходимо попросить алгоритм распознать эти счастливые лица.
В цикле опять определяем расположение лица на каждом фото с окончанием .happy. Все параметры и процедуры такие же, как и на предыдущем этапе.
Для каждого найденного лица запускаем функцию recognizer.predict(), возвращающую номер-идентификатор субъекта, который предположительно находится на фото, а так же параметр confidence. Далее сравниваем значение, которое нам вернула функция с реальным номером субъекта, если они равны, распознавание прошло успешно.
Ну, вот и все, дальше в консоль выводятся результаты распознавания для каждой фотографии из контрольной выборки.
Первая программа распознавания лиц по фото, которая была доступна для обычных пользователей Рунета, называлась Findface. Она появилась в 2016 году и моментально стала дико популярной. Сервис опирался на фотобанк соцсети Вконтакте, и умел находить людей по фото с очень высокой точностью. В сентябре 2018 года программа перестала работать в прежнем режиме, сервис перешел в сферу обслуживания государственных заказов, а также крупных коммерческих организаций.
Успех данной программы распознавания лиц по фото онлайн не мог не заинтересовать других разработчиков. Сегодня в сети действует множество аналогов Findface, которые распознают людей не менее умело. В этой статье мы сделаем обзор 5 альтернативных программ распознавания по фото, которые легко устанавливаются на компьютер или телефон. Дополнительно рассмотрим их преимущества и недостатки.
1. Search Face
Это программа распознавания лиц по фото в Интернете из базы данных Вконтакте, то есть, полный аналог упомянутой выше FindFace. Умный алгоритм, опираясь на данные встроенной нейросети, быстро анализирует изображение и выдает подборку двойников и клонов. Сервис работает онлайн, то есть, ничего скачивать или устанавливать на устройство не нужно. Все, что потребуется – браузер и Интернет подключение.
- Вам поступит телефонный звонок. Запомните последние 5 цифр входящего номера;
- Введите эти числа в поле «Пинкод»;
- Укажите свой пароль;
- Таким образом, вы зарегистрировались в системе. Теперь жмите клавишу «Войти»;
- Загрузите исходное фото(или перетащите его на экран);
- Сервис сразу приступит к поиску и уже через пару секунд вы увидите результаты.
Мы проверили работу сайта, загрузив туда свое фото и программа действительно разыскала профиль ВК тестируемого человека. Ниже был приведен перечень похожих людей или двойников.
- Cкорость анализа данных;
- Высокая точность (исходное фото ни разу не попадало в Интернет);
- Простота интерфейса сайта;
- Пользоваться сервисом можно как с мобильного, так и с компьютера;
- В Play Market есть отдельное приложение;
2. Findme VK
Если вы ищете, как скачать бесплатно программу распознавания лиц, для начала протестируйте этот веб-сервис. Как и предыдущий, он функционирует онлайн и совершенно не требует регистрации:
Последняя будет немаленькой – вы познакомитесь с сотней своих двойников. Программа отсортирует похожие изображения и выгрузит их на экран, буквально, за 5 секунд.
- Скорость обработки информации;
- Отсутствие необходимости где-либо регистрироваться;
- Средний результат в точности;
- Азиатские лица программа различает плохо;
- Не подходит для поисков определенного человека;
Таким образом, если вы просто хотите посмотреть на своих двойников, площадка вам понравится. Но если вам нужно разыскать по фото конкретного человека, попробуйте другой вариант из нашего списка.
3. Сервис Яндекс.Картинки
Программное обеспечение распознавания лиц стоит немало, и оно вряд ли подойдет обычному пользователю Интернета. Такое оборудование приобретают крупные компании, супермаркеты, государственные службы.
Вот несколько компаний, которые реализуют программы для распознавания лиц в видеонаблюдении:
- Findface;
- Hikvision;
- Verilook Standard SDK.
Средняя цена за стартовый пакет софта – от 450 долларов. Как видите, профессиональные продукты вряд ли заинтересуют стандартного пользователя.
Один из самых востребованных веб-сервисов, который отлично работает бесплатно – это Яндекс.Картинки. Программа выполняет не только распознавание лиц по фото, но и ищет похожие картинки.
- Добавьте исходную картинку;
- Нажмите «Поиск»;
- Анализирует не только базу данных Вконтакте, но, вообще, весь Рунет;
- Больше шансов разыскать нужного человека;
- Яндекс выдаст все сайты, на которых загружено это или похожее фото;
- Очень много одинаковых картинок, что затруднит анализ результатов и займет гораздо больше времени;
Перечисленные выше сервисы позволяют распознавать лица как с компьютера, так и с телефона. Однако, с компа работать гораздо удобнее. Далее мы приведем программу для распознавания лиц по фото для Андроида, которую легко установить на смартфон.
4. Photo Sherlock
Это отличная мобильная программа для распознавания лиц в соцсетях, с очень высокими рейтингами в Play Market.
- Установите ее на телефон и разрешите ей доступ к камере и галерее;
- Загрузите изображение с карты памяти или сделайте фото;
- Нажмите клавишу «Найти это фото»;
- Маленький вес программы;
- Выдача результатов в Гугл;
- Ищет только полностью идентичные картинки или лица;
- Часто всплывает реклама, что раздражает и отвлекает;
Если вы хотите полюбоваться на своих двойников – воспользуйтесь лучше Search Face. Эксперимент нас позабавил – Путина программа нашла, а вот Жириновского почему-то нет.
В завершение приведем программу распознавания лиц для Айфона, которую также можно бесплатно скачать из официального магазина приложений.
5. Поиск по фото
Утилита находится в AppStore в свободном доступе. Она выполняет поиск и распознавание лица с фото исходника, основываясь на данных поисковых систем Google и Yandex. Совместима с операционной системой IOS 9.1 и старше.
- Найдите приложение в магазине;
- Установите его на телефон;
- Вызовите касанием боковую шторку слева;
- Добавьте файл с устройства или сделайте снимок;
- Если нужно, укажите нужный размер фото;
- Жмите «Поиск»;
- Часто вылетает;
- Долго приходится разбираться с интерфейсом,даже с помощью инструкции;
Технология распознавания лиц сегодня находится в периоде развития, на самом его пике. Хотите знать, как работает программа распознавания лиц, и насколько опасен такой софт для человечества? У нас есть развернутые статьи на эти темы, а здесь мы лишь кратко опишем принцип работы системы. Говоря простым языком, она анализирует соответствие исходного лица с тысячами других из своей базы данных. Идентификация происходит на основе 20 критериев – расстояние между точками на лице, анализ кожи, пор, глубина посадки черт и т.д.
Программы для распознавания лиц на видео сегодня устанавливают в супермаркетах, ночных клубах, аэропортах. Они позволяют вычислять людей из «черного» списка, помогают увеличить скорость обслуживания. Государственные системы распознавания лиц призваны снизить уровень преступности и повысить нашу безопасность.
Ну что же, статья подошла к финалу и теперь вы знаете, как называются лучшие программы распознавания лиц, которые может использовать обычный человек. Надеемся, вы найдете с их помощью того, кого потеряли.
Программа распознавания лиц : 11 комментариев
Здравствуйте! У меня есть фотография от 1897 года, на ней изображены три юноши. Один из них мой дед. Есть другая фотография от 1916 года, изображен конкретно мой дед. Как определить, какой юноша на первой фотографии является моим дедом? Какую использовать программу для идентификации лица? С уважением Лина
Здравствуйте, Лина.
В сети есть много онлайн-сервисов по определению схожести фото. Мы бы порекомендовали Вам сделать скрин фотографий и обрежьте по отдельности каждого из трех юношей. Загрузите в сервис и нажмите «Сравнение». Но учтите, что все они работают с определенной погрешностью. Тем более что фото старые.
А примеры конкретных сервисов можно? Что-то не могу найти ничего полезного, только поиск по соцсетям и сравнение с фото знаменистостей.
Подскажите как найти полную версию видеозаписи имея только небольшой кусок
делаешь скрин любого момента из видео, открываешь гугл, поиск по картинке. если поиск не дал результатов делаешь скрин из другого момента и повторяешь процедуру до получению результатов.
Надо найти человека
А первый сайт « Search Face» платный?
Findclone реально работает, но платный и чисто под ВК. Есть еще Find You под одноклассники — тоже неплох и бесплатный
Здравствуйте. Подскажите, пожалуйста, можно ли используя фото и программу на компе отследить перемещение работника в течении 12 часов по супермаркету с целью обнаружения хищения.Заранее спасибо.
Скажите пож-та ,есть ли программа : Я ввожу своё фото и хочу найти кровных родственников ?
Сегодня поговорим про популярный Findface — сервис поиска по фото, ведь многих пользователей интересует, что стало с платформой, и планирует ли она вновь работать в прежнем режиме.
Принцип работы сервиса поиска людей по фото
Findface – онлайн площадка, которая была способна разыскать любого человека по фото, даже если последнее было не самого лучшего качества. Сервис использовал крупнейшую российскую базу данных – ресурс Вконтакте! В смартфон можно было установить одноименное приложение, которое было доступно как в бесплатном режиме (облегченная версия), так и в платном (полный пакет).
С компьютера пользоваться сервисом было еще проще:
Также, можно было скачать Findface на компьютер – отдельную утилиту, работа с которой не требовала взаимодействия с браузером. Сервис поиска отлично искал людей даже по плохим фото – темным, мутным, подвергнутым различной ретуши или обработке. Результативность поиска достигала 70%!
Печальная правда
Сегодня российскую программу распознавания лиц Findface скачать бесплатно не получится, да и сайт перестал работать в прежнем режиме.
А там, огромными белыми буквами на красном фоне сияло объявление: с 1 сентября 2018 года сервис более не выполняет поиск людей по фото.
Точно также, у вас больше не получится скачать Findface бесплатно на Андроид – приложение исчезло из Play Market. Разумеется, запрос «скачать Findface бесплатно для Windows» также не привел к результату.
Что случилось?
Все просто, сервис поиска людей по фото себя перерос. Разработчики осознали с каким мощным потенциалом они научились работать, и «просекли» фишку: на технологии распознавания лиц сегодня можно нехило заработать!
Какие продукты сегодня разрабатывает бывший сервис поиска людей по фото?
- Различные системы безопасности, работающие на основе биометрических данных пользователей;
- Программы идентификации клиентов;
- Контроль доступа по лицевой верификации;
- Система обнаружения людей из «черных» списков;
- Программы для статистики и аналитики;
- Сервисы, направленные на ускорение обслуживания, например, в аэропортах, банках, метро и т.д.
А вы знали, что национальный институт стандартов и технологий, располагающийся в США, признал, что алгоритмы Findface являются самыми лучшими в мире! Компания работает с крупнейшими мировыми организациями, предоставляет обслуживание государственных систем безопасности. Старый добрый Findface VK стал глобальной мировой корпорацией, ежегодный доход которой равен выручке небольшого европейского государства!
Аналоги
Итак, с данным сервисом поиска людей по фото будем заканчивать. Но не думайте, что на этом мы поставим точку. На замену Findface пришли десятки аналогичных программ, которые работают весьма неплохо. Хотите с ними познакомиться?
Мы приведем лучшие аналоги Findface, с помощью которых вы без труда разыщете в просторах Интернета понравившуюся девушку:
- Жмите Поиск;
- Уже через пару секунд появятся первые выдачи.
Мы протестировали площадку, и пришли к выводу, что точность ее результатов не всегда радует. Девушку европейской внешности он нашел сразу, а вот с симпатичной азиаткой не справился. Выдал кучу похожих людей, но не оригинал.
🙂 Сервис поиска людей по фото от Yandex. Очень круто работает, мы пользуемся именно им.
- Откройте поисковик и перейдите в блок Картинки;
- Справа от поля для ввода запроса найдите значок фотокамеры;
- Добавьте ссылку, путь к фото или перетащите его на экран;
- Нажмите Поиск;
- Сервис очень быстро обнаружит все похожие и аналогичные фотографии.
На наш взгляд, результативность Яндекса самая лучшая, в сравнении со всеми остальными аналогами Findface. К тому же, ищет он не только среди фотобанка Вконтакте, но по всем просторам Рунета.
🙂 И еще одна альтернатива Findface – для смартфона. Утилита называется PicFinder, она работает на базе Google Image Search.
Работает быстро, а также, позволяет сортировать файлы. Результативность – 50/50.
Итак, мы с вами выяснили, что поиск людей по фото Findface стал для обычных граждан недоступным. Однако, альтернативных вариантов – очень много, поэтому не расстраивайтесь. Успех одной компании неизбежно привлек похожих искателей счастья. Тестируйте их продукты и вы непременно найдете самый лучший аналог.
В этом уроке я покажу, как найти человека по фото в ВК и других социальных сетях. Для этого мы будем использовать бесплатные онлайн сервисы поиска людей по лицу.
ТОП-6 сервисов поиска людей по лицу
-
– бесплатный сервис поиска в социальных сетях Вконтакте и Одноклассники. Работает без регистрации. – ищет по ВК, требуется регистрация по номеру телефона. Бесплатно доступно 25 запросов. – поисковик Гугл Картинки. – поисковик Яндекс Картинки. – сервис поиска по изображениям Тинай. – англоязычный сайт поиска людей по фото (платный).
Как найти человека по фото – инструкция
Шаг 1: подготовка фотографии
Сначала нужно обрезать снимок. Таким образом, мы уменьшим его размер (обычно он большой), и уберем лишнее.
1 . Открываем программу для редактирования изображений: Пуск → Стандартные - Windows → Paint.
2 . Добавляем фото в окно. Для этого перетягиваем его в программу или выбираем вручную из папки компьютера (Файл – Открыть).
3 . Нажимаем на инструмент «Выделить» в верхнем меню, и обводим человека.
4 . Нажимаем кнопку «Обрезать».
5 . Сохраняем: – Сохранить как…
Шаг 2: поиск в соцсетях
Далее нужно загрузить снимок в систему поиска человека по фото. И если будут совпадения, сайт покажет страницы найденных людей. Два наиболее популярных сервиса:
-
– бесплатный, без регистрации. Ищет людей по социальным сетям Вконтакте и Одноклассники. Большая база профилей. – требуется регистрация по номеру телефона. Умеет весьма точно находить человека по фото, но только в соцсети ВК. Бесплатно можно выполнить 25 поисков.
Был еще один хороший сервис Findface с очень точным распознаванием лиц, но, к сожалению, он закрылся.
Пример
Затем добавляем фото человека (можно просто перетащить внутрь окошка) и нажимаем «Загрузить».
Обратите внимание: можно не только выбрать файл с ПК, но и загрузить фотографию по ссылке, в том числе из Инстаграма.
В следующем окне можно задать настройки: пол, страна, город, возраст. Но лучше их не указывать, а сразу нажать «Найти».
Появится список найденных профилей.
Шаг 3: поиск по всему интернету
Если не получилось найти человека по фото через сервис Search4faces и Findclone, попробуйте поискать в Гугле и Яндексе.
Сделать это можно через функцию поиска по изображениям:
Пользоваться ими очень легко: нужно просто перетянуть фото в строку.
Google Images
Google Images
Результат появится сразу же. Сначала будет показана эта же картинка, но в других размерах (если таковые в сети имеются), чуть ниже - похожие фотографии. Еще ниже – страницы в интернете, на которых они размещены.
Рекомендую искать в обоих поисковиках. Частенько они выдают разные результаты.
Здесь все точно так же: перетаскиваем снимок со своего компьютера в поисковую строку, и сразу же получаем результат.
Подробнее об этих сервисах читайте в уроке Поиск по фото.
Расширения для браузера
Расширения или дополнения – это такие маленькие примочки, которые добавляются в программу для интернета и выполняют в ней определенные задачи. Например, переводят тексты, делают скриншоты. Такие программки есть и для поиска по фотографиям.
Практически у каждого браузера имеется своя коллекция разнообразных дополнений, но больше всего их в Google Chrome.
Для установки перейдите в магазин расширений:
В строке поиска напечатайте ключевые слова и нажмите Enter. Появятся найденные дополнения и приложения. Установите нужное - его потом в любой момент можно будет удалить.
Плагин добавится сразу после адресной строки.
На телефоне
Но есть еще один хитрый, но точный способ поиска человека по фото в Одноклассниках. Для этого нужно установить официальное приложение ОК. Загрузить его можно по ссылке:
1 . Зарегистрируйтесь или войдите в свой профиль, если он есть на сайте. Нажмите на иконку с изображением трех горизонтальных линий (вверху или внизу программы).
2 . Выберите пункт «Друзья».
3 . Перейдите в раздел «Дружба по фото» или «Найти по фото».
4 . Разрешите доступ к камере.
5 . Сделайте снимок человека или его фотографии (например, открыв ее на ПК или другом телефоне).
6 . Если программа найдет страницу пользователя, он получит приглашение в «Друзья».
Читайте также: