Автор исходного изображения: LuckyStep/Shutterstock.com
Автор исходного изображения: LuckyStep/Shutterstock.com

Сегодня на рынке изобилие умных домашних устройств. Часто они становятся своего рода центром дома – инструментом, к которому обращаются домочадцы с разными задачами: узнать погоду, найти фильм, заказать еду или такси. Некоторые сценарии платные, и проводить оплату хочется, с одной стороны, быстро и удобно, без лишних телодвижений – чтобы не нужно было брать в руки телефон, заходить в онлайн-банк, вводить реквизиты или коды из пуш-уведомлений. А с другой стороны, хочется безопасности и защищённости, чтобы ребёнок, например, не заказал ящик мороженого без ведома взрослых. Мы в SberDevices занялись вопросом персонализированных оплат на наших умных устройствах и придумали, как это сделать с помощью распознавания лица и голоса пользователя. В области лицевого распознавания нашим технологическим партнёром стала команда VisionLabs.

Как это работает

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

Общий пайплайн оплаты.
Общий пайплайн оплаты.

Допустим, пользователь хочет оплатить собранную корзину продуктов или подписку. Если он привязал банковскую карту и настроил персонализацию – сохранил на устройстве голос и изображение своего лица, ему достаточно посмотреть в камеру и прочитать вслух 6-значный случайный набор цифр на экране устройства. Человек, данных которого в системе нет, провести оплату с привязанной карты не сможет. При этом её владелец может гибко настраивать доступы для домочадцев – чтобы, например, жена или муж тоже могли проводить оплаты с этой же карты. Но для этого им, конечно, тоже нужно будет сохранить на устройстве свое изображение и "слепок" голоса. Удалить их  можно в любой момент.

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

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

На первом шаге для детектирования лиц за основу взят детектор RetinaFace. Первое преимущество этого детектора – использование feature pyramid. Для детектора очень важно находить лица, в какой бы близости к камере они ни находились. В первых детекторах применялся подход sliding window, когда изображение делилось сеткой на кусочки и каждый из них отправлялся в классификатор для подтверждения, что на нём изображено лицо.

Sliding window.
Источник изображения: http://www.cs.utoronto.ca/~fidler/slides/CSC420/lecture17.pdf
Sliding window. Источник изображения: http://www.cs.utoronto.ca/~fidler/slides/CSC420/lecture17.pdf

Проблема заключается в сетке: в зависимости от размера её ячеек в каждую может попасть одно лицо, несколько лиц или вообще некоторая часть близко расположенного к камере лица. Для решения этой проблемы придумали Image pyramid.

Image pyramid.
Источник изображения: https://arxiv.org/pdf/1604.02878.pdf
Image pyramid. Источник изображения: https://arxiv.org/pdf/1604.02878.pdf

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

Image pyramid.
Источник изображения: https://arxiv.org/pdf/1612.03144.pdf
Image pyramid. Источник изображения: https://arxiv.org/pdf/1612.03144.pdf

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

 

Feature pyramid.
Источник изображения: https://arxiv.org/pdf/1612.03144.pdf
Feature pyramid. Источник изображения: https://arxiv.org/pdf/1612.03144.pdf

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

Пайплайн сети детектирования лиц.
Источник изображения: https://arxiv.org/pdf/1905.00641.pdf
Пайплайн сети детектирования лиц. Источник изображения: https://arxiv.org/pdf/1905.00641.pdf

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

a) Исходное изображение и найденный регион лица;
 b) Определение наклона лица по линии глаз;
 с) Обрезание и выравнивание лица.
Источник изображения: https://www.researchgate.net/publication/290459068_A_comprehensive_comparison_of_features_and_embedding_methods_for_face_recognition
a) Исходное изображение и найденный регион лица; b) Определение наклона лица по линии глаз; с) Обрезание и выравнивание лица. Источник изображения: https://www.researchgate.net/publication/290459068_A_comprehensive_comparison_of_features_and_embedding_methods_for_face_recognition

