Что в действительности представляют собой когнитивные службы и для чего они предназначаются? Когнитивные службы — это набор алгоритмов машинного обучения, разработанных корпорацией Microsoft для решения проблем в области искусственного интеллекта (AI). Цель когнитивных служб заключается в демократизации AI путем упаковки его в дискретные компоненты, которые легко могут использоваться разработчиками в их собственных приложениях. Разработчики, специализирующиеся на универсальной платформе Windows и веб-приложениях, могут использовать эти алгоритмы с помощью стандартных вызовов REST по интернету к интерфейсам когнитивных служб.
Когнитивные интерфейсы API сгруппированы в пять категорий:
- Vision — анализ изображений и видео на предмет контента и другой полезной информации.
- Speech — средства для улучшения распознавания речи и определения личности говорящего.
- Language — понимание предложений и намерений, а не просто слов.
- Knowledge — находит данные исследований из научных журналов.
- Search — применение машинного самообучения к поиску в интернете.
Так в чем же состоит долгосрочная выгода от обеспечения легкого доступа к AI? Любой, кто наблюдает за технологическими тенденциями, осознает, что мы находимся на рубеже огромных прорывов в области AI; в наши дни компьютеры побеждают чемпионов мира по шахматам, а также готовятся к тому, чтобы пройти тест Тьюринга и другие профессиональные тесты. Все крупнейшие технологические компании соревнуются в «гонке вооружений», стараясь нанять лучших исследователей AI.
Наряду с высокопрофильными проблемами AI, о которых думают ученые, например, то, как пройти тест Тьюринга и как моделировать компьютерные нейронные сети, основанные на принципах работы человеческого мозга, есть еще и дискретные проблемы, с которыми сталкиваются разработчики, например, такие как разметка семейных фотографий, а также поиск еще более ленивого способа заказа любимой пиццы на смартфоне. API когнитивных служб — это мост, позволяющий разработчикам веб-приложений и UWP использовать ресурсы основных исследований в области AI для решения собственных проблем. Давайте начнем с обзора API Vision.
Интерфейсы API когнитивных служб
API Vision разбивается на пять групп задач:
- Computer Vision — извлекает из изображений информацию, имеющую практическую ценность.
- Content Moderator — автоматически модерирует текст, изображения и видео на предмет ненормативной лексики и неприемлемого содержимого.
- Emotion — анализирует выражения лиц для определения различных настроений.
- Face — распознает лица и сходства между ними.
- Video — анализ, редактирование и обработка видео в приложении.
Поскольку интерфейс Computer Vision API сам по себе является огромной темой для обсуждения, эта статья будет в основном касаться только его возможностей в качестве «прихожей» для других интерфейсов. Однако, следующие описание принципов его использования даст вам хорошее представление также и о том, как работать с другими Vision API.
К сведению: Многие API когнитивных служб в настоящее время находятся на стадии предварительного тестирования, и они улучшаются и меняются на основе отзывов пользователей.
Одной из самых крутых функций из тех, что имеются у Computer Vision API, является обозначение и категоризация изображения на основании того, что он может идентифицировать в этом изображении. Это тесно связано с проблемой машинного зрения, известной как распознавание объектов. В своем текущем состоянии API распознает 2000 различных объектов и группирует их по 87 классификациям.
Использовать Computer Vision API совсем нетрудно. Кстати сказать, имеются даже готовые образцы для использования его на различных платформах разработки, среди которых NodeJS, Android SDK и Swift SDK. Давайте подробно рассмотрим процесс разработки приложения UWP на C#.
Первое, что Вам нужно сделать, это зарегистрироваться на сайте когнитивных служб и запросить ключ для предварительной версии Computer Vision, кликнув по одной из кнопок Get Started for Free («Приступить к работе»).
Затем создайте новый проект UWP в Visual Studio и добавьте пакет NuGet — ProjectOxford.Vision, открыв Tools | NuGet Package Manager | Manage Packages for Solution и выбрав его. (Project Oxford — это прежнее название API когнитивных служб).
Для того чтобы создать простой пользовательский интерфейс, требуется всего лишь элемент управления Image для предварительного просмотра изображения, Button для отправки изображения в Computer Vision REST Services и TextBlock для хранения результатов. Рабочий процесс у этого приложения состоит в том, чтобы — выбрать изображение -> отобразить изображения -> отправить изображение в облако -> отобразить результаты анализа, произведенного Computer Vision.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <Grid.RowDefinitions> <RowDefinition Height="9*"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition/> <ColumnDefinition/> </Grid.ColumnDefinitions> <Border BorderBrush="Black" BorderThickness="2"> <Image x:Name="ImageToAnalyze" /> </Border> <Button x:Name="AnalyzeButton" Content="Analyze" Grid.Row="1" Click="AnalyzeButton_Click"/> <TextBlock x:Name="ResultsTextBlock" TextWrapping="Wrap" Grid.Column="1" Margin="30,5"/> </Grid> |
При нажатии кнопки — Analyze Button обработчик в программном коде страницы откроет FileOpenPicker, чтобы пользователь мог выбрать изображение. В методе ShowPreviewAndAnalyzeImage возвращенное изображение используется в качестве источника изображения для элемента управления Image.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | readonly string _subscriptionKey; public MainPage() { //set your key here _subscriptionKey = "b1e514ef0f5b493xxxxx56a509xxxxxx"; this.InitializeComponent(); } private async void AnalyzeButton_Click(object sender, RoutedEventArgs e) { var openPicker = new FileOpenPicker { ViewMode = PickerViewMode.Thumbnail, SuggestedStartLocation = PickerLocationId.PicturesLibrary }; openPicker.FileTypeFilter.Add(".jpg"); openPicker.FileTypeFilter.Add(".jpeg"); openPicker.FileTypeFilter.Add(".png"); openPicker.FileTypeFilter.Add(".gif"); openPicker.FileTypeFilter.Add(".bmp"); var file = await openPicker.PickSingleFileAsync(); if (file != null) { await ShowPreviewAndAnalyzeImage(file); } } private async Task ShowPreviewAndAnalyzeImage(StorageFile file) { //preview image var bitmap = await LoadImage(file); ImageToAnalyze.Source = bitmap; //analyze image var results = await AnalyzeImage(file); //"fr", "ru", "it", "hu", "ja", etc... var ocrResults = await AnalyzeImageForText(file, "en"); //parse result ResultsTextBlock.Text = ParseResult(results) + "\n\n " + ParseOCRResults(ocrResults); } |
Реальная команда действует тогда, когда возвращенное изображение передается в класс VisionServiceClient, включенный в импортируемый Project Oxford NuGet. Интерфейс Computer Vision будет пытаться распознать объекты в передаваемом ему изображении и рекомендовать для него теги. Он также анализирует свойства изображения, цветовую схему, ищет человеческие лица и пытается, кроме всего прочего, создать подпись к изображению.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | private async Task<AnalysisResult> AnalyzeImage(StorageFile file) { VisionServiceClient VisionServiceClient = new VisionServiceClient(_subscriptionKey); using (Stream imageFileStream = await file.OpenStreamForReadAsync()) { // Analyze the image for all visual features VisualFeature[] visualFeatures = new VisualFeature[] { VisualFeature.Adult, VisualFeature.Categories , VisualFeature.Color, VisualFeature.Description, VisualFeature.Faces, VisualFeature.ImageType , VisualFeature.Tags }; AnalysisResult analysisResult = await VisionServiceClient.AnalyzeImageAsync(imageFileStream, visualFeatures); return analysisResult; } } |
И на этом он не останавливается. С помощью нескольких строк кода можно также использовать класс VisionServiceClient для поиска текста в изображении, а затем возвращать все, что находит Computer Vision API. Эта функция оптического распознавания в настоящее время распознает около 26 различных языков.
1 2 3 4 5 6 7 8 9 10 | private async Task<OcrResults> AnalyzeImageForText(StorageFile file, string language) { //language = "fr", "ru", "it", "hu", "ja", etc... VisionServiceClient VisionServiceClient = new VisionServiceClient(_subscriptionKey); using (Stream imageFileStream = await file.OpenStreamForReadAsync()) { OcrResults ocrResult = await VisionServiceClient.RecognizeTextAsync(imageFileStream, language); return ocrResult; } } |
При объединении функций анализа изображений и распознавания текста API-интерфейса Computer Vision возвращаются такие результаты, как показано ниже:
Преимущество этого конкретного API-интерфейса когнитивных служб заключается в том, что он позволяет сканировать папки устройства на предмет наличия семейных фотографий и автоматически запускать их обозначение. Кроме того, с расширением Face API можно маркировать фотографии именами друзей, а также членов семьи. А если добавить Emotion API, тогда можно даже начать отмечать на фотографиях настроение людей. С помощью когнитивных служб можно в автоматическом режиме осуществлять те задачи, которые обычно требует человеческого суждения, и сочетать их с неутомимостью компьютера (в данном случае с компьютером, который учится) для быстрого и бесконечного выполнения этих действий на максимальном количестве фотографий.
Заключение
В этой первой статье, посвященной когнитивным API, мы рассмотрели когнитивные службы, а также то, что они предлагают разработчику. Кроме того, мы познакомились с API-интерфейсами Vision и изучили пошаговое руководство по использованию одного из них. В следующей статье мы рассмотрим API-интерфейсы распознавания речи. Если Вы хотите копнуть поглубже, тогда вот некоторые ссылки, которые могут быть Вам полезны:
- Речевой и языковой API-интерфейс на основе искусственного интеллекта
- Когнитивные службы: искусственный интеллект создается легко
- Подборка ресурсов для изучения систем искусственного интеллекта/машинного обучения
- Образцы кода
- Приступаем к углубленному обучению
Автор: Windows Apps Team
Источник: Блог Windows
Написать ответ