作者 Andreas Karagounis Selimcan Sakar Shreyas Subramanian 和 Yogesh Chaturvedi发布日期 2023年10月19日相关链接 Amazon Rekognition、Amazon SageMaker
在当今世界,高分辨率影像的应用很广泛,从卫星图像到无人机,再到数码单反相机。通过这些图像,我们可以捕捉到自然灾害造成的损害、制造设备中的异常,或在电路板PCB和半导体等上的微小缺陷。利用高分辨率影像构建异常检测模型具有一定挑战性,因为现代计算机视觉模型通常会将图像调整为较低分辨率,以便于内存中的训练和推理使用。图像分辨率的降低往往导致有关缺陷的视觉信息受到损害或完全丢失。
为了解决这些挑战,我们提出了一种两阶段模型的方法。第一阶段的模型用于检测感兴趣的区域,而第二阶段的模型则在裁剪的感兴趣区域上检测缺陷,以保持足够的分辨率以检测小缺陷。
在本文中,我们将探讨如何构建有效的两阶段缺陷检测系统,并与单阶段模型对此特定用例的效果进行比较。需要注意的是,尽管一些单阶段模型在较低或调整后的图像分辨率下依然有效,但有些模型能够在较小的批次中处理大图像。
我们的用例使用了一个包含PCB图像的数据集,该数据集包含合成生成的缺失孔针,如下例所示。
我们使用此数据集来演示单阶段方法在缺少孔针缺陷检测中的低效。我们更倾向于采用两步模型,首先使用Rekognition自定义标签进行目标检测以识别针,然后使用第二阶段模型对裁剪后的针图像进行分类,以区分缺失孔针和正常针。
Rekognition自定义标签模型的训练过程包括几个步骤,如下图所示。
首先,我们使用Amazon Simple Storage ServiceAmazon S3存储图像数据。数据被导入到Amazon SageMaker Jupyter笔记本中,通常数据科学家会检查图像并进行预处理,去除模糊或光照不佳的低质量图像,并调整或裁剪图像。然后,将数据分割为训练集和测试集,并运行Amazon SageMaker Ground Truth标记作业,以标记图像集并输出训练和测试清单文件。清单文件将用于Rekognition自定义标签的训练。
我们在识别PCB缺失孔时的首个方法是标记缺失孔并训练一个目标检测模型。下图是来自数据集的图像示例。
我们使用95张图像作为训练数据和20张图像作为测试数据进行模型训练。以下表格总结了我们的结果。
评估结果F1分数平均精确度总体召回率046807500340训练时间训练数据集测试数据集训练时长 1791小时1个标签,95张图像1个标签,20张图像每个标签的性能标签名称F1分数测试图像missinghole046820模型的高精确度但低召回率表明,当我们定位到缺失孔区域时,通常是正确的,但仍然漏掉了许多PCB上的缺失孔。为了构建有效的缺陷检测系统,我们需要提升召回率。模型表现不佳可能由于在高分辨率PCB图像上缺陷较小,模型没有健康针的参考。
接着,我们探索将图像分为四个或六个裁剪区域,给健康孔和缺失孔都标记。以下是裁剪后的图像示例。
我们使用524张图像进行训练,106张图像进行测试。我们保持相同的PCB用于训练和测试,结果如下表所示。
评估结果F1分数平均精确度总体召回率096709890945训练时间训练数据集测试数据集训练时长 2118小时2个标签,524张图像2个标签,106张图像每个标签的性能标签名称F1分数测试图像missinghole094942pin0984106这时,精确度和召回率都有显著提升。使用放大裁剪图像训练模型,并提供健康孔的参考大大提高了效果。然而,召回率仍为92,意味着我们仍可能漏掉8的缺失孔,导致缺陷未被察觉。
接下来,我们探索两阶段模型方法,以进一步提高模型性能。
对于两阶段模型,我们训练两个模型:一个用于检测针,另一个用于检测裁剪后图像中的针是否缺失。以下是针检测数据集中的图像。
数据与我们之前实验相似,将PCB裁剪成四个或六个图像。这一次,我们标记所有针,不区分是否有缺失孔。我们用522张图像训练模型,并用108张图像测试,保持与之前实验相同的训练/测试划分。结果如下表所示。
评估结果F1分数平均精确度总体召回率100009991000训练时间训练数据集测试数据集训练时长 1581小时1个标签,522张图像1个标签,108张图像每个标签的性能标签名称F1分数测试图像pin1000108在这套合成数据集上,模型完美检测了所有的针。
接下来,我们构建第二阶段模型以区分缺失孔。我们使用缺失孔的裁剪图像训练该阶段模型,如下例所示。该模型与之前的模型分开,因为它是一个分类模型,专注于确定针是否缺失孔。
我们在16624张图像上训练该第二阶段模型,并在3266张图像上测试,保持与之前实验相同的训练/测试划分。以下表格总结了我们的结果。
评估结果F1分数平均精确度总体召回率100010001000训练时间训练数据集测试数据集训练时长 6660小时2个标签,16624张图像2个标签,3266张图像每个标签的性能标签名称F1分数测试图像anomaly100088normal10003178在这套合成数据集上,我们再次获得了完美的精确度和召回率。将之前的针检测模型与第二阶段缺失孔分类模型结合,我们可以构建出超越任何单阶段模型的模型。
以下表格总结了我们进行的实验结果。
加速器免费版永久版下载实验类型描述F1分数精确度召回率1单阶段模型在完整图像上检测缺失孔的目标检测模型04680750342单阶段模型在裁剪图像上检测健康针和缺失孔的目标检测模型0967098909453两阶段模型第一阶段 所有针的目标检测100009991000第二阶段 健康针或缺失孔图像分类100010001000端到端平均1000099951000您可以使用以下架构部署我们在本文中描述的单阶段和两阶段模型。主要组件包括:
Amazon API GatewayAWS Lambda一个Amazon Rekognition自定义端点对于单阶段模型,您可以将输入图像发送至API Gateway端点,接着通过Lambda进行任何基本的图像预处理,然后路由到Rekognition自定义标签训练模型的端点。在我们的实验中,我们探索了只能检测缺失孔、以及缺失孔和健康针的单阶段模型。

