Поиск человека по фотографии в интернете

Результаты

В результате мы запилили систему, натренированную на реальных данных социальной сети, дающую хорошие результаты при ограниченных ресурсах.


Качество распознавания на датасете, построенном на реальных профилях из ОК, составило TP=97.5% при FP=0.1%. Среднее время обработки одной фотографии составляет 120 мс, а 99 перцентиль укладывается в 200 мс. Система самообучающаяся, и чем больше тегируют пользователя на фото, тем точнее становится его профиль.

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

Автоматическое распознавание привело к 2-кратному росту показов событий в ленте об отметках на фотографиях, а количество кликов на эти события выросло в 3 раза. Интерес пользователей к новой фиче очевиден, но мы планируем вырастить активность еще больше за счет улучшения UX и новых точек применения, таких как Starface.

Флешмоб StarFace

Для того чтобы познакомить пользователей соцсети с новой функциональностью, ОК объявили конкурс: пользователи загружают свои фотографии со звездами российского спорта, шоу-бизнеса и популярными блоггерами, ведущими свои аккаунты в Одноклассниках, и получают бейдж на аватарку или подписку на платные сервисы. Подробности тут: https://insideok.ru/blog/odnoklassniki-zapustili-raspoznavanie-lic-na-foto-na-osnove-neyrosetey

За первые дни акции пользователи уже загрузили более 10 тысяч фото со знаменитостями. Выкладывали селфи и фотографии со звездами, фото на фоне афиш и, конечно, “фотошоп”. Фото пользователей, получивших ВИП-статус:

История и публичное освещение

Сервис был запущен 18 февраля 2016 года.

В мае 2016 года число посетителей сервиса превысило 1 млн человек.

В августе 2016 года сооснователь компании Артём Кухаренко передал пост руководителя компании IT-менеджеру Михаилу Иванову.

В октябре 2016 года компания NTech.Lab была номинирована на премию РБК «Стартап года» за создание передовой технологии распознавания лиц по фото FindFace. Претендентами на премию также стали проекты Prisma, DOC+, Grabr и Revolut.

В мае 2016 NTech.Lab в числе трёх российских компаний была допущена к официальному тестированию технологий биометрии, проводимому NIST. Сам факт допуска к испытаниям дал компании право участвовать в гостендерах США и ряда других стран. По результатам тестирования алгоритм занял первую позицию в рейтинге мирового бенчмарка Facial Recognition Vendor Test, организованного NIST.

Весной 2017 года NTeschLab снова заняла первое место в рейтинге Facial Recognition Vendor Test.

Осенью 2017 года NTechLab победила в конкурсе технологий распознавания лиц, организованном совместно NIST и IARPA — американским агентством передовых исследований в области разведки. Победа была одержана в двух номинациях из трех — «Скорость идентификации» и «Точность верификации».

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

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

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

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

Поиск человека используя сервис Google Картинки

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

What Does Your Face Reveal?

Face recognition and search tools have a range of useful applications. Not only can they help the police identify suspects from security camera footage. They can also help professional photographers or media companies index visual material and build large and easy to search archives. Moreover, face recognition can replace passwords and keys.

But there’s a dark side to every tool. Not too long ago, the Facezam viral marketing scam highlighted what face recognition could do to your privacy. The creators of the app claimed that—within seconds—you could find anyone’s Facebook profile by uploading a picture of their face. Essentially, FindFace for Facebook.

While such an app violates Facebook’s privacy policies, Facebook itself uses facial recognition powered search to identify people in photos (unless you disabled the feature). And presumably, Facebook’s face search engine is better than the FBI’s identification tool. Why? Because you’ve been voluntarily stuffing Facebook’s database with a huge variety of photos, all helping its AI improve faster than the FBI could ever dream of. And it’s all legal. You can’t always hide your face, but you can protect your privacy online.

If you have an iPhone, check out these reverse image search tools The 10 Best Reverse Image Search Apps for iPhone and Android Reverse image search lets you learn more about any image. Here are the best image search apps and tools for Android and iPhone. Read More for more revealing discoveries.

Как бесплатно найти человека по фотографии

1. Google Images

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

Вы можете искать из фотографий, сохраненных на компьютере, или используя URL изображения.

  • Чтобы найти адрес изображения, щелкните правой кнопкой мышки  и выберите “Копировать адрес изображения”

  • Чтобы сохранить изображение на компьютере, щелкните правой кнопкой мышки и выберите “Сохранить изображение”.

Поиск очень просто выполнить:

  • Зайдите на , нажмите на значок камеры, 

  • Загрузите фотографию  или вставьтеURL фотографии и нажмите поиск.

  • Если вы используйте браузер Chrome, вы можете нажать правым кликом на фотографию и выбрать «Найти картинку (Google)«, и вы увидите результаты в новой вкладке.

