Злодей ИИ против человечества! Когда я был ребенком, который рос в 80-е, одними из самых крутых фильмов были «Терминатор» и «Терминатор 2» с Арнольдом Шварценеггером в главной роли. ICYMI - робот с искусственным интеллектом (Арнольд) был отправлен из будущего, чтобы попытаться уничтожить любую возможность человеческого сопротивления в будущем.

Тогда нам, людям, казалось, что создание такого робота - это далекое будущее, пока в Интернете не появился этот клип: https://www.youtube.com/watch?v=LikxFZZO2sk, робот, созданный Boston Dynamics . Многие люди в тот день подавились кофе.

Если эта штука когда-нибудь станет умной и враждебной по отношению к людям, нам нужно присоединиться к Илону Маску Тесла в космосе: wink:

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

Https://www.youtube.com/watch?v=zzcdPA6qYAU

Тогда это было потрясающе, научная фантастика в лучшем виде.

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

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

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

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

  • зрение. Это алгоритмы обработки изображений, которые могут identify, caption, index, moderate pictures и видео
  • Speech, может преобразовывать spoken audio into text, использовать voice for verification или добавлять speech recognition to ваше приложение
  • язык, разрешите своим приложениям process natural language использовать готовые сценарии evaluate sentiment и узнайте, как recognize what users want
  • знания. Отображение сложной информации и данных для решения таких задач, как intelligent recommendations и semantic search.
  • поиск. Разрешите приложениям и службам использовать возможности web-scale, ad-free search engine с поиском. Используйте поисковые службы, чтобы найти именно то, что вы ищете, среди миллиардов веб-страниц, изображений, видео и результатов поиска новостей.

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

Чтобы продолжить представленное повествование, давайте погрузимся в категорию видения, потому что мы хотим видеть как Терминатор, верно? ;)

Нажмите Знаменитости и узнаваемость в изображениях. О, здорово, у нас есть демонстрационная страница, где мы можем увидеть алгоритмы в работе, попробуйте, прежде чем покупать :)

Выше мы видим, что для изображения требуется ввести URL, и, похоже, он отвечает JSON. Хорошо, давайте сделаем что-нибудь простое, фотографию Эйба Линкольна:

И победитель…. Эйб Линкольн. Хорошо, это было легко, давайте попробуем что-нибудь еще:

Я должен признать. Я очень нервничаю из-за этого;). Хорошо, посмотрим на результаты:

Хорошо, он узнал Арнольда Шварценеггера из фильма «Терминатор 2», хорошо. Клянусь, если бы там упоминался Джон Коннор, я бы убежал в горы, шучу :)

Использование когнитивных служб Azure

Чтобы начать использовать API Cognitive Services, нам понадобится ключ API. Нам нужно сделать несколько шагов, чтобы получить указанный ключ, но на самом деле это не так уж и много. Когнитивные службы находятся в Azure. Чтобы получить бесплатную учетную запись Azure, перейдите по этой ссылке:

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

Как только мы зашли так далеко, осталось всего четыре шага, так что оставайтесь со мной, и мы скоро увидим мир, как Арнольд 😃.

Остается следующее:

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

Создать группу ресурсов

Первое, что нам нужно сделать, это войти в Azure с помощью Azure CLI. Чтобы использовать Azure CLI, нам сначала нужно его установить. Перейдите по этой ссылке для получения инструкций по установке, инструкции по установке отличаются для разных ОС, поэтому убедитесь, что вы выбрали правильную:

Https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest

Давайте войдем в Azure с помощью Azure CLI:

az login

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

Теперь создадим группу ресурсов:

az group create \
--name resourceforcogservices \
--location westeurope

Здесь используется команда az group create, и мы даем ей следующие аргументы:

  • name, это имя мы выбираем
  • местоположение, здесь мы можем выбрать одно из нескольких мест в зависимости от того, где мы находимся в мире.

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

  • westus2
  • Southcentralus
  • Centralus
  • Eastus
  • Западная Европа
  • Юго-Восточная Азия
  • Япония
  • БразилияЮжный
  • австралия юго-восток
  • Centralindia

Создание учетной записи Azure Cognitive Services

Создать учетную запись довольно просто. Это делается с помощью следующей команды:

az cognitiveservices account create \
--kind ComputerVision \
--name ComputerVisionService \
--sku S1 \
--resource-group resourceforcogservices \
--location westeurope

