计算机视觉在产品数量检测中的应用

在制造和物流领域,确保每个包装中包含正确数量的产品至关重要。例如,如果正在组装用于家庭组装产品的螺丝包,需要确保每个包装中包含正确数量的螺丝。如果一个包装中的螺丝数量不足,那么这个包装将无法满足使用要求,从而增加了退货的风险。

计算机视觉模型能够识别盒子中的所有螺丝,现在系统能够知道螺丝的位置,可以通过软件来计数,并将系统与业务逻辑连接起来。在本指南中,将展示如何使用计算机视觉进行数量检测。将详细说明如何训练一个自定义模型来识别螺丝,部署模型,并在图像中计数螺丝的数量。可以使用本指南中的相同指导来计数包装中的任何产品。

计算机视觉与机器视觉在数量检测方面的对比显示,计算机视觉系统具有优势:可以同时对一个包装进行多次检查,并通过添加更多数据来随时间改进模型。例如,在螺丝场景中,可以同时计数螺丝并确保包装中包含正确的螺丝类型。如果需要四个螺丝和四个螺母,可以可靠地识别并计数它们。还可以寻找不应该在包装中的其他物品(例如,一个钉子)。这种灵活性允许快速适应变化的过程或产品,而无需更改任何硬件。

使用计算机视觉实现数量检测

要构建一个数量检测系统,需要训练一个能够准确识别感兴趣对象的模型。在这个例子中,将训练一个模型来识别螺丝。可以使用以下指导来识别多个不同的感兴趣对象。

步骤 #1:创建项目。创建一个免费的Roboflow账户。然后,在Roboflow仪表板上点击“创建项目”按钮。将被带到一个页面,可以在该页面上设置项目。在该页面上,为项目设置一个名称。选择“对象检测”项目类型。

步骤 #2:上传数据。创建项目后,将被带到一个页面,可以在该页面上上传图像。在该页面上,上传包含感兴趣对象的图像或视频。建议从50-100张图像开始。理想情况下,这些图像和视频应该从模型将要使用的环境下收集。例如,如果模型将部署在装配线上,可能需要收集装配线上的产品图像或视频。

要上传图像或视频,将它们拖入Roboflow网络界面。图像将加载到网页上。使用这个开源螺丝数据集,如果愿意,可以下载图像以供在此指南中使用。一旦数据加载完成,点击“保存并继续”将图像上传到Roboflow。

步骤 #3:标记数据。点击Roboflow侧边栏上的“注释”。然后,从数据集中选择一张图像。Roboflow注释网络界面将出现。从这个界面,可以标记图像中的感兴趣区域。这些标签将用于构建视觉系统。

需要在图像中的所有螺丝周围画框。为此,按下键盘上的“b”键。这将启用“边界框”工具,该工具用于标记对象检测模型的数据。然后,点击想要在屏幕上开始画框的位置。拖动以画框。当用框包围了感兴趣的对象时,停止点击。

步骤 #4:生成数据集。接下来,需要生成一个数据集。数据集是所标记的图像的冻结时间快照。可以将预处理和增强步骤应用于数据集,以提高模型的准确性。对于系统的首个版本,将保留默认的预处理和增强步骤。这样做是为了能够开发出对数据上模型性能的基线理解。要生成数据集,点击侧边栏上的“生成”。然后,滚动到页面底部并点击“创建”。数据集的一个版本将被生成。然后,将被带到一个页面,可以在该页面上训练模型。

步骤 #5:训练模型。点击“使用Roboflow训练”按钮开始训练模型。一个窗口将出现,可以在其中配置训练作业。当被询问时,选择快速训练,并确保从Microsoft COCO检查点进行训练。一旦配置了训练作业,作业将被分配给一个服务器。将收到一个估计,显示认为训练模型需要多长时间。可以实时检查训练作业。将出现图表,显示模型训练时的性能:

步骤 #6:测试模型。有了训练好的模型,应该在Roboflow网络界面中测试模型以确保它按预期执行。点击侧边栏上的“可视化”以测试模型。可以上传自定义图像以用于测试,或从测试集中选择一张图像。

步骤 #7:部署模型。可以使用Roboflow推理在自己硬件上部署模型。推理是一个用于运行计算机视觉模型的高性能系统。要安装推理,运行:pip install inference。将使用监督来处理模型的结果。要安装监督,运行:pip install supervision。安装了所需的依赖项后,创建一个新的Python文件并添加以下代码:

from inference import get_roboflow_model import supervision as sv import cv2 image_file = "image.jpeg" image = cv2.imread(image_file) model = get_roboflow_model(model_id="counting-screws/1") results = model.infer(image) detections = sv.Detections.from_roboflow(results[0].dict(by_alias=True, exclude_none=True)) if len(detections) == 10: print("10 screws counted. Package ready to move on.") else: print(len(detections), "screws counted. Package is not ready.")

在这段代码中,在图像上运行模型。然后使用监督来计算模型返回的螺丝预测数量。如果螺丝的数量不等于10,打印一条消息,指出包装中存在错误的螺丝数量。否则,说包装已准备好进入制造的下一步。

模型成功识别了图像中的九个螺丝。系统说包装已准备好进入制造的下一步。

可以在Roboflow Universe上尝试为这个指南制作的模型。

数量检测系统确保装配线上包装了正确数量的产品。在本指南中,开发了一个使用计算机视觉识别并计数盒子中螺丝数量的系统。在Roboflow中创建了一个项目,标记了感兴趣的对象(螺丝),使用数据训练了一个模型,并在自己硬件上部署了模型。

本指南识别了一种类型的对象,但可以使用计算机视觉识别多个对象。例如,也可以识别并计数螺母和螺栓。为此,需要将螺母和螺栓的图像添加到数据集中,并标记感兴趣的对象。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485