2. Яндекс

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

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

  • Зайдите на , затем выберите значок камеры справа.

  • Вы можете либо загрузить сохраненное изображение, либо ввести URL фотографии.

  • После того, как вы осуществили поиск, можно посмотреть “похожие картинки” и “еще похожие”.

Яндекс будет искать не только фотографии, похожие на ту, где есть лицо, но и другие фотографии того же человека при другом освещении, цветах фона и положении.

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

3. PicTriev

Эта система идет на один шаг дальше в поиске похожих лиц. К сожалению сервис ограничен похожими знаменитостями.

Вам нужно добавить URL или загрузить фотографию в формате JPG или JPEG размером не больше 200 KB, и поисковая система выдаст подходящую фотографию знаменитости, найденную в Интернете.

  • PicTriev также позволяет сравнить похожесть двух лиц или определить  принадлежат ли фото двух лиц одному человеку. Нажмите на значок измерительного прибора  в верхней правой части, загрузите две фотографии, выберите похожесть (similarity) или идентичность (identity) и программа сделает вычисления.

  • До того, как добавить фотографии, следуйте инструкции, чтобы получить наиболее приближенные результаты.

Применение и инциденты

Серия событий и инцидентов, связанных с сервисом, произошла в апреле 2016 года.

Резонансная история «борьбы с сетевой порнографией»: участники популярного имиджборда «Двач» начали массово загружать в FindFace размещённые на сайтах с порнографией фото. Они находили аккаунты актёров во «ВКонтакте», а затем рассылали информацию об их деятельности друзьям и родственникам. Администрация FindFace заявляла, что не имеет никакого отношения к данному использованию технологии. В то же время сервис не имеет технической возможности ограничить такого рода действия пользователей, поскольку поиск происходит по фото и видео, свободно размещённым в интернете.

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

В июне 2016 года сервис FindFace внедрили на рейв-фестивале Alfa Future People: гостей мероприятия идентифицировали при помощи приложения, после чего рассылали им сделанные фотографии в соцсети. Создатели проекта тогда подчеркнули, что участие в эксперименте было добровольным и не нарушало конфиденциальность посетителей фестиваля.

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

В 2017-м году алгоритмы распознавания лиц NTechLab были встроены в московскую городскую систему видеонаблюдения, эксплуатируемую Департаментом Информационных Технологий Москвы. Аналогичная разработка внедрена в Екатеринбурге. Система использует базу лиц МВД, чтобы находить ей соответствия на видео. Предполагаемые применения системы — поиск преступников, борьба с терроризмом и сбор информации об участниках митингов и иных массовых мероприятий.

30 июня 2018 года создатели FindFace объявили прекращении работы над проектом и поэтапном отключении сервиса с 1 июля.

До 1 сентября компания закрывает свой сервис для VIP и Premium аккаунтов. При этом своих обязательств перед клиентами, которые купили VIP и Premium аккаунты и срок договорных отношений с которыми не истёк, она не выполнила.

Через аккаунт в социальной сети

В приложении на телефоне

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

Важно! Предварительно добавьте в справочник смартфона номер человека, которого хотите найти

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

Ссылки на установку официального приложения:

1. Откройте приложение и авторизуйтесь, введя логин и пароль от своей страницы. Если ее нет, зарегистрируйтесь.

2. Нажмите на иконку с изображением «человечков» в нижней части программы и выберите «Добавить друга».


3. Перейдите в раздел «Контакты».

4. Синхронизируйте их, нажав «Продолжить». На запрос доступа нажмите «Разрешить».

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

Ссылки на установку официального приложения:

1. Войдите в приложение под своим логином и паролем от Одноклассников. Если аккаунта нет, зарегистрируйте.

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

3. Нажмите на «Контакты телефона».

И на кнопку «Посмотреть».

Скорее всего, после этого появится запрос на доступ к справочнику. Нажмите «Разрешить».

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

Ссылки на установку официального приложения:

1. Авторизуйтесь под своим логином и паролем от Инсты. Если у вас нет аккаунта, зарегистрируйтесь.

2. Включите синхронизацию контактов. Для этого нажмите на иконку с изображением человечка внизу (аватарку). Затем на «три пунктира» в правом углу.

Перейдите в «Настройки».

Выберите «Аккаунт».

Откройте пункт «Синхронизация контактов».

Включите переключатель.

3. Вернитесь в профиль и нажмите на «три пунктира».

4. Выберите пункт «Интересные люди».

Откроется список рекомендаций, в котором, возможно, будет тот, кого вы ищете.

Ссылки на установку официального приложения:


1. Выполните вход под своими данными. Если у вас нет страницы в Фейсбуке, зарегистрируйтесь.

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

3. Перейдите в «Настройки».

4. Прокрутите страницу вниз и нажмите на «Медиаконтент и контакты».

5. Активируйте переключатель в пункте «Непрерывная загрузка контактов».

Этот пункт может быть в разделе «Синхронизация контактов» и называться «Загружать контакты».

Нажмите «Начать» и разрешите доступ к справочнику.