Подготовленное изображение отправляется в массивную нейронную сеть для извлечения дескрипторов. За основу мы взяли глубокую нейронную сеть ResNet. На рисунке схематично представлена её блочная структура на 34 слоя:

ResNet34.
Источник изображения: https://arxiv.org/pdf/1512.03385.pdf
ResNet34. Источник изображения: https://arxiv.org/pdf/1512.03385.pdf

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

Задача по извлечению дескрипторов называется metric learning, её суть заключается в том, чтобы отобразить входное изображение в пространство меньшей размерности, причём сделать это так, чтобы получившееся отображение подчинялось наперёд заданным правилам. Обычно это правило заключается в том, чтобы похожие объекты лежали в пространстве близко (например, в терминах Евклидова расстояния), а непохожие – далеко. Для примера можно рассмотреть отображение фотографий автомобилей:

Отображение фотографий автомобилей в пространство признаков. Точки - дескрипторы.
Источник изображения: https://arxiv.org/pdf/1511.06452.pdf
Отображение фотографий автомобилей в пространство признаков. Точки - дескрипторы. Источник изображения: https://arxiv.org/pdf/1511.06452.pdf

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

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

Отображение фотографий в пространство признаков. Точки - дескрипторы.
Источник изображения: http://www.andrew.cmu.edu/user/georgech/95-865/Lectures/Lecture%20-%2003_essence.pdf
Отображение фотографий в пространство признаков. Точки - дескрипторы. Источник изображения: http://www.andrew.cmu.edu/user/georgech/95-865/Lectures/Lecture%20-%2003_essence.pdf

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

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

На втором этапе аутентификации пользователя мы будем распознавать голос. Для сбора голоса мы подготовим и покажем на экране случайный 6-значный код, который необходимо прочитать. Этот код отправляется в ASR для проверки совпадения прочитанных цифр с теми, что вы увидели на экране. После совпадения необходимо снова получить дескриптор, но уже голосовой. В целом здесь подход идентичный лицевому – массивная нейронная сеть и metric-learning. Но вызов заключается в том, что в отличие от фотографии лица звук – это зависимая от времени информация. Сделав снимок с камеры, мы получаем сразу всё лицо, а вот с голосом ситуация обстоит по-другому.

Источник изображения: https://arxiv.org/pdf/1604.02878.pdf
Источник изображения: https://arxiv.org/pdf/1604.02878.pdf

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

Еще одна проблема – сырой формат звука. Обычно он представляет собой временной ряд колебаний амплитуды с 16000 отсчетами в секунду. Заставить нейронные сети работать с таким форматом очень сложно, поэтому для повышения качества используют разложения сигнала в спектр c постобработкой.

Сверху - исходная звуковая дорожка.
Снизу - Mel спектрограмма исходной дорожки.
Сверху - исходная звуковая дорожка. Снизу - Mel спектрограмма исходной дорожки.

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

Для решения возникших проблем существует архитектура TDNN – Time delay neural network. Первая часть архитектуры приведена на рисунке. 

TDNN.
Источник изображения: https://www.danielpovey.com/files/2015_interspeech_multisplice.pdf
TDNN. Источник изображения: https://www.danielpovey.com/files/2015_interspeech_multisplice.pdf

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

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

Пайплайн отображения Mel-спектрограммы в дескриптор.
Пайплайн отображения Mel-спектрограммы в дескриптор.

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

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

Если вам интересны описанные технологии и их применение, у вас есть опыт в computer vision или audio processing и вы хотите присоединиться к команде SberDevices, присылайте мне своё резюме на Хабре(@Tkinai) или в Slack ODS(@nikt).

