Компьютерное зрение, Машинное обучение

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

Научитесь создавать конвейер на базе Azure для слабовидящих или с другими нарушениями

Пандемия COVID-19 подтолкнула организации к краю, и большинство работодателей прибегают к работе на дому (WFH). Помимо работы, с серьезными глобальными ограничениями на поездки, люди постепенно приспосабливаются к режимам видеоконференцсвязи, чтобы оставаться на связи со своими друзьями и семьей. Эта пандемия способствовала появлению таких платформ, как Microsoft Teams и Zoom, которые за последние шесть месяцев продемонстрировали колоссальный рост [1].

В этой статье мы научимся создавать конвейер на базе Microsoft Azure для определения настроений и выражений лиц участников вызова Microsoft Teams (Teams) в режиме реального времени. Мы также добавим функцию, которая поможет участникам правильно настроить камеры перед началом разговора.

Заявление об ограничении ответственности - этот проект был первоначально создан для Microsoft AI for Accessibility Hackathon, и был включен в пятерку лучших заявок из Сингапура и представлен потоку судей Microsoft и партнеров как лучшая работа в Азиатско-Тихоокеанском регионе. . Я хотел бы воздать должное моим товарищам по команде Адитья, Ритвик и Видурвир, без которых этот отрывок не был бы возможен.

Фон

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

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

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

Трубопровод

Создание нашего конвейера состоит из трех этапов: во-первых, мы захватываем кадры (снимки экрана) с видеоконференции через заданный интервал, скажем, каждые две секунды. После этого мы отправляем эти кадры в API Microsoft Azure, чтобы узнать настроения (эмоции) человека при вызове, а затем, наконец, отображаем обнаруженное настроение на экране.

Захват кадров

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

Сделать снимок экрана очень просто с помощью кроссплатформенной библиотеки Python «pyautogui». После создания снимка экрана он сохраняется как ‘screen.png’ в нашем локальном каталоге.

Использование Azure Face API

Во-вторых, после захвата кадра мы вызываем Azure Face API, чтобы определить настроение человека в кадре. Для простоты я предполагаю, что на видеовстрече участвует только один человек.

Face API - это часть когнитивных сервисов, предлагаемых Azure, в которых есть функция под названием «Распознавание воспринимаемых эмоций», которая может обнаруживать воспринимаемые выражения лица, такие как гнев, счастье и удивление. Face API доступен бесплатно с ограничением 20 вызовов API в минуту, что должно быть достаточно для нашего случая использования.

Приведенный ниже код представляет собой образец ответа JSON от Azure Face API. Мы отмечаем несметное количество эмоций, которые дает API, а также их доверительные интервалы. Например, в приведенном ниже ответе JSON мы видим, что для данного образца изображения эмоция «счастье» является самой высокой с вероятностью 60%. API предоставляет гораздо больше данных, таких как местоположение и наличие черт лица, таких как цвет волос, улыбка и поза головы, но я решил их здесь опустить.

[
   {
      "faceId":"92e6d028-188a-40bc-9696-6ccc54831ead",
      "faceRectangle":{
         "top":636,
         "left":1249,
         "width":403,
         "height":403
      },
      "faceAttributes":{
         "emotion":{
            "anger":0.0,
            "contempt":0.087,
            "disgust":0.0,
            "fear":0.0,
            "happiness":0.606,
            "neutral":0.307,
            "sadness":0.0,
            "surprise":0.0
         }
      }
   }
]

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

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

Отображение настроения на экране

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

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

Код драйвера

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

Заворачивать

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

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

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

использованная литература

[1] Спатаро, Дж. (30 октября 2020 г.). Microsoft Teams достигает 115 миллионов DAU-плюс, нового показателя ежедневных минут совместной работы для Microsoft 365, Microsoft.

[2] Чжао, Ю., Ву, С., Рейнольдс, Л., и Азенкот, С. (2018). Приложение для распознавания лиц для людей с нарушениями зрения. Материалы конференции CHI по человеческому фактору в вычислительных системах 2018 г. - CHI ’18. DOI: 10.1145 / 3173574.3173789