玻璃缺陷检测系统构建指南

构建玻璃缺陷检测系统

与传统的机器视觉不同,可以通过对缺陷样本的学习来训练模型,以识别需要检测的确切玻璃缺陷类型,并随着条件变化而不断改进模型。例如,可以检测划痕、瑕疵、缺口等缺陷。无论是太阳能电池板玻璃检查、玻璃瓶生产还是挡风玻璃制造,计算机视觉技术都可以应用于各种类型的玻璃。

在本指南中,将向展示如何构建一个由计算机视觉驱动的系统,以识别玻璃中的缺陷。构建该系统,将执行以下步骤:

  • 收集用于训练模型的图像
  • 对图像进行标注,标记感兴趣的对象
  • 训练模型
  • 在自己的硬件上部署模型

以下是一个将在本指南中构建的视觉系统示例,该系统在装配线上识别出玻璃瓶上的划痕:

# 此处省略了实际代码,仅为示例

可以使用自己的数据构建一个满足确切需求的系统。让开始吧!

要开始,需要创建一个Roboflow项目。此项目将存储模型数据以及模型本身。如果还没有账户,请先创建一个 Roboflow 账户。然后,转到 Roboflow 仪表板并点击“创建项目”按钮。将被带到一个页面,可以在该页面上创建 Roboflow 项目。

在此页面上,设置项目名称并填写必填字段。选择“对象检测”作为任务类型。点击“创建项目”以创建项目。将被带到一个页面,可以在该页面上上传数据。

构建准确视觉系统的两个关键点是:使用代表模型将被部署的环境的数据,以及精确标记感兴趣的对象。建议收集来自装配线或制造工厂的玻璃照片或视频,以用于训练模型。这将帮助为环境实现最佳的模型性能。

如果有视频,可以将它们上传到 Roboflow 并将其分割成图像,这是标记数据和训练模型所需的格式。要上传图像或视频,请将它们拖入 Roboflow 网络界面上的上传数据页面。当这样做时,图像将被处理。然后会出现一个“保存并继续”的按钮。点击后,数据将被上传到 Roboflow。

有了工作区中的数据,可以开始标记感兴趣的对象了。在本指南中,将标记玻璃缺陷,并专注于一种类型的缺陷:划痕。可以构建视觉系统以识别需要的任意多类别的缺陷。对于第一个版本的视觉系统,建议专注于一个或两个缺陷。

需要标注感兴趣的对象(划痕),以教导模型如何识别它们。要开始标注图像,请点击左侧边栏中的“标注”。然后,选择一个图像进行标注。

Roboflow Annotate 网络界面将打开。在这里,可以标注图像。要标注图像进行对象检测,需要使用边界框绘制工具。可以使用键盘上的“b”键或点击右侧边栏中的框来触发此工具。

# 此处省略了实际代码,仅为示例

一旦选择了边界框工具,请点击想要开始绘制框的点。然后,拖动框围绕感兴趣的对象。一旦用框包围了感兴趣的对象,请停止拖动光标。框应尽可能接近玻璃缺陷的边界。然后,为类别选择一个标签。对于本指南,将用标签“划痕”标记划痕。在数据集中的所有图像中标记所有感兴趣的对象。

一旦标记了数据集中的所有图像,就可以准备生成数据集版本了。数据集版本是数据集的冻结时间快照。可以使用数据集版本在 Roboflow 上训练模型。

要生成数据集版本,请单击Roboflow边栏中的“生成”。在此页面上,可以自定义如何生成数据集。建议保留所有预设值以训练模型的第一个版本。

一旦训练了模型的第一个版本,可以尝试添加可能有助于提高模型性能的额外预处理步骤或增强功能。要了解添加预处理和增强步骤的最佳实践,请参阅图像预处理和增强指南。

在页面底部点击“生成”配置数据集版本后。将生成数据集版本。这将需要一些时间。一旦生成,将被带到数据集版本的页面。

有了准备好的数据集版本,可以开始训练一个视觉模型来识别玻璃中的缺陷了。要训练模型,请在数据集页面上点击“使用Roboflow训练”。

在出现的窗口中,选择“快速”训练,并从 Microsoft COCO 检查点开始训练。配置训练作业后,将收到训练模型所需的时间估计。然后,训练作业将被分配给计算机。

可以从模型页面实时观看训练作业的进度。一旦模型被训练并准备好在应用程序中使用,将收到电子邮件。可以从 Roboflow 项目边栏中可访问的“可视化”标签中测试训练的模型:

有了训练好的模型,是时候部署玻璃检测模型了。为此,可以使用 Roboflow Inference,这是一个使用视觉模型的解决方案。可以将 Inference 连接到相机、RTSP 流,或在图像上运行模型。对于本指南,将展示如何使用模型与图像一起使用。有关将模型部署到相机或 RTSP 流的指导,请参阅 InferencePipeline 文档。

要开始,首先安装 Inference 和 Supervision,将使用这些工具来部署和处理视觉系统结果:

pip install inference supervision==0.18.0

然后,创建一个新的 Python 文件并添加以下代码:

from inference import get_roboflow_model import supervision as sv import cv2 image = cv2.imread("image.jpg") model = get_roboflow_model(model_id="glass-defect-detection-fvbcu/2") result = model.infer(image)[0] detections = sv.Detections.from_inference(result) bounding_box_annotator = sv.BoundingBoxAnnotator() label_annotator = sv.LabelAnnotator() annotated_image = bounding_box_annotator.annotate( scene=image, detections=detections) annotated_image = label_annotator.annotate( scene=annotated_image, detections=detections) sv.plot_image(annotated_image)

在这段代码中,下载了模型,在名为“image.jpg”的图像上运行了模型,并可视化了结果。可以使用此代码来验证模型是否正常工作并查看结果。

替换:

  • 模型 ID 为 Roboflow 模型 ID。了解如何检索模型 ID。
  • “Image.jpg”为想要运行推理的图像的名称。

让在这张有缺陷的玻璃瓶图像上运行代码:

# 此处省略了实际代码,仅为示例

以下是结果:系统成功识别了玻璃上的缺陷。如果训练了模型以识别多个缺陷,上述代码将允许可视化模型被训练识别的任何缺陷实例。

可以使用计算机视觉来识别玻璃中的缺陷。例如,可以识别太阳能电池板玻璃或用于瓶子制造的玻璃中的划痕;可以识别裂缝、缺口和任何其他可见的缺陷。

在本指南中,介绍了如何使用计算机视觉进行玻璃检查。开发了一个视觉系统来识别特定类型的玻璃缺陷。为此,收集了图像,对这些图像进行了标记,使用标记的图像训练了模型,并使用 Roboflow Inference 部署了模型。

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