工程的博客

使用数据湖屋实现计算机视觉应用

分享这篇文章

正如博客中所探讨的,计算机视觉应用程序改变零售和制造业务的潜力解决看不见的质量,操作和安全挑战与莱克豪斯启用计算机视觉,这一点怎么说都不为过。也就是说,许多技术挑战阻碍了组织实现这一潜力。在我们关于计算机视觉应用程序开发和实现的多部分技术系列的第一部分介绍中,我们将更深入地探讨这些挑战,并探索用于数据摄取、模型训练和模型部署的基本模式。

图像数据的独特性质意味着我们需要仔细考虑如何管理这些信息资产,而训练有素的模型与一线应用程序的集成意味着我们需要考虑一些非传统的部署路径。对于每一个计算机视觉挑战,都没有一个通用的解决方案,但许多公司已经开发出了许多技术和技术,这些公司率先使用计算机视觉系统来解决现实世界的业务问题。正如本文所探讨的,通过利用这些,我们可以更快地从演示转向操作化。

数据摄取

大多数计算机视觉应用开发的第一步(在设计和规划之后)是图像数据的积累。图像文件由启用摄像头的设备捕获并传输到中央存储库,在那里它们准备在模型训练练习中使用。

值得注意的是,许多流行格式(如PNG和JPEG)都支持嵌入式元数据。基本元数据,如图像高度和宽度,支持将像素值转换为二维表示。还可以嵌入其他元数据,例如Exchange Information File Format (Exif)元数据,以提供有关摄像头、其配置以及潜在位置的其他详细信息(假设设备配备了GPS传感器)。

在构建图像库时,元数据和图像统计数据在数据科学家筛选通常围绕计算机视觉应用程序积累的数千甚至数百万张图像时很有用,它们在Lakehouse存储中被处理。利用常见的开源库,例如枕头,元数据和统计信息都可以提取并持久化到可查询的表中Lakehouse环境更容易访问。构成图像的二进制数据也可以与存储环境中原始文件的路径信息一起持久化到这些表中。

传入图像文件的典型计算机图像数据处理工作流。

模型训练

单个图像文件的大小,加上训练一个健壮模型所需的大量图像文件,意味着我们需要仔细考虑在模型训练期间如何处理它们。由于个人计算机的内存限制,数据科学练习中常用的技术(例如将模型输入收集到pandas数据框架)通常不适用于企业规模。Spark™dataframe将数据卷分布在配置为计算集群的多个计算机节点上,大多数计算机视觉库无法访问,因此需要另一种解决该问题的解决方案。
为了克服第一个模型训练的挑战,Petastorm,一种专门为高级深度学习模型类型的大规模训练而构建的数据缓存技术,可以使用。Petastorm允许从Lakehouse检索大量数据,并将其放置在一个临时的基于存储的缓存中。利用Tensorflow和PyTorch(这两个最受欢迎的深度神经网络开发库,通常用于计算机视觉应用程序)的模型,可以在迭代更大的Petastorm数据集时,从缓存中批量读取小数据子集。

Lakehouse数据持久化到临时Petastorm缓存,通常用于计算机视觉用例。

在数据量可控的情况下,下一个挑战是加速模型训练本身。机器学习模型通过迭代学习。这意味着训练将由对输入数据集的一系列重复传递组成。随着每一次传递,模型学习各种特征的优化权重,从而获得更好的预测精度。

模型的学习算法由一组称为超参数的参数控制。这些超参数的值通常很难仅基于领域知识来设置,因此发现最优超参数配置的典型模式是训练多个模型来确定哪个性能最好。这个过程被称为超参数调优,意味着迭代之上的迭代。

及时完成如此多迭代的技巧是将超参数调优运行分布在集群的计算节点上,以便以并行方式执行。利用Hyperopt,这些运行可以在波中进行,在波之间Hyperopt软件可以评估哪些超参数值会导致哪些结果,然后智能地设置下一波的超参数值。在重复波动之后,软件收敛于超参数值的最优集的速度比执行值的详尽评估要快得多。

利用Hyperopt和Horovod分别为计算机视觉任务分配超参数调优和模型训练

一旦确定了最佳超参数值,Horovod可用于在整个集群中分发最终模型的训练。Horovod使用输入训练数据的非重叠子集在集群的每个计算节点上协调模型的独立训练。从这些并行运行中学习到的权重会随着对完整输入集的每次传递而得到巩固,并且模型会根据它们的集体学习进行重新平衡。最终的结果是一个优化的模型,使用集群的集体计算能力训练。

模型部署

使用计算机视觉模型,目标通常是将模型预测带入人类操作员通常执行视觉检查的空间。虽然在某些情况下,在后台对图像进行集中评分可能是有意义的,但更典型的情况是,本地(边缘)设备将负责捕获图像并调用训练过的模型以实时生成评分输出。根据模型的复杂性、本地设备的容量以及对延迟和/或网络中断的容忍度,边缘部署通常采取两种形式之一。

在微服务部署中,模型以网络可访问服务的形式呈现。该服务可以托管在一个集中的位置,也可以托管在多个位置,这些位置与一些边缘设备更紧密地结合在一起。然后,设备上运行的应用程序被配置为将图像发送到服务以接收所需的分数。这种方法的优点是为应用程序开发人员提供了更大的模型托管灵活性,并可以访问比边缘设备上通常可用的更多的服务资源。它的缺点是需要额外的基础设施,并且存在一些网络延迟和/或影响应用程序中断的风险。

由MLflow促成的边缘部署路径,通常用于计算机视觉任务。

通过边缘部署,先前训练过的模型将直接发送到本地设备。这消除了模型交付后对网络的担忧,但设备上有限的硬件资源可能会产生限制。此外,许多边缘设备使用的处理器与训练模型的系统有很大不同。这可能会带来软件兼容性挑战,在将资源提交到这样的部署之前,可能需要仔细研究这个问题。

在任何一种情况下,我们都可以利用MLflow,一个模型管理存储库,以帮助我们打包和交付模型。

通过数据库将这些信息整合在一起

为了演示如何解决这些不同的挑战,我们开发了一系列笔记本电脑,利用从a中捕获的数据PiCamera装备树莓派设备.由该设备拍摄的图像已传输到云存储环境,以便这些图像摄取、模型训练和部署模式可以使用Databricks ML运行时进行演示,该运行时预先配置了上述所有功能。要了解演示背后的细节,请参阅以下笔记本:

带上笔记本

免费试用Databricks

相关的帖子

看到所有工程的博客的帖子