Как Microsoft Project Oxford может сделать ваши приложения умнее
Выражаем большое спасибо за подготовку статьи Евгению Григоренко, Microsoft Student Partner, за помощь в написании данной статьи. Остальные наши статьи по теме Azure можно найти по тегу azureweek
Дайте я угадаю, Вы, как и я, уже пару месяцев горите идеей гениального приложения. Помимо своей основной функциональности, в идеальном мире оно просто обязано обладать множеством дополнительных возможностей, например, идентифицировать пользователя (или кота) по его фотографии с фронтальной камеры или понимать команды на естественном языке. Или сделать второй How-Old (который был сделан как раз на Оксфорде).
Но все мы знаем печальную истину. Многое возможно только с пользованием сложных алгоритмов машинного обучения, которых у нас совершенно нет времени изучать. И именно это останавливает от разработки, так как без таких инноваций мы совершенно затеряемся среди аналогов. Но решение этой проблемы есть, и имя ему Microsoft Project Oxford. Если вы хотите узнать, как Microsoft Project Oxford может упростить Вашу жизнь и сделать Ваши приложения по-настоящему интеллектуальными, то добро пожаловать под кат.
В рамках конференции //BUILD в апреле 2015 года Microsoft среди множества других анонсов представила новый сервис в группе облачных служб Microsoft Azure. Им стал проект с кодовым названием Project Oxford — набор готовых REST API, в доступной форме дающих разработчикам всю мощь алгоритмов машинного зрения, анализа естественного языка и распознавания голоса для использования в своих приложениях. Стоит отметить, что доступность сервисов в виде REST API позволяет использовать его на совершенно любых платформах и с помощью своих любимых технологий разработки, не ограничиваясь предложенными Microsoft.
Сам по себе проект Оксфорд расширяет уже существующую галерею сервисов Azure Machine Learning Gallery новыми высокоинтеллектуальными решениями. Первоначальная идея создания Azure ML Gallery еще год назад состояла в попытке собрать в одном месте достаточно простые к использованию сервисы машинного обучения. Для их использования не надо быть математиком-экспертом, все, что нужно, — вызвать API и совершенно не задумываться о сложных математических аспектах — внутренне сервисы сделают все самостоятельно. И Project Oxford, как никогда, отлично отвечает этой идее.
Из чего состоит Project Oxford? Проект состоит из четырех групп самодостаточных облачных API: Face APIs, Computer Vision APIs, Speech APIs и пока находящихся в состоянии закрытой беты Language Understanding Intelligent Services (LUIS).
В набор служб Face APIs входят облачные алгоритмы обнаружения и распознавания человеческих лиц на фотографиях, а именно:
- обнаружение границ лиц в виде описывающих прямоугольников с выделением дополнительных характеристик, вроде координат частей лица, положения головы, пола и эвристической оценки возраста;
- широкий набор сервисов для распознавания, представляющих такие возможности как оценка схожести двух лиц, поиск похожих лиц на серии фотографий по заданному образцу, автоматическая группировка фотографий и идентификация (распознавание) людей на основе заранее подготовленной обучающей выборки.
Помимо стандартных задач поиска лиц на фотографиях и автоматической категоризации галереи фотографий вроде той, что представлена в Apple iPhoto, сервис может быть использован во многих других сценариях. Только вспомните современные блокбастеры. Слежение за передвижением людей с помощью камер внешнего наблюдения, автоматическая авторизация при подходе к сверхсекретной установке становятся возможными и реализуемыми с помощью сервисов Microsoft Project Oxford Face API.
Но, даже если Вы и не собираетесь становиться участником шпионской драмы, предложенные службы могут оказаться не менее полезными: интеллектуальное таргетирование контента на основе информации о поле и возрасте пользователя, фильтрации фотографий по изображению из списка контактов, — сценариев использование великое множество и ограничиваются они только воображением.
Всем заинтересовавшимся, как и пока не являющимся таковыми, я очень советую ознакомиться с дополнительной информацией по Face API на официальном сайте проекта. Там, вместе с документацией представлено несколько интересных демо, помимо визуализации дающих представлении о текстовом ответе API на запросы, — прекрасный способ опробовать сервисы и разобраться во всех их возможностях за пару минут.
Снискавший популярность сразу же после своего анонса сервис how-old.net и его недавно анонсированный собрат twinsornot.net по первоначальному плану также создавались лишь как демо Face API на период проведения конференции //BUILD 2015. Прочесть об истории успеха первого сервиса и попробовать перенести его на историю своего приложения можно здесь.
Самой интригующей частью проекта Оксфорд, бесспорно, являются службы интеллектуального понимания языка Language Understanding Intelligent Service или сокращенно LUIS. LUIS дает разработчикам возможности по построению моделей понимания естественного языка для удобного использования в своих приложениях.
Источников таких моделей может быть несколько. Простые модели могут быть построены на базе уже существующих и успешно используемых в таких проектах, как Cortana или Bing. Хотите, чтобы Ваше программное решение понимало основные концепции вроде времени, чисел или температуры и успешно отвечало на запрос вроде «напомни мне о тренировке в 8 утра», стандартных моделей будет достаточно. Если же необходимо отвечать на более сложные запросы вроде «начни трекинг пробежки» или «включи свет», то потребуется построение собственных моделей, что, в принципе, также достижимо с инструментами, представляемыми LUIS.
Дальше эти модели могут быть опубликованы как REST API и использованы на любых устройствах и операционных системах, способных к таким вызовам. Возможности, которые может представить LUIS сложно переоценить. Еще пару лет назад такие виртуальные помощники, как Cortana и Siri казались сложными и недостижимыми, а сейчас становятся доступными любому разработчику. Как никогда ранее, легко и непринуждённо ваше решение может стать по-настоящему интеллектуальным и, может быть, в конце концов ему удастся даже успешно пройти тест Тьюринга.
Но, к сожалению, проект такого масштаба требует времени для завершения. В отличие от других сервисов проекта Оксфорд, первоначально ограниченно доступных для использования, LUIS находится в состоянии закрытого тестирования. Дополнительная информация о проекте может быть найдена на официальной странице и видео одного из докладов с //BUILD 2015, а здесь можно зарегистрироваться в очередь на доступ в проект. Не упустите возможность окунуться в мир интеллектуального анализа естественного языка и дать эти возможности своим пользователям первым!
Сервисы группы Computer Vision APIs продолжают направление визуальной аналитики, но делают это в совершенно другом ключе. Они специализируются на анализе произвольных фотографий и предоставляют следующих широкий набор возможностей:
- категоризация изображений, как, например, еда, люди, здания и, конечно же, коты;
- поиск недопустимого сексуального или расового контента на фотографиях;
- определение доминирующих цветов изображения, фактов того, что оно является черно-белым, клипартом или линейчатым рисунком;
- распознавание текста (OCR);
- генерация эскизов (thumbnail) изображений на основе интеллектуального анализа экспозиции.
Признаться, сервисы Computer Vision API являются моими самыми любимыми по числу представляемых возможностей. Разбиение изображений по категориям является, наверное, одной из старейших задач машинного зрения и Вы уже, наверное, придумали с десяток сценариев его использования в своем проекте. Еще нет? Только попробуйте! Хотели ли Вы когда-нибудь реализовать OCR распознавание текста в своем приложении, считывать чеки, указатели на столбах или любую другую текстовую информацию, всюду окружающую нас в реальном мире, но считали, что это сложно и дорого? Теперь и это доступно и удобно к использованию как один из сервисов Project Oxford Computer Vision APIs.
Но, помимо описанных выше давно известных технологий, Computer Vision APIs дает много дополнительных возможностей. Например, рассмотрим такую чисто техническую задачу, как генерация эскизов изображений, также известных как thumbnail. Задача кажется простой, пока не сталкиваешься с ней в реальной жизни. При сохранении пропорций шкалирование — простая задача, но стоит только попробовать их изменить и тела без голов, «небо» вместо «кота на фоне неба» и другие проблемы некорректной обрезки фотографий начинают сыпаться из рога изобилия. И у Computer Vision API есть решение. Оно не только скрывает технические вопросы шкалирования при сохранении максимального качества эскиза, но и предварительно старается определить значимые элементы экспозиции, чем обеспечивает более корректный выбор границ обрезки изображения. Такой подход в большинстве случаев позволяет достичь максимального сохранения содержательности создаваемого эскиза. Только посмотрите на пример ниже, сервису не было сообщено никакой дополнительной информации кроме самого изображения человека на вершине горы.
Всем держателям сайтов, на которые пользователи могут загружать свои изображения, известна проблема модерации. И способность проекта Оксфорд детектировать сексуальный и расовый контент позволяет возложить эту сложную задачу на плечи машины. Все, что требуется при загрузке фотографии на ваш сервис, — сделать параллельный вызов в сторону Computer Vision APIs и по результирующему уровню соответствия изображения группам нежелательного контента принимать решение о дополнительной человеческой обработке или категорическом запрете пользователю в публикации. Но, если такого решения недостаточно и требуется более сложный подход, то, возможно, есть смысл обратить внимание на группу аналогичных сервисов, использующих Computer Vision APIs в качестве основы: Microsoft Content Moderator и PhotoDNA Cloud Service.
Все заинтересовавшиеся могут найти больше информации на официальной сайте проекта, где, как и раньше, дополнительно доступны документация и удобные для экспериментов демо.
Сервисы Speech APIs определяют алгоритмы множество лет подряд использующиеся в голосовых службах поисковой системы Bing, недавно представленном Skype Translator, а с недавнего времени вошедшие в естественной форме в состав Windows 10 в форме уже небезызвестного виртуального ассистента Cortana. Как несложно догадаться, в состав Speech API входят службы по распознаванию голоса из аудио файла в текст и обратно.
Описанная функциональность не требует особо представления, а потому лишь обсудим некоторые дополнительные возможности. В первую очередь необходимо поговорить о языках и здесь все не в пользу русского. Сервисы по распознавания голоса на данный момент поддерживают лишь английский, немецкий, испанский, французский, итальянский и китайский, но этот список постоянно расширяется. Генерация же голоса по тексту радует поддержкой ряда дополнительных языков, включая русский, и потому может быть активно использована уже сейчас. Также стоит отметить тот факт, что службы распознавания поддерживают онлайн обработку с возможностью возвращения предварительных результатов. Это позволяет значительно ускорить процесс разбора входящего потока и сделать пользовательский интерфейс максимально отзывчивым.
Помимо того Speech API — единственный из сервисов Project Oxford, который не требует постоянного активного Интернет-соединения. Соответствующие алгоритмы встроены в Universal Windows Platform и могут быть использованы в ваших универсальных приложения на всех устройствах на базе Windows 10 офлайн.
Если во времена победившей глобализации отсутствие поддержки русского языка не является для Вас непреодолимым ограничением или Вам интересно узнать насколько Speech API отвечают именно вашему сценарию использования, то советую посетить главную страницу проекта в поисках дополнительной информации о решении, технической документации и уже не раз рекомендованных интерактивных демо.
Если у Вас уже есть мобильное приложение или сайт, или вы только собираетесь создать что-то такое, подумайте, чем лично Вам может быть полезен Project Oxford и, я уверен, что-нибудь найдется. С ним Ваше решение станет более современным и положительно выделится из множества других, а пользователи останутся довольны ранее невиданными удобством использования и возможностями. И самое главное, от Вас не потребуется никакого анализа сложной зубодробительной математики, долгой разработки сложного готового ко всему алгоритма, — вообще никаких усилий кроме пары строчек кода для вызова необходимого сервиса. С Project Oxford использование служб машинного обучения становится как никогда простым.