Комментарии (19)


  1. anonymous
    00.00.0000 00:00


    1. Griboks
      25.08.2021 10:32
      +3

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


      1. Tkinai Автор
        25.08.2021 12:16

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

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


        1. inkelyad
          25.08.2021 14:47

          Вам мало назвать цифры, нужно назвать их нужным голосом без артефактов. Генератор фонем не поможет в имитации чистого голоса конкретного человека.

          Неубедительно от слова совсем. Если я правильно понимаю, если у вас что-то может распознать голос — то это значит, что при помощи этого чего-то сделать генератор голоса, который через такой фильтр пройдет. Как защищается параметры фильтра? И как их сменить, если выяснится, что кто-то сумел генератор моего голоса сделать?


    1. Tkinai Автор
      25.08.2021 12:04

      Защиту от фейков обеспечивает комплекс из двух модальностей – лицо и голос. В случае с голосом вы к тому же не можете подготовить записи заранее, потому что каждый раз для подтверждения оплаты нужно прочитать выведенный на экран девайса уникальный 6-значный набор цифр. Кроме того, персонализация локальная. Вы не сможете с одного устройства инициировать оплату через другое устройство. А значит круг лиц для потенциального фейка ограничен пользователями конкретного устройства – членами вашей семьи. Более того, у вас есть механизм гибкой настройки возможности оплаты для разных домочадцев. Ну и напомню, что с помощью фичи можно оплачивать только покупки в Самокате, фильмы в Окко, игры в SberPlay и т.п. Для банковских операций она не работает.


      1. solarplexus
        26.08.2021 04:59
        +1

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

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

        Я считаю, что данный проект не прост и интересен, но небезопасен. Хорошо бы откатать его на менее важных кейсах.

        Есть ли возможность выбирать клиенту вид персонализации? Я бы не хотел быть в числе тестировщиков этой системы.

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


  1. anonymous
    00.00.0000 00:00


  1. dmandreev
    25.08.2021 11:09

    Было бы любопытно узнать технические детали как это всё крутится на Amlogic S905Y2/Amlogic A311D с 2GB, ведь именно эти SOC используются в SberBox Top и SberPortal. Какой у вас inference time для лица скажем 224x224?


    1. Tkinai Автор
      25.08.2021 12:15

      Распознавание лиц мы запускаем на GPU (на NPU работает трекинг). На GPU скорость инференс на лице 224x224 - 127ms. Инференс запускается не на каждом кадре, чтобы сэкономить вычислительные ресурсы.


  1. CryptoPirate
    25.08.2021 11:46
    +5

    двухфакторную аутентификацию по лицу и по голосу

    Это не двухфакторная, двухфакторная - это 2 разных фактора из набора "что я знаю" (пароль), "что у меня есть" (карта доступа) и "кто я есть" (биометрия). У вас 2 раза биометрия: голос и лицо.

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


    1. Tkinai Автор
      25.08.2021 12:44
      +1

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


      1. inkelyad
        25.08.2021 15:20
        -1

        На самом деле аутентификация тут однофакторная.


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


  1. crystallize
    25.08.2021 11:51
    +3

    У мамки взяли образец голоса при оформлении карты и теперь она на звонки не отвечает "да" а только "алло" потому что боится что "да" может быть формальным согласием на оформление кредита.


    1. wrewolf
      14.09.2021 12:02

      Даже без образца голоса так отвечаю, ОпСоСы и подписка за это "да" могут кинуть


  1. titbit
    25.08.2021 12:07
    +3

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

    А можно будет оставить старый вариант оплаты, для тех кто не хочет использовать биометрию? Неужели никто не понимает, что в случае компрометации биометрии (а это произойдет рано или поздно 100%), ее так легко и просто не «поменять», в отличии от паролей, и придется делать новые схемы аутентификации?


    1. Tkinai Автор
      25.08.2021 13:13

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


      1. titbit
        25.08.2021 14:28
        +1

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

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

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


        1. Tkinai Автор
          25.08.2021 16:35

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


  1. eugeneyp
    25.08.2021 15:38

    А как идёт защита от men in middle? Т.е. когда тот кто читает пароль 100% уверен что он видит куда и какую сумму переводить? Вирус можно и для устройства написать.