2020年3月3日,星期二

Office 365应用中的AI–在Power Apps AI Builder,Azure认知服务和Power Automate之间进行选择:第2部分

在上一篇文章中,我们讨论了在Office 365中使用AI的一些示例,并详细介绍了构建 事件报告 该应用程序将常见的Office 365构建基块与AI相结合。尽管Power Apps和SharePoint是我们解决方案的基础,但我们使用AI通过了解图像中发生的事情来对事件进行分类。这是严重的紧急情况吗?是否有人员伤亡或紧急服务?我们的图像处理AI可以解释图片,并为文件在Office 365中的存储位置添加标签和描述-这可以促使采取一些自动化措施,例如提醒特定团队或让人员查看事件。我们还查看了将一系列图像馈送到AI的结果,以分析不同场景的结果。

总体而言,本文是系列文章的一部分:

  1. Office 365应用中的AI- a scenario, some AI examples and a sample Power App 
  2. Office 365应用中的AI-在Power Apps AI Builder,Azure认知服务和Power Automate之间进行选择(本文)
  3. Office 365应用中的AI- pricing and conclusions
在本文中,我们将重点介绍 怎么样 -特别是,比较了我们可以在Office 365中使用的三种方法来构建事件报告应用程序并利用AI。哪个更容易?需要什么技能?我们期望每种方法花费多长时间?

在Power Apps AI Builder,Azure认知服务和Power Automate之间进行选择

如上一篇文章所述,我们可以通过多种方式构建此应用程序:
  • 使用Power Apps AI Builder
  • 一个Power App(通过自定义连接器)直接与Azure认知服务对话
  • 使用Power Automate Flow消耗AI服务的Power App
对于每种方法,我们’re looking 在 应用的构建方式,定价以及任何限制和注意事项 该选项附带。

选项1-Power Apps AI Builder

在撰写本文时,AI Builder仍处于预览阶段(2020年2月- 发布将于2020年4月),并提供四种型号:

如您所料,其思想是使AI相对易于使用,并专注于常见场景。无需编码,拥有Power Apps经验的任何人现在都可以利用以前高度复杂的应用程序功能。
应用程序的构建方式
在我们的场景中’s the “Object Detection”相关的模型。这样可以检测提供给它的图像中的特定对象,并计算在图像中找到识别出的对象的次数。第一步是定义一个模型并提供一些样本图像:



您需要CDS中预定义的实体才能使用AI Builder-我在这里跳过了几个屏幕,但是最终您选择了一个代表要检测的对象的CDS实体:


就我而言,我正在构建一个与运输有关的应用程序,而我的实体是“公共汽车”。下一步是通过提供一些包含实体的图像来开始训练AI模型:



然后,我们使用实体在每个图像中标记对象:



完成所有这些操作后,您可以在Power App中使用“对象检测器”控件并将其配置为使用以下模型:



由于有关如何使用AI Builder构建应用程序的整个主题很有趣,因此我很可能在以后的文章中详细介绍此过程-但希望您对过程的外观有所了解。

在我们的场景中,我们说过要在SharePoint中对图像进行标记-这是我们在AI Builder中考虑的地方:

Power Apps AI Builder-非常适合某些形式的图像检测

通过对象检测器功能,我们可以检测某个对象是否在图像中以及检测多少次。但是,我们的场景要求能够识别图像中的*情况*,而不仅仅是识别是否存在预定义的对象!这就是AI Builder提供的功能-确定单个对象是否存在的百分比确定性。这与其他形式的AI图像处理相比,灵活性要差得多,我们需要以某种方式对其进行补充,以实现应用程序的目标。毕竟,我们无法为宇宙中的每个已知对象提供AI模型。

选项2-Azure认知服务

将AI引入应用程序的另一种方法是直接插入Azure认知服务。如您所料,这是一种以开发人员为中心的方法,它是更底层的-我们不在Power Platform或其他低代码框架中。 最大的优点是可以使用更多功能。 与此处讨论的其他方法相比,我们不限于Microsoft已集成到Power Platform中的任何方法。认知服务的高级领域目前扩展到:
  • 决断 -检测异常,进行内容审核等。
  • 语言 -LUIS,文本分析(例如情绪分析,提取关键短语和实体),60多种语言之间的翻译等服务
  • 言语 -文本和语音(双向)之间的转换,音频的实时语音翻译,说话者识别等。
  • 视力 -计算机视觉(例如,标记和描述图像,识别物体,名人,地标,品牌,执行OCR,生成缩略图等),表格数据提取,墨水/手写处理,视频索引,面部识别等
    • 注意-这是与本文中的方案相关的服务,尤其是Computer 视力 API标记和描述图像的能力) 
  • 网络搜索 -Bing自动建议,Bin实体/图片/新闻/视觉/视频搜索等 
就我们的场景而言,让我们看下图:


