目录
简介和背景
微软认知服务的背景
提示#0:询问(说服)你的老板
提示#1:只取你需要的东西
提示 #2:将所有内容保存在Azure中
提示 #3:充分利用REST API
例子
提示#4:时间就是一切
提示 #5:安全性
简介和背景正如标题所示,这篇文章是针对微软认知服务用户的个人推荐,这些服务为人工智能软件应用程序提供基于云的订阅解决方案,具有任何团队、任何目的和任何规模承诺。我们都知道,微软如今在Azure上投入了大量人力、推广和承诺,几乎他们的每一个解决方案都在Azure的边缘徘徊,并且以一种或另一种方式,他们得出了相同的结论,该解决方案可以作为软件即服务从Azure购买——还有许多其他名称,平台即服务、服务即服务,请从池中选择您喜欢的名称。
在这篇文章中,我将介绍您的团队在迁移到Microsoft认知服务之前应该了解的最重要的几点。
微软认知服务的背景对于不知道什么是Microsoft认知服务的任何人:Microsoft认知服务是一揽子服务,由Microsoft提供给任何规模和任何规模的个人、团队和/或组织,以提供需要复杂机器的服务学习或人工智能的反应。
完成机器学习是一项艰巨的任务,只需一个错误的输入,您的整个算法就可以{在此处添加俚语}。微软正在提供这项服务,您只需提供算法的输入,就可以获得输出。微软自己管理算法的微调方式,或者算法的性能,你不用担心。
它是一项基于订阅的服务,现在在Azure中作为服务提供。在这篇文章中,您将了解认知服务服务对您有多大帮助!
提示#0:询问(说服)你的老板Microsoft认知服务针对数千(如果不是数百万)用户、数据记录和实体进行了测试,并且算法真的很具体!你无法达到微软认知服务真正提供服务的水平,原因是微软与相当多的学术教授、独立开发者、团队和组织合作,甚至大多数时候网上冲浪者都会出现并分享一些数据到云——所有这些都在一个许可下,微软要求许可,无论如何我不是在这里掩盖许可条款。
获取权限,以便我们可以继续这篇文章。
认知服务是一个服务库,库中已经添加了很多服务,而且每个月都会添加许多服务。但这并不意味着您应该考虑所有这些,甚至是其中的一半。它们都归类在不同的子部分下,其中包含Microsoft CS提供的集体服务,
- Vison
- 这组服务包含人脸API,例如识别和跟踪。
- 它还提供可以从人脸中提取特征的服务,例如年龄、情绪检测。
- 它还提供计算机视觉,允许用户对图像执行OCR功能。
- Speech
- 允许您的用户根据他们的声音命令触发功能。— 自然语言处理。
- 说话人识别——尖端技术!
- 语音转文字和文字转语音服务。
- Language
- 允许对文本进行语言分析。
- 您也可以使用以前的服务对照片进行分析,这样您就可以使用OCR读取文本,然后对文本进行分析。
- LUIS(语言理解智能服务)是新的Jarvis!
- Knowledge
- 推荐系统。
- 任何需要复杂的学术或研究内容的东西。
- Seach
- 旧版Bing API现在在此处提供……
同样,您可以看到这些是类别,甚至这些类别也具有您可能想要使用的不同API集和服务。由你决定,选择你需要的那个。
让我简单地说,如果您需要做的就是从图像中读取文本,将它们转换为语音并进行交流。那么你只需要购买“Computer Vision API”和“Bing Speech API”。您的应用程序将不需要其余的服务。最后可以添加LUIS以支持以后的通信。
会有更多的服务,你总是可以添加更多的服务。但是,如果您不再使用某项服务,或者您的应用程序与某项服务无关,则无需为该服务购买密钥。
提示 #2:将所有内容保存在Azure中Microsoft CS是从不同区域(所有Microsoft属性)提供的,例如LUIS可以通过luis.ai访问,反之亦然。但是您应该保持家庭紧密,并将所有密钥和资源保留在Azure上。这样您就可以通过单个订阅管理所有内容,而不必查看各种不同的帐户来配置和使用应用程序。
Microsoft CS支持基于REST的API(我们将在后面的技巧中介绍这一点),因此很容易将密钥添加到URL并开始使用服务。
您可以在Azure中管理所有密钥,只需前往认知服务刀片并打开您想要为其获取密钥的应用程序。在“密钥”部分下,查找可用于验证请求的密钥。
图 1:与帐户关联的认知服务列表。
我有4项服务处于活动状态,我可以通过REST API在Azure中访问这些服务。那是多么简单!您可以添加更多密钥、添加更多服务、更新密钥……所有这些都来自Azure!在这篇文章的最后,你会意识到这个技巧的重要性。
提示 #3:充分利用REST APIMicrosoft CS Azure端点作为REST API端点提供,您可以通过任何HTTP客户端(甚至是Web浏览器)进行访问。REST API,由于使用HTTP协议,允许您充分利用HTTP协议和发送/接收信息。目前微软CS支持两种方式上传信息到云端,
- 基于URL
- 二进制数据库
这是可以将内容交付到Azure进行处理的两种方式。除此之外,请求唯一需要的头是订阅密钥,添加到“Ocp-Apim-Subscription-Key”的头中,首先处理它,然后根据订阅信息处理其余的东西。
例子现在让我向您展示WPF应用程序中的一个小示例,该示例使用计算机视觉API来检测图像的全部内容。Azure将生成一个完整的句子来解释图像、图像中的对象以及正在完成的任务。
WPF应用程序的XAML代码如下,
Process
Select
图 2:WPF 应用程序正在运行,没有选择图像。
至于后端代码,C#代码编写如下,
private async void btn_Click(object sender, RoutedEventArgs e)
{
using (var client = new HttpClient())
{
// Request headers
client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", "");
// Request parameters
var uri = $"https://westus.api.cognitive.microsoft.com/vision/v1.0/analyze?visualFeatures=Description";
// Request body
if(fileName == null) { MessageBox.Show("Select a file first."); }
byte[] byteData = File.ReadAllBytes(fileName);
using (var content = new ByteArrayContent(byteData))
{
content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
var response = await client.PostAsync(uri, content);
}
rslt.Text = await response.Content.ReadAsStringAsync();
}
}
private void slct_Click(object sender, RoutedEventArgs e)
{
OpenFileDialog dialog = new OpenFileDialog();
if (dialog.ShowDialog() == true)
{
// Something happened
fileName = dialog.FileName;
var source = new BitmapImage(new Uri(fileName));
image.Source = source;
}
}
同样,这段代码的输出,一旦工作,
图 3:选择的图像和从Azure捕获的响应。
如所见,这是结果,可以映射到JSON对象以进行存储或进一步处理请求。
提示#4:时间就是一切我们对Microsoft CS的兴趣只有在它能够保证我们及时得到结果的情况下才有可能,例如如果我们将Microsoft CS投资于安全应用程序,那么应该及时向用户提供结果,滞后可能会导致我们重新考虑周围的东西。
所以,我也想展示请求的时间,以展示这一切是如何工作的。为此,我修改了代码并应用了以下更改,
Stopwatch watch = new Stopwatch();
watch.Start();
response = await client.PostAsync(uri, content);
watch.Stop();
rslt.Text = $"Request took {watch.ElapsedMilliseconds} ms to complete, for {byteData.Count()} sized byte array.\n\n";
rslt.Text += await response.Content.ReadAsStringAsync();
这样做的效果是我能够确定处理和返回结果需要多长时间。
图 4:显示时间的应用程序。
看上面的一段,它说,“对于33282大小的字节数组,请求需要3519毫秒才能完成。” 这意味着,处理一个大约30 kB的文件大约需要3.5秒。还有其他因素导致延迟,例如我的互联网连接。其次,较大的图像文件会花费更多时间,较小的图像会快速处理但会出现错误。
我们从中学到了一些东西……
- Azure的时机不是很大的因素,因素是
- 我们自己的互联网连接
- 图像本身
- 要完成的处理类型很重要
- 处理15秒的低质量音轨与1分钟的高质量音轨,永远不会以相同的时间结束。
- 在这种情况下,CDN可能有帮助,也可能没有帮助
最后,不同API的要求不同,这就是为什么我不会谈论推荐的图像大小。但是,您可以通过将文件直接上传到 Azure来提高应用程序的性能,因为Azure总是会从URL下载文件 并对其进行处理。那么,为什么不直接上传呢?
提示 #5:安全性您的应用程序的密钥非常重要。如果它们丢失了,或者任何人都可以访问它们,那么您应对所发生的事情负责——在最坏的情况下,他们可能会使用您自己的资源为自己使用,并且收费将由您承担!
请记住提示#2,如果您听从了我的建议,如果您觉得有人可以访问密钥,您现在可以轻松更改密钥。
图 5:显示为从Azure购买的Microsoft认知服务的密钥。
否则,如果您不喜欢每月更新安全密钥,可以使用其他方式隐藏密钥。其中包括,例如将密钥存储在安全区域,例如Azure的Key Vault或任何其他任何人都无法访问的地方……但是,如果有人可以访问怎么办?
在许多方面,事情可能会出错,因此我建议每个月更新密钥。请注意,您可以使用密钥1或密钥2,并且可以独立更新两个密钥。
提醒:就在您阅读这篇文章时,我返回并重新生成了密钥……仅用了4秒就重新生成了两种密钥。
https://www.codeproject.com/Articles/5322057/Top-5-advices-for-users-of-Microsoft-Cognitive-Serc