计算机视觉在尺寸检测中的应用

在生产和分发高价值或大量商品的环境中,自动化尺寸检测变得尤为重要。通过计算机视觉技术,可以实现这一目标。本文将介绍如何构建一个尺寸检测系统,该系统利用两种不同的方法——参照物法和深度测量法——来实现自动化尺寸检测。首先,将在Roboflow上训练一个实例分割模型,该模型将用于两种后处理方法。

创建项目

首先,创建一个Roboflow账户。然后,点击Roboflow仪表板上的“创建项目”按钮。将被重定向到一个页面,在那里可以创建项目。为项目选择一个名称,并选择“实例分割”作为项目类型。选择这种模型类型而不是“对象检测”,是因为想要测量的物体可能不是完美的盒子形状或者可能旋转。一旦填写了必填字段,点击“创建项目”。

上传和标记数据

为了构建尺寸检测系统,首先需要标记物体的图像。实例分割模型将学习物体的轮廓。将从多边形坐标中推断出宽度、长度和高度。收集30-60张想要识别的不同物体的图像。在本例中,收集了以下物体的图像:拉面盒、Hint水瓶和包装盒。接下来,注释图像,以训练模型识别拉面盒和Hint水瓶。可以使用Roboflow Annotate来注释图像。要开始,请在左侧边栏点击“注释”。然后,选择一个图像进行注释。将被带到标记界面,在那里可以标记数据。为了加快标记速度,尝试使用Smart Polygon,它使用智能助手来绘制多边形,通常只需一键操作。

现在数据已经被标记并添加到数据集中,可以生成一个数据集版本。数据集版本是可以在其上训练模型的数据的快照。可以应用预处理和增强步骤,以准备模型进行训练,并分别提高模型性能。要生成数据集,请在侧边栏点击“生成”。将被带到一个页面,在那里可以配置数据集版本。点击页面底部“生成”步骤下的“创建”按钮,以创建数据集版本。有了数据集准备就绪,可以训练一个模型来检测拉面盒和水瓶。一个弹出窗口将出现,可以在其中配置模型训练作业。从这个弹出窗口中,选择“快速”训练。然后,选择从Microsoft COCO Checkpoint训练的选项。一旦配置了训练作业,一个估计将出现,显示训练模型大约需要多长时间。可以从数据集页面实时监控训练作业。一旦训练作业被分配给一台机器,一个图表将出现,显示模型训练时的性能。模型成功地识别并分割了拉面盒,并且已经准备好投入生产,给定的99.5%的平均精度均值(mAP)得分。

部署模型以测量尺寸(方法1)

有了模型准备就绪,可以部署尺寸检测系统。第一种方法涉及使用一个参照物来获得一个真实世界的测量值,然后将其用作英寸到像素的转换计算。在这个例子中,正在分割一把尺子,并且给定像素长度,除以12以获得像素:英寸比率。然后从盒子的四个角的多边形中推断出宽度和高度。从侧面视图采取相同的方法来获得高度。假设有一个来自Roboflow模型的分割掩码,以下是步骤:

corners = [top_left_corner, top_right_corner, bottom_right_corner, bottom_left_corner] # 计算像素宽度 pixel_width = math.sqrt((top_right_corner["x"] - top_left_corner["x"]) ** 2 + (top_right_corner["y"] - top_left_corner["y"]) ** 2) # 计算像素长度 pixel_length = math.sqrt((top_left_corner["x"] - bottom_left_corner["x"]) ** 2 + (top_left_corner["y"] - bottom_left_corner["y"]) ** 2) # 计算像素高度 pixel_height = math.sqrt((bottom_point["y"] - top_point["y"]) ** 2) # 每英寸像素的比例。输入参照物的像素长度,从上面的计算中得出,并除以12英寸 scale_factor = reference_object_length_pixels / 12 length_dimension = pixel_length / scale_factor width_dimension = pixel_width / scale_factor height_dimension = pixel_height / scale_factor

这种方法的两个缺点是感知失真和需要两个摄像头。参照物需要靠近被测量的物体——理想情况下是在物体上,如二维码——否则像素:英寸转换会被误算。需要设置两个摄像头来计算所有三个尺寸。

部署具有深度功能的模型以测量尺寸(方法2)

第二种方法涉及使用Luxonis Oak的立体深度感知功能。通过利用立体摄像头对——左单目摄像头和右单目摄像头——以及VPU进行视差匹配来计算物体的深度。以下是使用Roboflow和Luxonis Oak-D Pro计算宽度、长度和高度的步骤:在摄像头流上运行Roboflow推理以分割物体,利用多边形计算线条和角落,将四个角的x,y坐标传递给深度传感器以获得从摄像头到盒子顶部的深度,选择地面上的点以计算从摄像头到地面的深度,从到盒子顶部的深度中减去到地面的深度以获得盒子的高度,利用盒子的四个角,从深度帧和物体的每个角计算空间x,y,z坐标,使用欧几里得距离以毫米为单位计算每条边的长度(原生并除以25.4以转换为英寸)。

可以使用计算机视觉来估计物体的尺寸。在本指南中,讨论了两种估计物体尺寸的方法:使用知道尺寸的参照物来计算另一个物体的尺寸;使用具有深度功能的摄像头。使用本指南,可以构建所需的逻辑来计算尺寸,以用于质量保证系统、包装排序系统等。

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