Как мы использовали ИИ для перевода языка жестов в режиме реального времени

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

Эта проблема

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

Достичь универсального перевода на язык жестов - нелегкая задача. Динамический характер естественного языка жестов делает его сложной задачей для компьютеров, не говоря уже о том, что во всем мире существует более 200 диалектов языка жестов. Носителям американского жестового языка (ASL) повезло: ряд стартапов и исследовательских проектов посвящены переводу ASL в реальном времени.

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

Наше решение

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

  • Сбор данных
  • Обучение модели машинного обучения распознаванию аусланского алфавита
  • Создание пользовательского интерфейса

Создание набора данных изображений аусланского алфавита

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

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

Такие данные существуют для ASL, но, как выясняется, нет набора данных с изображениями алфавита ауслана.

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

Доказательство концепции

Теперь, когда у нас были некоторые данные, мы хотели посмотреть, сможем ли мы действительно заставить что-то работать. Введите YOLO (You Only Look Once) - популярный алгоритм обнаружения объектов. Ясно, что это не первое его родео, член нашей команды Майкл Свон (Tabcorp) смог создать видео, подтверждающее концепцию, которое распознало буквы HEALTH HACK всего через несколько часов тренировки.

Извините за плохую подпись - Том выучил знаки только за 10 минут до этого!

Обучение модели машинного обучения

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

Лекс Тумбуру (ThoughtWorks), постоянный эксперт по машинному обучению в команде, обучил сверточную нейронную сеть, используя Pytorch (среда машинного обучения Python), чтобы предсказать где руки (каждая точка ограничивающей рамки) , а также класс (буква). Несколько настроек здесь и там, и у нас была модель, которая могла предсказывать знаки алфавита ауслана с точностью ~ 86%. См. Исследование и внедрение Лекса.

Последний рывок

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

Но мы хотели продвинуться еще дальше. Нам нужно было демонстрационное приложение.

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

Для бэкэнда мы обернули нашу модель в приложение Flask (Python) - запрос POST с изображением, поскольку полезная нагрузка вернет нам 4 точки ограничивающей рамки и класс (или букву) изображения. На стороне клиента мы использовали простой Javascript для захвата веб-камеры пользователей с помощью getUserMedia метода браузера и, используя невидимый canvas, мы брали кадр из видео каждые 200 мс, запрашивали прогноз и соответственно отображали результаты.

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

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

Наша команда

Без нашей замечательной команды мы бы не справились. Мы благодарим Lex Toumbourou (инженер по машинному обучению) и Michael Swan (разработчик игр) за то, что они собрались вместе с нами и создали что-то невероятное за выходные.

Куда отсюда?

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

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

Мы хотели бы узнать больше о том, как сделать телездравоохранение слабослышащим. Если вы хотите узнать больше, напишите нам по адресу [email protected].

Первоначально опубликовано на blog.coviu.com 21 сентября 2018 г.