对于两阶段模型,您可以将图像同样发送至API Gateway端点,并通过Lambda进行处理。Lambda作为协调者,首先调用使用Rekognition自定义标签训练的目标检测模型,生成感兴趣区域。然后在Lambda函数中裁剪原始图像,并将裁剪后的图像发送至另一个Rekognition自定义标签分类模型,以检测每个裁剪图像中的缺陷。
在本文中,我们使用Rekognition自定义标签训练了一阶段和两阶段模型,以检测PCB中的缺失孔。我们报告了各种模型的结果;在我们的案例中,两阶段模型优于其他变种。我们鼓励有来自其他领域的高分辨率图像的客户测试一阶段和两阶段模型的性能。此外,以下是一些扩展解决方案的考虑方向:
对实际数据集进行滑动窗口裁剪在同一管道中重用目标检测模型使用边界框预测进行预标记工作流Andreas Karagounis 是Accenture的数据科学经理,拥有布朗大学的计算机科学硕士学位。他在计算机视觉领域有丰富的经验,致力于通过数据科学和机器学习帮助客户解决业务难题。
Yogesh Chaturvedi 是AWS的首席解决方案架构师,专注于计算机视觉。他帮助客户利用云技术应对业务挑战。在工作之余,他喜欢远足、旅行和观看体育赛事。
Shreyas Subramanian 是首席数据科学家,帮助客户利用机器学习解决业务挑战,特别是在AWS平台上的应用。Shreyas在大规模优化和机器学习方面拥有丰富背景,尤其是在加速优化任务中的机器学习和强化学习应用。
Selimcan “Can” Sakar 是AWS Accenture商业集团的云优先开发者和解决方案架构师,专注于生成式人工智能、机器学习和区块链等新兴技术。闲暇时,他喜欢骑自行车或演奏单簧管。