到目前为止,我们已经熟悉了深度学习项目中遵循的基本流程。 在上一章中,我们已经使用 Keras 和 TensorFlow.js 库完成了两个基本的端到端项目。 我们已经熟悉 NumPy,pandas 和 Keras 等 Python 库,并且还了解了如何使用 JavaScript 开发深度学习模型。 我们还使用了 Flask 框架从深度学习模型中创建 API。 在“第 4 章”,“TensorFlow.js 入门”中,我们使用了第三方应用编程接口(API)创建了一个网站应用。
在本章中,我们将详细研究 API 的整个概念。 从更为非正式的 API 定义开始,我们将研究与深度学习相关的所有 API。 我们将首先看一些最广为人知的深度学习 API,然后再看一些鲜为人知的深度学习 API。 我们还将学习如何选择深度学习 API 供应商。
在本章中,我们将讨论以下主题:
- 什么是 API?
- API 与库有何不同?
- 一些广为人知的深度学习 API
- 一些鲜为人知的深度学习 API
- 选择深度学习 API 提供商
让我们首先考虑一个问题场景。
假设您正在使用需要将图像识别模块集成到其中的 Web 应用。 但是您不喜欢计算机视觉和深度学习。 您有一个非常严格的截止日期才能参加该项目。 您无力致力于学习深度学习,然后完成项目的图像识别模块。 您现在应该怎么办? 您的项目会在指定的期限内完成吗?
绝对不会! 但是,借助 API 的强大功能,您将能够轻松地将图像识别模块集成到 Web 应用中。 现在让我们更详细地讨论 API 的概念。
API 是可以集成到应用中以执行某些任务的一组函数(尽管从技术上讲,API 可以仅包含一个函数)。 通常,作为开发人员,我们希望将喜欢的网站中的特定工具集成到自己的应用中。 例如,Twitter 提供了一个 API,用于检索与某个关键字匹配的推文。 我们可以使用此 API 来收集数据,对其进行分析,并最终得出有关数据的有趣见解。
Facebook,Google,Stack Overflow 和 LinkedIn 等公司提供用于某些任务的 API,作为开发人员,值得一试。 API 实际上类似于网站。 当我们单击网站上的某些内容时,我们将被重定向到另一个页面/部分。 在大多数情况下,我们将网页作为输出。 但是,API 通常不会产生美观的网页作为其输出。 应该从代码内部使用 API,并且 API 的输出通常采用某些流行的数据交换格式,例如 JSON 或 XML。 然后,针对使用 API的应用相应地处理输出。 API 使您可以通过提供一套工具或生态系统来完成想要执行的任务,而不必担心细节。
您现在可以测试 API,而无需编写任何代码。 例如,您可以使用诸如 Postman 之类的 API 客户端并测试您真正喜欢的开放 API,并且不需要编写任何代码即可执行此操作。
关于 API 的更神奇之处在于,您可以例如使用 Java 编写代码并使用以 Python 开发的 API。 当您在团队中工作时,人们对他们使用的不同编程语言非常关注时,这特别有用。 您的一个团队成员可能非常喜欢使用 Java,而另一个团队成员可能是 Python 专家。 因此,在这些情况下,API 的整个概念确实派上了用场。
我们将讨论由 Google AI,Facebook AI Research 等提供的一些深度学习 API。 在接下来的章节中,我们将看到如何使用这些 API 来开发智能 Web 应用。
API 除了在需要快速生产或最小工作量的产品演示时为您节省创建和部署自己的深度学习模型的大量工作之外,API 还可以提供一些好处,例如:
-
一个标准的稳定模型:
- 深度学习的 API 通常是由一群开发人员共同创建的,这些开发人员共同使用行业标准技术和研究工具,但可能并非所有开发人员都可以使用。 而且,通过商业 API 部署的模型通常非常稳定地使用,并提供最新的功能,包括可伸缩性,自定义和准确率。 因此,如果您遇到精度问题(这是深度学习模型生产中的常见情况),那么选择 API 是一个不错的选择。
-
高性能模型:
- 商业深度学习 API 通常在非常强大的服务器上运行,并且在很大程度上进行了优化,因此它们可以非常快速地执行任务。 因此,如果您希望加快深度学习生态系统的学习速度,则此类 API 非常方便。
-
开发人员常用的平台:
- 从头开始编写任何东西都很简单,但是当最初编写该文件的人离开时却没有出示适当的文档,而一个新的人不得不从他们停下来的地方开始工作,这将变得非常困难。 商业 API 定义了一套操作标准,并且集成有此类 API 的应用易于维护,因为 API 供应商也始终包含大量文档,这意味着开发人员可以事先了解 API。
-
定期和无缝更新:
- 对于刚起步的公司来说,一旦他们运行了第一个版本,就花大量的开发时间来改善深度学习模型通常是很昂贵的,特别是如果它们的整个商业模型不是特别以人工智能为中心的话。 任何此类用例都将从 API 使用中受益匪浅,因为 API 由推送常规更新和新功能的人员维护。
考虑到所有这些,然后使用 API 提供了最新的技术,高性能和不断发展的模型,这些模型可以一次插入到应用中,然后使用多年,而无需再次考虑 API。
现在,您可能会问 API 和库之间有什么区别。 让我们在下一部分中查找。
如今,术语库和 API 可互换使用。 两者之间有很多相似之处,但是在很多方面都不同。 与 API 一样,库也提供了可以根据需要使用的函数和类的集合。 以下是一些指针,可以帮助您区分库和 API:
-
库通常特定于编程语言。 例如,如果使用的是 PHP 编程环境,则不能使用 SciPy Python 库。 但是,您可以开发一个使用 SciPy 的 API,然后使用您的 PHP 代码使用该 API。
-
开发人员无法直接访问 API。 API 的使用方式与库的使用方式不同。 在开发人员实际使用它们之前,许多 API 会强制执行某种认证。 在使用库时,我们很少看到这种情况。 您可以轻松地覆盖和重载库函数或类,然后按需使用它。
-
库和 API 可以相互结合使用。 许多库在内部使用不同的 API,反之亦然。
这些应该使您对库和 API 之间的基本区别有所了解。 但是,如果您仍然难以划清界限,请不必担心:我们将研究许多示例,并且当您完成这些示例时,您肯定可以区分 API 和库。
现在,我们将介绍一些 API,这些 API 广泛用于开发支持深度学习的应用,其中一些众所周知,而有些则不那么受欢迎。
在本节中,我们将介绍一些使用最广泛的 API,这些 API 已部署用于各种深度学习任务,例如图像识别,图像中的情感检测,情感分类,语音到文本转换等。 为了限制本节中的讨论,我们将深度学习任务分为两大类:
- 计算机视觉和图像处理
- 自然语言处理
然后,我们将列出与每个组相关的一些常见任务,并讨论可用于完成这些任务的 API。
现在,让我们快速列出一些常见的深度学习任务,并将其分配给它们的类别:
-
计算机视觉和图像处理:
- 图像搜索:就像 Google 搜索一样,图像搜索引擎允许我们搜索与特定图像相似的图像。
- 图像检测:这是在检测图像的内容。 这也称为标签检测。
- 对象定位:给定包含一组不同对象的图像,这涉及检测图像中的特定对象。
- 内容审核:给定图像,这涉及检测不适当的内容。
- 图像归因:给定图像,这涉及到图像的不同特征的提取。
-
自然语言处理:
- 词性标记:给定一段文本,这涉及提取文本包含的词性。
- 主题摘要:给定一段文本,这涉及确定文本所涉及的主题。
- 情感分类:给定一些文本,这涉及预测文本所传达的情感。
- 命名实体识别:这涉及自动识别给定句子中存在的不同实体。
- 语音到文本的转换:这涉及到一段语音中包含的文本的提取。
此处列出的所有任务在我们的日常生活中都非常有用,很高兴得知我们可以使用现在将要讨论的 API 制作能够为我们完成这些任务的应用。
还有其他深度学习 API 可以大规模进行临时推理,但是暂时,我们可以忽略它们,而将注意力集中在受深度学习影响最大的两个领域。
下表汇总了一些业内使用最广泛的深度学习 API:
提供者 | API | 分组 |
---|---|---|
谷歌 | 视觉 API | 计算机视觉和图像处理 |
视频智能 API | ||
自然语言 API | 自然语言处理 | |
语音转文字 API | ||
文字转语音 API | ||
翻译 API | ||
Dialogflow API | ||
脸书 | DensePose | 计算机视觉和图像处理 |
Detectron | ||
亚马逊 | 亚马逊 Rekognition | 计算机视觉和图像处理 |
亚马逊 Comprehend | 自然语言处理 | |
亚马逊 Textract | ||
亚马逊 Polly | ||
亚马逊翻译 | ||
亚马逊转写 | ||
微软 | 计算机视觉 | 计算机视觉和图像处理 |
视频索引器 | ||
人脸 | ||
内容主持人 | ||
文字分析 | 自然语言处理 | |
必应拼写检查 | ||
翻译文字 | ||
语言理解 |
上表中显示的 API 是使用经过良好测试和可扩展的深度学习 API 时最受欢迎的 API。 但是,还有一些其他名称尚未像这些名称一样流行。 在下一节中,我们将研究它们。
下表提供了一些鲜为人知的 API 的一些详细信息:
提供者 | API | 组 |
---|---|---|
沃森 | 沃森虚拟识别 | 计算机视觉和图像处理 |
沃森文字转语音 | 自然语言处理 | |
沃森自然语言分类器 | ||
沃森对话 | ||
沃森自然语言理解 | ||
AT&T | AT&T 演讲 | 自然语言处理 |
Wit.ai | 演讲 | 自然语言处理 |
信息 | ||
实体 |
现在,在这片(几乎是全部)API 中,您如何选择用于特定任务的特定提供者? 这可能很棘手,需要进行讨论。 在本节中,我们将讨论可以有效帮助我们做出这些决策的一些策略。
拥有可编译的一整套用于深度学习的 API 供应商,决定所需的 API 可能是一项艰巨的任务。 但是,您可以遵循一些简单的规则来提出最适合您的需求的 API,我们将在这里详细讨论其中的一些:
- 平台:
- 听起来很简单,这可能是您选择 API 供应商时最重要的因素。 例如,在大多数情况下,如果您要开发基于 Google 技术运行的产品,则可能要使用 Google 提供的深度学习 API,因为它们会与您使用的应用开发接口无缝集成。
- 通常,开发环境还提供模板化的解决方案,以使用其设置非常简单的深度学习 API。 有时,提供商可能还会提供额外的激励措施,以使用其 API 开发新产品。
- 效果:
- 通过访问多个提供商的 API 来执行一项任务,您可以比较它们的表现,然后选择。 在这种情况下,比较和判断不同 API 时所使用的度量标准取决于您。
- 费用:
- 不同的提供商使用不同的成本核算方法,这在决定使用哪个提供商方面可以发挥巨大作用。 某个提供商可能会对免费 API 调用进行实验的数量有适当的限制,因此对于您来说可能是一个有利可图的选择。 通常,有经验的开发人员和学生会选择与成本方面最优惠的提供商合作。
除了这三个因素之外,还有其他一些不可否认的因素,例如一家公司要求使用某个 API 或您自己对某个 API 供应商的倾向。 但是,除非大规模使用,否则使用哪个供应商几乎没有多大关系,因为它们都为中小型使用提供相似的表现。
在本章中,我们详细介绍了术语 API。 在“第 3 章”和“创建第一个深度学习 Web 应用”中,我们看到了如何使用 Python 编写 Flask API,我们看到了如何在 Web 应用中使用该 API。 现在,我们知道 API 与语言库的区别以及使用 API的重要性。 我们熟悉一些顶尖组织提供的各种深度学习 API。
在接下来的章节中,我们将了解如何使用这些 API 来构建功能强大且智能的 Web 应用。 在下一章中,我们将从 Google Cloud Platform 提供的深度学习 API 开始。