在现实世界的商业决策中,计算机视觉技术的应用越来越广泛,从检测物体上的缺陷、货架缺货情况,到生产线上的堵塞检测等。本文将讨论如何使用Roboflow工作流通过表达式构建业务逻辑。
什么是Roboflow工作流?
Roboflow工作流是一个基于Web的计算机视觉应用构建器。通过工作流,可以在Web界面中构建复杂的计算机视觉应用,然后使用Roboflow云、边缘设备(如NVIDIA Jetson)或任何云服务提供商(如GCP或AWS)部署工作流。工作流提供了广泛的预构建函数,供项目使用,并且可以在工作流Web编辑器中测试管道,允许在不编写任何代码的情况下迭代开发逻辑。
工作流表达式块是什么?
工作流表达式块使用工作流中的其他块的输出,以及在执行期间指定的任何额外输入,来执行业务逻辑计算。它可以用来确定图像中是否存在对象,配置通过/失败逻辑,或确定棋盘游戏的胜者。
如何使用工作流表达式块
本指南将介绍如何使用工作流表达式块来识别结账柜台是否有顾客。当模型运行时,将计算目标区域内的人数,并根据是否达到指定的阈值返回真/假。
首先,需要在Roboflow中有一个模型。按照学习如何在Roboflow中创建项目和训练模型。一旦有了模型,点击Roboflow仪表板侧边栏中的“工作流”进入Roboflow工作流。点击“创建工作流”按钮创建一个新的工作流,并使用“自定义工作流”选项开始。
系统接受两个输入:一张图片(也可以是视频的一帧)和一个用于确定结账柜台被占用的人员阈值。将使用这些值来运行模型,并判断目标区域内是否有足够的人来计算为被占用。
工作流接受一张包含多个结账柜台的图片(或视频帧)。为了隔离感兴趣的区域,将添加一个“相对静态裁剪”块,并配置X中心、Y中心、宽度和高度值来裁剪到结账柜台。可能需要通过在样本图片上运行工作流来尝试几次,可以通过在屏幕顶部选择“运行预览”来测试工作流。
接下来,希望在兴趣区域上运行一个对象检测模型,并返回找到的对象。需要配置希望在工作流中使用哪个模型。为此,点击“对象检测模型”块并选择一个模型。将使用一个在上训练的模型,并且只包括人类别。
接下来,希望计算检测到的人数。添加属性定义块并选择“序列长度”来计算找到的人数。
接下来,将使用表达式块读取count_people值并检查它是否大于输入的people_threshold。如果检测到的人数大于或等于阈值,系统将返回TRUE。否则,系统将返回FALSE。
在测试工作流时,可视化模型的预测是很有帮助的。这些可视化可以用来检查训练的模型在示例图片上的表现如何。要可视化模型预测,使用边界框可视化块。这个块读取模型的预测并在输入图片上绘制相应的边界框。
工作流返回三个值:对象检测模型的预测;检测到的人数;TRUE或FALSE的判断,表示结账柜台是否被占用;以及显示模型返回的边界框的可视化。让运行系统!
要测试工作流,请点击页面顶部的“运行预览”。要运行预览,首先将图片拖放到图片输入字段中。然后,设置人员阈值。对于这个演示,假设1人意味着柜台被占用。点击“运行预览”运行工作流。工作流将运行并提供两个输出:一个JSON视图,包含配置的工作流返回的所有数据;以及使用包含在工作流中的边界框可视化块绘制的模型预测的可视化。
工作流可以在Roboflow云中部署,也可以在边缘设备上部署,如NVIDIA Jetson或Raspberry Pi。要部署工作流,请点击工作流构建器中的“部署工作流”。然后,可以选择希望如何部署工作流。
可以在Roboflow工作流中使用表达式块对计算机视觉模型的输出执行业务逻辑。在本指南中,构建了一个系统,使用对象检测模型来识别人员,并确定零售店的结账柜台是否被占用。该系统首先检测人员,然后检查在给定时间点区域内是否有超过一定数量的人员。如果超过提供的人员阈值,系统将返回TRUE,表示柜台占用。