Появится список анкет, среди которых может быть нужная. Также этот список доступен в разделе «Друзья».

Официальное приложение:

1. Войти в аккаунт. Если его нет, зарегистрируйтесь.

2. Откройте меню, нажав значок «три пунктира» или иконку профиля.

3. Перейдите в раздел «Читает».

4. Нажмите на значок «человечек» в правом углу.

5. В разделе «Найти друзей» нажмите «Начать».

Откроется запрос на подключение адресной книги. Нажмите «Синхронизировать контакты».

Появится список зарегистрированных пользователей из адресной книги.

В веб-версии на компьютере

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

  1. Перейдите на сайт vk.com и выполните вход в профиль.
  2. Щелкните по верхней строке, напечатайте номер. Система покажет совпадения.
  1. Перейдите на сайт ok.ru и авторизуйтесь.
  2. В верхней строке (справа) напечатайте телефон. Чуть ниже появится результат.
  1. Откройте сайт instagram.com и авторизуйтесь.
  2. Щелкните по верхней строке и напечатайте номер.

Facebook и Twitter

  • Переходим на сайт или .
  • Выполняем вход на свою страницу.
  • В строку поиска (вверху) печатаем телефон и получаем результаты.

Сервис FindFace позволяет искать людей по фото

При регистрации пользователь получит возможность 30 раз искать людей по фото и 5 раз переходить на профили из списка результатов. После исчерпания этих лимитов за пользование сервисом придется платить, самый дешевый тариф составляет 149 руб. в месяц, и предоставляет в распоряжение пользователя 75 поисковых запросов. Обычно этого вполне достаточно. Если же требуется искать много снимков, то придется приобрести VIP-аккаунт за 459 руб. в месяц.

Поиск и фильтрация результатов в ВКонтакте

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

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

Идентификация человека по фото с Findface.ru

Отсутствие совпадений лиц по фото

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

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


https://www.youtube.com/watch?v=HQx1_ZH9Jv0

Ложные результаты

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

Найти человека

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

Реализация

Переходим к практике.

В реализации мы будем использовать Keras и Tensorflow. Кроме того, мы используем два файла утилиты из репозитория deeplayning.ai, чтобы абстрагироваться от взаимодействий с сетью FaceNet.

  • fr_utils.py содержит функции для подачи изображений в сеть и получения кодирования изображений;
  • inception_blocks_v2.py содержит функции для подготовки и компиляции сети FaceNet.

Компиляция сети FaceNet

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

import os
import glob
import numpy as np
import cv2
import tensorflow as tf
from fr_utils import *
from inception_blocks_v2 import *
from keras import backend as K
K.set_image_data_format('channels_first')
FRmodel = (input_shape=(3, 96, 96))
def triplet_loss(y_true, y_pred, alpha = 0.3):
    anchor, positive, negative = y_pred, y_pred, y_pred

    pos_dist = tf.reduce_sum(tf.square(tf.subtract(anchor,
               positive)), axis=-1)
    neg_dist = tf.reduce_sum(tf.square(tf.subtract(anchor, 
               negative)), axis=-1)
    basic_loss = tf.add(tf.subtract(pos_dist, neg_dist), alpha)
    loss = tf.reduce_sum(tf.maximum(basic_loss, 0.0))
   
    return loss
FRmodel.compile(optimizer = 'adam', loss = triplet_loss, metrics = )
load_weights_from_FaceNet(FRmodel)

Мы начнем инициализпцию нашей сети со входа размерности (3, 96, 96). Это означает, что картинка передается в виде трех каналов RGB и размерности 96×96 пикселей.

Теперь давайте определим Triplet Loss функцию. Функция в сниппете кода выше удовлетворяет уравнению Triplet Loss, которое мы определили в предыдущей секции.

Если вы не знакомы с фреймворком TensorFlow, ознакомьтесь с документацией.

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

Подготовка базы данных

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

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

def prepare_database():
    database = {}
    for file in glob.glob("images/*"):
        identity = os.path.splitext(os.path.basename(file))
        database = (file, FRmodel)
    return database

Для каждого изображения мы преобразуем данные изображения в 128 float чисел. Этим занимается функция img_path_to_encoding. Функция принимает на вход путь до изображения и «скармливает» изображение нашей распознающей сети, после чего возвращают результаты работы сети.

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

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

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

def who_is_it(image, database, model):
    encoding = (image, model)
    
    min_dist = 100
    identity = None
    
    # Loop over the database dictionary's names and encodings.
    for (name, db_enc) in database.items():
        dist = np.linalg.norm(db_enc - encoding)
        print('distance for %s is %s' %(name, dist))
        if dist < min_dist:
            min_dist = dist
            identity = name
    
    if min_dist > 0.52:
        return None
    else:
        return identity

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

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

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

 if min_dist > 0.52: 
     return None 
 else:
     return identity

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

На GitHub есть демо работы полученной сети, с входом от простой вебкамеры.


С этим читают