Оплата не отходя от девайса: как мы реализовали персонализацию в устройствах Sber с помощью распознавания голоса и лица

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.
Автор исходного изображения: 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).

Источник: https://habr.com/ru/company/sberdevices/blog/574250/


Интересные статьи

Интересные статьи

Предисловие В данной статье я расскажу о конфигурации для вашей сервисов с помощью связки Vault (KV и пока только первой версии, т.е. без версионирования секретов) и Pydantic (Settings...
Привет, Хабр! В Циан уделяют внимание интересным техническим решениям. А еще интересуются, как с результатами этих решений будут жить пользователи, насколько вообще необходимы эти решения и как о...
Если у вас есть интернет-магазин и вы принимаете платежи через Интернет, то с 01 июля 2017 года у вас есть онлайн-касса.
Привет, Хабр. Я хочу рассказать об утилите под названием DocumentBuilder, которая позволяет генерировать документы, таблицы и презентации, а также показать, как можно его использовать для реш...
Привет, Хабр! Хочу внести свою посильную лепту в продвижение ПЛИС. В этой статье я постараюсь объяснить, как на языке VHDL описать устройство, управляющее семисегментным дисплеем. Но перед тем ка...