Работа с аудио и видеоинформацией в приложениях для смартфона, использование Intel Perceptual Computing SDK
Введение в Perceptual Computing и возможности Intel Perceptual Computing SDK
В конце предыдущей части лекции мы рассмотрели возможность добавления распознавания речи в мобильные приложения, что позволяет общаться со смартфоном на более "человеческом" уровне. В современном мире все идет к тому, что взаимодействие человека с компьютером, а смартфон это ведь тоже компьютер, будет осуществляться на естественном для человека уровне, что подразумевает использование различных технологий, направленных на распознавание лица, мимики, жестов и речи.
В октябре 2012 года компания Intel представила SDK (от англ. software development kit) – комплект разработки для написания программных средств. Полное название комплекта Intel Perceptual Computing SDK. SDK фокусируется на нескольких аспектах естественно-интуитивного взаимодействия человека с компьютером, а именно распознавание лиц, голосовых команд и жестов. Помимо этого, SDK включает в себя учебные пособия, примеры кода, алгоритмы и примеры приложений, что позволяет разработчикам реализовывать функции естественно-интуитивного взаимодействия настолько просто, насколько это возможно.
Наиболее очевидный способ использования функций естественно-интуитивного взаимодействия видео игры. К примеру, разработчики могут взять функции, предоставляемые SDK и в сфере видео игр для взаимодействия игрока с трехмерным миром, использовать голос или жесты для манипуляций в игре. Многопользовательские режимы игры получат совершенно другой облик, позволяя участникам игры по-новому взаимодействовать друг с другом.
Распознавание набора мелкозернистых объектов, таких как десять пальцев на руках, на относительно небольшом расстоянии от компьютера дает возможность моделировать систему захвата какого-либо трехмерного виртуального объекта, перемещать его или указывать на данный объект. Вспомним язык жестов. Распознавание движения рук или жестов может быть интерпретировано компьютером и использовано для взаимодействия. Кроме этого можно реализовать такие жесты как перелистывание в разных направлениях. К примеру, переключать треки в плейлисте или перелистывать страницы книги.
Функции распознавания лица и контрольных точек на лице позволят определить, где расположены глаза, нос или рот. Присутствует функция распознания моргания, улыбки, распознавания пола и возрастной группы. Сегодня уже существуют решения простой идентификации личности такие как, например, фейс-логин. Однако комбинация параметров лица, голоса и жестов может быть использована для более точной идентификации. Помимо этого, использование параметров лица позволит реализовать приложения, к примеру, осуществляющие оценку поведения представителей разных возрастных групп (молодежи, взрослых или пожилых людей) или распознать эмоциональные состояний человека (грусть, радость и т.д.).
Использование сенсора глубины добавит новые возможности веб конференциям и дистанционному общению. Сегментация, основанная на глубине изображения, позволит разделить передний и задний фон. К примеру, чтобы добавить красок виртуальному общению, задний фон может быть заменен каким-либо изображением, к примеру лунным ландшафтом или пляжем.
Возможно распознавание трехмерных объектов реального мира и комбинирование их с интерактивным контентом. Трехмерная камера способна распознать модель реального объекта и добавить виртуальные графические и звуковые спецэффекты. Таким образом, распознав группу объектов, положение отдельных объектов относительно других и их поведение, создается новая модель взаимодействия объектов.
Основная идея заключается в модульности структуры SDK. Здесь имеется набор модулей для ввода/вывода, а также набор модулей для реализации тех или иных алгоритмов. Например, алгоритмов распознавания лиц, распознавания речи или синтеза речи.
SDK стандартизирует интерфейсы модулей ввода/вывода и алгоритмы модулей таким образом, что приложения могут получить доступ к функциональности напрямую. Также SDK предоставляет механизм для поиска конкретной реализации из множества доступных модулей, а также другие важные функции, такие как синхронизация выполнения и взаимодействие с другими библиотеками и фреймворками. Кроме того SDK предоставляет набор вспомогательных классов для общих случаев использования (исходный код или библиотеки форм), таким образом разработчику остается только настроить их для конкретного использования. SDK включает в себя несколько популярных платформ и врапперов (языковых оберток) для расширения сферы применения.
Модуль распознавания жестов предоставляет возможность отслеживания позиций пальцев на руке. Доступны 7 точек: кончики пальцев, центр ладони и максимально видимая точка, которая находится у локтя. Если не требуется знать о местоположении каждого пальца, то можно запросить специальные параметры, например, самую верхнюю точку, самую правую точку или центр масс руки. На последнее не стоит сильно полагаться, так как это изменяемая величина. Поэтому если нужно отслеживать руку, то для точных взаимодействий рекомендуется использовать кончик пальца.
Кроме этого существует возможность распознать несколько стандартных жестов. Такие как большой палец вверх, большой палец вниз, символ V (победа). В новой версии SDK доступен жест ладони (раскрытая ладонь). Кроме статических жестов камера позволяет возвращать события о том, что произошли какие-то динамические жесты. Например, взмахи руки влево, вправо, вверх, вниз, круговое движение, помахивание.
Кроме всего прочего, данный модуль позволяет возвращать карту значений. Это специальный набор, где каждому пикселю будет присвоено значение именно того объекта, которому он принадлежит. Это может быть полезно для сегментации объектов, то есть отделение одних объектов от других.
Модуль распознавания лиц. Наверное, всем известно как работает функция обнаружения лиц в фотоаппаратах, когда в окне предварительного просмотра появляется квадратик на распознанном лице и в зависимости от его положения выставляется фокусное расстояние или другие настройки. Данный модуль SDK позволяет получить большое количество информации о распознанном лице. В итоге может быть возвращено 7 точек на лице: уголки глаз, уголки рта, кончик носа. Кроме этого можно получить некоторую аналитическую информацию о распознанном лице. Например, мы можем получить возрастную группу лица присутствующего на картинке (ребенок, пожилой человек), можно определить пол, распознать подмигивание, распознать улыбку. Еще одна полезная особенность этого модуля заключается в том, что он может находить похожие лица.
Модуль голосового управления предлагает две основных функциональности по распознаванию речи: первая – это использование функций модуля для реализации голосовых меню. Вторая - это надиктовывание. Данная функция предназначена для реализации надиктовывания коротких фраз продолжительностью до 30 секунд. На текущий момент доступен только английский словарь. Другие языки будут добавляться по мере сотрудничества с разработчиками голосового движка. Сейчас для реализации голосового управления используется голосовой движок Nuance Dragon Assistant. Русский язык также скоро будет доступен.
Кроме того, в SDK доступен модуль синтеза речи. С помощью этой функции компьютер сможет отвечать пользователю. Отличительной особенностью здесь является то, что не требуется заносить в программу какие-то предзаписанные фразы, а аудио поток формируется на лету и результат воспроизводится через аудио систему компьютера.
Модуль отслеживания двумерных и трехмерных объектов. Функционал данного модуля позволяет отслеживать плоские двумерные объекты. Достаточно просто создать модель этого объекта на компьютере и отслеживать его. В результате мы можем получать параметры позиции объекта, угол наклона и т.д. Также поддерживается отслеживание трехмерных объектов, которые задаются в виде модели (.obj файла). По умолчанию доступна модель маски лица, при помощи которой можно отслеживать наклоны и изменения позиции лица как трехмерного объекта.
Стоит дополнить, что SDK реализует несколько уровней интерфейсов, которые позволяют сразу же использовать игровые движки. На текущий момент поддерживаются следующие игровые движки: Unity, Processing, использующий Java и openFrameworks.