应用程序的构建方式
如果我可以编写一些代码来使用Computer 视力 API并将上面的图像发送给它,我将得到一个类似于以下的响应(注意诸如“ person”,“ indoor”,“ ceiling”,“ event”, “人群”等:

我用来执行此操作的代码是:

代码示例:

Azure认知服务与其他选项之间的关系

我们在谈论认知服务时,当然应该认识到此电子邮件中列出的所有选项都在下面使用这些服务。 Power Apps AI Builder,此处讨论的Power Automate活动以及Microsoft云技术中的许多其他功能 都在下面使用Azure认知服务。当您考虑技术选择时,值得考虑的是,您使用Azure的方法越直接,成本可能就越便宜。

选项3-使用电源自动化(流程)消耗AI

这里提供的最后一个选项是创建一个流程,该流程将完成标记和描述事件报告图像的工作。这是迄今为止我认为最简单的方法,也许是将AI集成到您的应用程序中的一种被忽略的方法-我强烈建议您使用Power Automate。注意,这些是 保费 流程操作-我们将在下一篇文章中讨论许可和定价的更多内容,但现在了解,以这种方式提供AI功能会导致额外的成本(与其他两种方法一样)。

在我们用于事件报告的Power App场景中,最简单的实现可能是:
  1. Power App将图像上传到SharePoint文档库
  2. 使用“ SharePoint-在文件夹中创建文件时”触发器运行流程
  3. Flow调用Azure认知服务(为此使用本机Flow操作)
  4. 获取标签和图像描述后,它们将作为元数据写回到SharePoint中的文件中
美的真正体现在步骤3中。由于Microsoft提供了许多像Flow动作那样的AI服务的钩子,因此以这种方式将AI注入您的应用程序非常简单-不需要代码,并且就像在Flow中排列一些动作一样简单。当然需要Power Automate的一些技能和经验,但是该门槛肯定比其他选项低得多。 

这是我的端到端流的样子:

更具体地说,触发器位于SharePoint网站中正在创建的新文件上,并列出了我的Power App将图像推送到的位置:

对于已添加的每个文件,我得到该文件,然后调用:
  • 描述图像内容 
  • 标签图像
下面的“流程”部分显示了如何获取添加到SharePoint的文件的详细信息,以便能够将内容传递给Azure操作进行处理:
当然,在Power App方面,我需要一些东西来使用设备上的相机拍摄照片并将文件上传到SharePoint-但这并不太复杂,这只是将Power Apps相机控件添加到我的应用程序中的问题。来帮助部分。当然,Power Apps的一项主要功能是能够插入设备功能,例如相机,GPS和显示功能,因此简单就不足为奇了。如果您还记得,我在上一篇文章中简要展示了我的示例应用程序:



但是,确实需要做一些工作才能将图像捕获到SharePoint中-在我的情况下,我使用Power Apps和Power Automate之间的集成来做到这一点。我创建一个使用Power Apps触发器并最终使用SharePoint“创建文件”操作的流。但是重要的部分是中间的Compose操作,该操作使用“ DataUriToBinary”功能将图像数据从Power Apps捕获方式转换为SharePoint所需方式:

然后,我将流程链接到Power App:

然后,我可以在公式中使用它,如下所示:

UpdateContext( { PictureFilename:“事件_”& Text( 现在(), “ [[$ -en-US] yyyy-mm-dd-hh-mm-ss“ ) & ".jpg" } );

IncidentPhotoProcessing.Run(PictureFilename,First(Photos).Url);

..然后,我们就可以采用一种相当快捷简便的方法将事件照片发送到SharePoint中,以便AI可以对其进行处理。

概要


我们已经研究了本文中构建使用AI的Office 365应用程序的三种可能方法-Power Apps AI Builder,使用代码中的Azure认知服务以及使用Power Automate中与AI相关的操作。调查结果可以概括为:
  • 每种方法需要不同的技能:
    • Power Automate是最简单的使用方法,因为它提供了可以轻松插入AI的动作-只需构建一个可以接收图像的Flow,然后使用上面显示的Computer 视力动作即可
    • 直接使用Azure Cognitive Services API需要具备编码技能(使用提供的.NET和JavaScript等SDK或向Azure端点发出自己的REST请求),但是由于所有Microsoft AI功能都已公开,因此这是一种功能强大的方法
  • 各个选项的功能不同:-
    • Power Apps AI Builder对我们的图像处理方案有一些限制。 “物体检测”模型非常适合识别图像中是否存在已知物体,但是无法识别图像中的任何任意物体或概念
    •  Azure认知服务为基础 所有 Office 365中的AI功能,并提供Power Apps或Power Automate中未提供的许多服务。结果,它提供了最大的灵活性和功能,但付出了更多的精力和各种实施技巧
  • 要求和上下文很重要:
    • 在我们的方案中,我们谈论的是一个Power App,它可以捕获事件数据并将其存储在SharePoint中-换句话说,我们已经指定前端应为Power Apps。在这种情况下,直接集成Azure认知服务将比其他两种方法更具挑战性(但从编码的应用程序来说相对简单)。在Power Apps中,我们需要一个自定义的连接器来引入代码(可能以Azure函数的形式),这肯定比仅保留在Power Platform中更为复杂。 
    • 在设计过程中,其他要求可能导致一种技术方法比另一种更为合适。再举一个例子,如果该应用需要一个难以在Power Apps中构建的丰富用户界面,则前端很可能是自定义代码。在这一点上,有一种说法是,在应用程序的内容服务后端使用代码也很有意义
像往常一样,拥有一支团队或合作伙伴能够很好地了解这一领域并具有跨所有选择的能力,可以带来最佳结果。在这种情况下,所有选项都可以放在桌子上,而不是因为技巧而局限于一个或两个。架构决策可以基于优点,考虑应用程序的使用案例和场景,所需的AI功能,用户体验,使用的设备范围,实施速度和成本。

当然,成本是我们尚未涵盖的要素!让我们在下一篇文章中进行讨论: