学习使用认知服务将人工智能添加到您的应用
在Twitter上关注我,很高兴接受您对主题或改进的建议/Chris
一个反人类的人工智能恶棍!对于一个在80年代成长的孩子来说,最酷的电影莫过于阿诺德·施瓦辛格主演的《终结者》和《终结者2》。如果你错过了——一个来自未来的人工智能机器人(阿诺德)被派来试图摧毁人类未来任何反抗的机会。
那时候,我们人类制造出能像那样移动的机器人似乎还遥不可及,直到这段视频火遍网络https://www.youtube.com/watch?v=LikxFZZO2sk
波士顿动力公司制造的机器人。那天,很多人都被咖啡呛到了。
如果那玩意儿真的变得聪明起来,甚至对人类怀有敌意,那我们就得像埃隆·马斯克的特斯拉那样,在太空里玩玩了😉
《终结者》里一个非常前卫的场景突然闪现在我脑海里。终结者走进摩托车酒吧,扫描房间里的人和物体,准确地辨别出这些物体是什么,颜色、大小,以及它们是否是他的目标!https://www.youtube.com/watch? v=zzcdPA6qYAU
那时候,这简直是科幻小说的翻版,简直是科幻小说的翻版。
但问题是,现在这已经不再是科幻小说了。机器学习领域已经发生了太多事情。机器学习行业雇佣了一大批数据科学家,他们构建算法,根据训练数据,算法能够正确识别目标。
一个相当著名的例子就是哈巴狗或松饼的训练数据,从中我们可以一窥这些算法是如何在无数张类似这样的图像上进行训练的:
我知道你们中的一些人现在可能正在笑,认为我们不必担心机器很快就会超越我们。
我之前说过这不再是科幻小说了,事实也的确如此。微软提供了一整套名为Azure 认知服务的服务。
以……为中心
- 视觉,这是图像处理算法,可以识别
caption
、、、index
适度pictures
和videos
- 语音,可以将口语音频转换为文本,使用语音进行验证或将语音识别添加到您的应用
- 语言,允许您的应用程序使用预建脚本处理自然语言,评估情绪并学习如何识别用户的需求
- 知识,映射复杂的信息和数据,以解决智能推荐和语义搜索等任务。
- 搜索,让应用和服务能够利用强大的网络规模、无广告的搜索引擎,搜索服务助您在数十亿网页、图片、视频和新闻搜索结果中精准找到所需内容。
正如你所注意到的,点击上述任何类别,每个区域都会引导你找到大量的服务,而且这些服务都可以免费试用。我不知道你是怎么想的,但当有人告诉我这里有大量的 API 供你使用,尤其是当它能让我作为开发者也能使用机器学习时,我感觉就像一个在糖果店里的孩子。
为了配合介绍的内容,让我们深入探讨一下视觉类别,因为我们想看到像终结者一样的东西,对吧?;)
让我们点击图片中的名人和地标识别。哦,太棒了,我们得到了一个演示页面,可以在那里看到算法的工作原理,购买前可以先试用一下 :)
上面我们可以看到,它要求我们输入图片的 URL,并且它似乎返回的是 JSON 格式。好吧,我们来输入一些简单的东西,比如一张亚伯拉罕·林肯的照片:
获胜者是……亚伯拉罕·林肯。好吧,这很简单,我们来试试别的:
我得承认,我有点紧张 ;)。好吧,我们来看看结果:
好吧,它认出了电影《终结者2》里的阿诺德·施瓦辛格,不错。我发誓,如果它提到了约翰·康纳,我肯定得赶紧逃之夭夭,开玩笑的啦 :)
使用 Azure 认知服务
要开始使用认知服务 API,我们需要一个 API 密钥。获取密钥需要几个步骤,但实际上并不复杂。认知服务驻留在 Azure 上。要获取免费的 Azure 帐户,请访问此链接:
注册后,您可以使用 Azure 门户或 Azure CLI。Azure CLI 使我们能够通过命令行与 Azure 交互,这通常比在 UI 中点击更快捷、更酷炫。
一旦我们走到这一步,就只剩下四步了,所以跟我在一起,我们很快就会像阿诺德一样看世界😃
剩下的内容如下:
- 创建一个资源组,这就像一个目录,你可以把所有属于一起的东西,比如账户、数据库、应用程序,只需一秒钟就可以创建
- 创建一个认知服务帐户,这也只是一行代码,创建它将为我们提供 API 密钥
- 对 API 进行 POST 调用,这是一个非常简单的 REST API 调用,因为我们从构建认知服务帐户中获得了 API 密钥
- 解析 JSON 响应,我们将得到一个 JSON,然后查看它提供的不同部分,看看我们可以向用户显示什么
创建资源组
我们首先需要使用 Azure CLI 登录 Azure。要使用 Azure CLI,首先需要安装它。请访问此链接获取安装说明,不同操作系统的安装说明不同,因此请确保选择正确的操作系统:
https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest
让我们使用 Azure CLI 登录 Azure:
az login
这将在浏览器中打开一个窗口,我们可以在其中登录 Azure 帐户。之后,终端就可以访问 Azure 了。
现在让我们创建资源组:
az group create \
--name resourceforcogservices \
--location westeurope
这里的命令是az group create
,我们给它以下参数:
- 名字,这是我们选择的名字
- 位置,我们可以根据我们在世界上的位置在这里选择多个位置
对于位置,我们选择了westeurope
,因为我正在那里撰写本文。因此,请根据您所在的位置选择一个区域。以下是受支持区域的完整列表:
- westus2
- 中南地区
- 中央
- 伊斯特斯
- 西欧
- 东南亚
- 日本东部
- 巴西南部
- 澳大利亚东南部
- 印度中部
创建 Azure 认知服务帐户
创建这个帐户非常简单。使用以下命令即可完成:
az cognitiveservices account create \
--kind ComputerVision \
--name ComputerVisionService \
--sku S1 \
--resource-group resourceforcogservices \
--location westeurope
好的,我们的基本命令是az cognitiveservices account create
,然后我们向该命令添加一些参数:
- 类型,这里我们需要输入我们将使用哪种认知服务,这里的值需要是 ComputerVision
- name,名称只是服务的名称,即
ComputerVisionService
- sku表示定价层级,在服务的整个生命周期内是固定的,我们选择 S1,它确实很便宜。
- 资源组,我们之前已经创建了这个,正如之前所说,这就像一个文件夹,所有相关的东西都应该组织在下面
- 位置,我们继续使用西欧,因为这是我们开始的地方,欢迎您继续使用您之前的位置
https://docs.microsoft.com/en-us/azure/search/search-sku-tier
创建认知服务帐户后,我们就可以检索 API 密钥。以下命令将列出我们的认知服务帐户,包括 API 密钥:
az cognitiveservices account show \
--name ComputerVisionService \
--resource-group resourceforcogservices
我们的检索密钥的命令是,az cognitiveservices account show
我们需要给该命令一些参数:
- 名称,这是我们服务的名称
westeurope
资源组,我们继续使用最初选择的资源组
对 API 进行 POST 调用
现在,为了方便我们进行 REST 调用时使用,我们将 API 密钥赋值给一个 shell 变量,以便稍后进行 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
、详细信息 和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),我会说它非常确定。图片说明是算法试图用一个正常的句子来解释它是什么。它说它是:a snow-covered mountain
。让我们通过我们提供给服务调用的 URL 来亲自看看:
是的,在我看来就像一座山,好天网 ;)
概括
我带你回顾了我的童年,现在你知道我是个电影迷了,对所有这些人工智能和机器学习研究的未来发展方向有些怀疑。同时,我也对能够利用认知服务构建各种酷炫的应用感到兴奋。
这里也有一些值得思考的地方。人们很容易拿杀手机器人开玩笑,尤其是当它们来自电影世界的时候。拥有所有伟大的科技,我们有责任利用它们做一些有用的事情,服务人类。想象一下,像这样的算法被安装在无人机或直升机上。再想象一下,一场灾难发生了,你正在寻找幸存者,而你有一些很棒的算法可以帮助你快速找到他们。这真的可以带来改变,拯救生命。
我希望你和我一样兴奋,并尝试一下。希望这篇博文是入门的最佳方式,但也值得看看LEARN平台,尤其是这门课程。祝你好运 :)
如果您发现这篇文章有用/有趣/有趣/任何内容,请给我鼓掌:)
文章来源:https://dev.to/azure/learn-to-add-ai-to-your-apps-with-cognitive-services-2c32