陶瓷材料因其美观和耐用性而广泛应用于建筑和装饰行业。然而,陶瓷制品在生产过程中可能会出现各种缺陷,如裂缝、孔洞和边缘破损等。这些缺陷不仅影响产品的外观,还可能降低其结构强度。因此,对陶瓷制品进行严格的质量控制至关重要。本文将介绍如何利用计算机视觉技术来检测瓷砖的缺陷,确保材料在发货和分销前的完整性。
传统上,可以使用专为特定检查任务设计的相机,如Cognex和Keyence生产的相机,来识别瓷砖的缺陷。这些相机可以专门用于单一检查,例如确保瓷砖边缘符合预期的预定义模式。然而,计算机视觉技术允许定制更高级的逻辑,同时执行多项检查。例如,可以同时检查裂缝和边缘破损。此外,可以使用任何可以传输到计算机的摄像头来实现这一点。
通过计算机视觉系统,可以使用自己的数据来训练,从而构建一个能够识别产品特有的缺陷的系统。如果系统在识别特定陶瓷缺陷时遇到困难,可以根据需要调整系统以提高性能。
让尝试使用计算机视觉来识别瓷砖的缺陷。在本指南中,将使用Roboflow Universe上的“ceramic-tile-defects”数据集,这是世界上最大的开放计算机视觉模型和数据集社区。可以使用这个模型而无需额外的训练。稍后,本指南将提供有关如何构建自己的模型的信息。
首先,创建一个免费的Roboflow账户。这将允许从Roboflow Universe运行计算机视觉模型。
在Roboflow Universe上打开“Ceramic Tile Defect Detection”模型。然后,点击侧边栏中的“Visualize”。这将打开一个交互式窗口,可以在其中测试模型对自己的图像或视频的效果。还可以从左侧边栏的“Test Set”中选择一张图像。
可以在云端或自己的硬件上运行此模型。对于制造用例,建议在硬件上运行模型以获得最佳性能。要在图像上运行模型,首先打开一个编程终端。运行以下命令:
pip install inference supervision opencv-python
然后,创建一个新的Python文件并添加以下代码:
from inference import get_roboflow_model
import supervision as sv
import cv2
image = cv2.imread("image.jpg")
model = get_roboflow_model(model_id="ceramic-tile-defects/1")
results = model.infer(image)
labels = [i.class_name for i in results[0].predictions]
detections = sv.Detections.from_inference(results[0].dict(by_alias=True, exclude_none=True))
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, labels=labels)
sv.plot_image(annotated_image)
在上面的代码中,将“image.jpg”替换为要运行模型的文件名。然后,将Roboflow API密钥导出到名为ROBOFLOW_API_KEY的环境变量中:
export ROBOFLOW_API_KEY="KEY"
了解如何检索Roboflow API密钥。然后,运行脚本。将会出现一个窗口,显示模型的结果:模型成功地识别了瓷砖上的缺陷。
如果上述使用的瓷砖模型适用于用例,可以将其应用于应用程序。话虽如此,建议在制造设施的数据上训练一个微调模型。微调模型是一个从希望识别的缺陷的注释示例中学习的系统。
使用微调模型将使能够实现识别所处理的陶瓷材料类型中存在的缺陷的最佳可能性能。可以使用集成在Roboflow中的主动学习来实时收集数据,因为模型正在部署。然后,可以使用这些数据来训练模型的新版本。这种方法构建模型使能够收集有助于提高模型性能的代表性数据。还可以防止模型漂移,即由于模型部署环境的变化,模型的性能随时间降低。
要开始构建模型,请参考Roboflow入门指南。可以在一天之内训练并部署自己的硬件上的计算机视觉模型的第一个版本。一旦有了模型,就可以开始将业务逻辑集成到模型中。例如,如果一块瓷砖包含多个缺陷,可以构建一个自动拒绝系统。创建一个内部数据库,记录在生产过程中发现缺陷的阶段。分析随时间变化的数据,以识别缺陷趋势(例如,瓷砖经过特定生产阶段后是否更常见缺陷)。确定缺陷最常见的地方(例如,瓷砖的边缘或中间)。等等。