Хорошо, наша основная команда az cognitiveservices account create, после этого мы добавили несколько аргументов к указанной команде:

  • kind, здесь нам нужно указать, какие когнитивные службы мы будем использовать, наше значение здесь должно быть ComputerVision
  • имя, это просто имя службы, то есть ComputerVisionService
  • sku означает уровень ценообразования и фиксируется на весь срок службы, мы выбираем S1, что действительно дешево.
  • resourcegroup, мы создали эту группу ранее, и, как было сказано ранее, она похожа на папку, в которой все, что связано, должно быть организовано в
  • местоположение, мы продолжаем использовать westeurope здесь, потому что именно с этого мы начали, вы можете продолжить работу с местоположением, с которым вы отправились

Вот ссылка, которая расскажет вам больше о ценах и различных планах управления затратами:

Https://docs.microsoft.com/en-us/azure/search/search-sku-tier

После создания учетной записи Cognitive Services мы можем получить ключ API. Следующая команда выведет список нашей учетной записи когнитивных служб, включая ключ API:

az cognitiveservices account show \
--name ComputerVisionService \
--resource-group resourceforcogservices

Наша команда для получения ключа az cognitiveservices account show, тогда нам нужно дать этой команде несколько аргументов:

  • name, это название нашей службы
  • группа ресурсов, мы продолжаем использовать группу ресурсов westeurope, которую выбрали изначально

Сделайте POST-вызов API

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

key=$(az cognitiveservices account keys list \
--name ComputerVisionService \
--resource-group resourceforcogservices \
--query key1 -o tsv)

В приведенном выше списке перечислены все ключи учетной записи, выбран ключ с именем key1 и назначен его переменной key. Теперь мы все настроены и готовы к вызову REST.

Давайте взглянем на наш API и посмотрим, как выглядит URL в целом:

https://<region>.api.cognitive.microsoft.com/vision/v2.0/analyze?visualFeatures=<...>&details=<...>&language=<...>

Мы видим, что нам нужно заменитьregion на любой регион, в котором мы создали нашу группу ресурсов и учетную запись, в нашем случае это westeurope. Кроме того, мы видим, что API использует метод с именем analyze и параметры visualFeatures, details и language.

  • подробности, может иметь значение Landmarks или Celebrities
  • visualFeatures, это информация о том, какую информацию вы хотите получить. Параметр Categories классифицирует содержимое изображений, например, деревья, здания и т. д. Faces распознает лица людей и сообщит вам их пол и возраст

Хорошо, давайте посмотрим, как выглядит настоящий звонок:

curl "https://westeurope.api.cognitive.microsoft.com/vision/v2.0/analyze?visualFeatures=Categories,Description&details=Landmarks" \
-H "Ocp-Apim-Subscription-Key: $key" \
-H "Content-Type: application/json" \
-d "{'url' : 'https://raw.githubusercontent.com/MicrosoftDocs/mslearn-process-images-with-the-computer-vision-service/master/images/mountains.jpg'}" \
| jq '.'

Выше мы вызываем cURL и устанавливаем заголовок Ocp-Apim-Subscription-Key для нашего ключа API или, более конкретно, для нашей переменной key, которая содержит наш ключ API. Мы видим, что мы создаем значение BODY со свойством url и устанавливаем его для изображения, которое хотим проанализировать.

Глядя на ответ

Хорошо, мы звоним, нам сказали, что будет JSON. И их очень много :)

{
"categories": [{
"name": "outdoor_mountain",
"score": 0.99609375,
"detail": {
"landmarks": []
}
}],
"description": {
"tags": [
"snow",
"outdoor",
"mountain",
"nature",
"covered",
"skiing",
"man",
"flying",
"standing",
"wearing",
"side",
"air",
"slope",
"jumping",
"plane",
"red",
"hill",
"riding",
"people",
"group",
"yellow",
"board",
"doing",
"airplane"
],
"captions": [{
"text": "a snow covered mountain",
"confidence": 0.956279380622841
}]
},
"requestId": "<undisclosed>",
"metadata": {
"width": 600,
"height": 462,
"format": "Jpeg"
}
}

score указывает на то, насколько он уверен в результатах. При значении 0.99609375 (максимальное - 1.0) я бы сказал, что это чертовски уверенно. captions - это алгоритм, пытающийся дать нам нормальное представление о том, что это такое. В нем говорится, что это: заснеженная гора. Давайте сами посмотрим на URL, который мы предоставили для вызова службы :

Ага, мне кажется, Гора, добрый Скайнет;)

Резюме

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

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

Надеюсь, вы так же взволнованы, как и я, и попробуете. Надеюсь, лучший способ начать - это этот пост в блоге, но стоит проверить платформу LEARN и особенно этот курс. Удачи :)

Если вы нашли эту статью полезной / веселой / забавной / чем-нибудь, пожалуйста, хлопните мне в ладоши :)