Py学习  »  机器学习算法

如何在检测系统中有效的结合传统算法和深度学习?

新机器视觉 • 2 年前 • 169 次点击  

点击下方卡片,关注“新机器视觉”公众号

视觉/图像重磅干货,第一时间送达

几十年来,机器视觉技术一直在工业环境中执行自动化检测任务,包括缺陷检测、缺陷分析、装配验证、分类和计数。最近的计算机视觉软件进步和处理技术进一步增强了这些成像系统在新的和不断扩大的用途中的能力。成像系统本身仍然是一个至关重要的视觉组件,但它的作用和执行可能会被低估或误解。


图 1:左边的图像显示了一个完美的齿轮,右边的图像清楚地显示了一个缺陷。
如果没有精心设计和正确安装的成像系统,软件将难以可靠地检测缺陷。例如,尽管图 1(左)中的成像设置显示了一个吸引人的齿轮图像,但只有右侧的图像清楚地显示了凹痕。当遵循最佳实践时,机器视觉和基于深度学习的成像系统能够进行有效的视觉检查,并将提高效率、增加吞吐量并增加收入。本文深入探讨了迭代设计的最佳实践,并提供了成功设计每种类型系统的路线图。
一、您的成像系统是否足够好?
照明、光学元件和相机组成一个成像系统,必须仔细指定和实施这些组件,以确保获得高质量的零件图像。在这种情况下,“高质量”是指图像与具有正常或预期外观的图像相比,具有足够的对比度以突出显示不可接受的特征(例如凹痕)。图像还必须具有足够的分辨率以显示特征之间的差异。
如果检查系统生成的图像的人工检查员不能自信地识别缺陷,则软件也不太可能能够识别。相反,在人工检查员可以识别图像中的缺陷的情况下,无法保证成像技术将在操作期间对类似的目标缺陷进行可靠且可重复的检测。表明成像系统(而非软件)需要工作的情况包括:
查看物理部件的检查员可以可靠地判断某物是否有缺陷,但仅查看捕获的图像时是无法确定的。
两个查看物理部件的检查员通常会在他们的评估中达成一致,但查看物理部件的检查员通常不同意只查看图像的不同检查员。
一个常见的误解是,如果人类检查员可以用肉眼看到一个特征,则可以设计成像系统来生成成功捕获相同特征的图像。但是,人类检查员可以从多个方向和不同的照明条件下查看零件以进行质量判断,而静态成像系统不一定能捕捉到类似的大范围方向和照明变化。因此,它可能无法突出显示持有相同对象的人类检查员会突出显示的特征。而且,在检测透明部件中的划痕等情况下,成像系统面临的挑战可能会变得更加复杂。
几千年来,人类视觉系统在处理图像数据方面已经变得非常高效和准确。构建一个能够在处理图像方面击败人的软件系统是一项极其艰巨的任务,就像构建一个可以检测检查员无法检测到的缺陷的软件系统一样。即使是最先进的视觉系统也不是魔法。如果给出的是模糊的图像,则没有任何视觉系统能够可靠地做出缺陷判断。
二、传统成像系统设计
系统集成商和原始设备制造商在设计有效的成像系统时必须考虑几个因素。这些因素包括:
对比度:创新性的使用专门为应用程序选择的专用照明和光学器件以及产生需要对比度是机器视觉中的一个重要元素。
空间分辨率:成像系统中的空间分辨率是指跨越特征(例如缺陷)的像素数。如果像素太少,就不可能可靠地检测相对于零件表面的特征。假设图像聚焦良好,我们建议系统预期检测到的最小缺陷的宽度至少为 5 像素。
图像光照一致性:在自动化过程中,许多因素会导致图像发生变化,包括零件位置变化和零件本身的变化。在某些情况下,这些变化可能会导致照明源的眩光或失落,从而掩盖了特征。在其他情况下,零件变化可能会导致反射,这些反射可能会被误认为是缺陷或缺陷。例如,如果机器视觉系统检查透明汽车前灯是否存在缺陷,则不同的照明条件会产生不同程度的眩光。系统越能从相同的角度、相同的照明和相同的背景捕获图像,就越容易构建软件来检测缺陷。
曝光:曝光过度或曝光不足的图像会丢失很多细节。适当的曝光水平应允许系统捕获清晰的缺陷图像。
三、设计成像系统的迭代过程
为机器视觉系统指定成像架构只是整个集成过程中的一个关键步骤。成功的自动化视觉系统集成需要在组件设计和规范之前进行全面而有效的分析和规划,然后是高效的安装、配置和系统启动。

图 2:与中间的图像相比,左侧的图像说明了一个具有挑战性的检测问题,而右侧的图像则更清楚地显示了缺陷。
在成像系统设计期间也必须考虑软件。在某些情况下,用于传统基于规则的机器视觉算法的图像可能与适用于使用深度学习算法的系统的图像不同。图 2 (左)显示了比图 2 (中)中更好的照明和照明图像更具挑战性的检测问题。图 2 (右)中较暗的背景更能说明缺陷。在这种情况下,更好的图像设计将使任一检测系统的实施更加可靠。
设计成像系统是一个高度迭代的过程;最好的机器视觉解决方案会随着时间的推移不断发展并变得更加可靠和强大。围绕“完美”的照明和相机设计一个系统,然后提前构建它可能是不可能的。但是通过对应用程序需求的彻底分析——以及一些成像组件和技术的知识——开发人员可以产生一个好的初始设计。
在开发软件系统时,集成商或 OEM 应该收集样本图像——即使在最初几天使用智能手机摄像头——以获得初始数据以验证软件的可行性。无论这种概念验证产生正面还是负面的结果,请记住,必须设计一个单独的、可用于生产的成像系统。智能手机相机的功能,例如快速移动到多个角度,在生产系统中可能不可行。使用静态成像设置处理具有代表性缺陷的样品部件可能可行,但仍必须考虑最终成像系统配置。
具有“完美”图像的测试软件可能无法真正代表生产环境中的实际能力。在设计可用于生产的成像系统时,周到的设计将产生更长期的成功。在一个典型的过程中,人们应该:
1.     考虑到零件的自动化和处理限制,为要成像的特征/对象/缺陷类型制定规范。考虑因素可能涉及快速移动的部件、根据查看方向改变外观的部件以及显示眩光的部件。
2.   收集有缺陷和可接受的零件样品。
3.   设计一个初始成像系统,以满足被检测零件的需求以及生产环境的物理约束和规范。
4.   通过系统运行零件样本并检查所有缺陷是否以适合目标软件解决方案的方式清晰成像。
5.    迭代第 3 步和第 4 步,直到性能令人满意。
在开发基于深度学习的成像系统或在现有机器视觉系统中实施深度学习功能时,必须采取类似的步骤,但一些关键考虑因素除外。下一部分提供了在成像系统中开始深度学习的计划。
四、深度学习开发
在多种情况下,基于离散分析的机器视觉算法可能不够用。其中包括半导体和电子产品检验、钢材检验、焊接检验以及任何其他难以发现缺陷或“好”零件或物品外观不同的检验任务。除了一些关键考虑因素外,开发深度学习软件解决方案可能类似于构建传统的基于规则的系统。这些包括:
部署干净的数据: 俗话说“垃圾进,垃圾出”。数据代表了滋养人工智能 (AI) 系统的食物,因此必须使用高质量的数据来训练深度学习模型。在使用不准确或不完整的信息时,即使是构思最完善的模型也会产生低于标准的结果。优质的深度学习软件解决方案应持续收集数据,同时允许使用帮助开发人员访问和控制 AI 模型演化的工具系统地开发、部署、跟踪、维护和监控数据和每个软件组件。数据应包括有关产品、缺陷、标签或标签、数据一致性和相关模型的信息。
定义缺陷:在许多工业环境中,依赖人工检查员的公司通常会保留一份已定义零件缺陷的书面日志。在训练深度学习系统时,还必须预先定义这些缺陷,以便软件能够识别出有缺陷的部件。
标记:希望部署深度学习的公司必须准确标记和标记数据。如果执行不一致,此步骤可能会导致 AI 模型不准确。通过对代表性数据集的清晰缺陷定义和清晰、明确的标签,公司可以继续使用少量数据进行可视化项目。内部专家必须协作分配、管理、执行和审查任务,以确保快速准确地标记以生成更准确的模型。
迭代改进:在部署到生产线之前,最好的 AI 模型应该与专家人工检查员进行评估,以证明其价值,尤其是当该生产线用作全球部署的测试时。深度学习软件应该具有用于评估模型性能、识别可能导致模型准确性损失的数据以及评估新数据集以改进和扩展现有模型以达到成功指标的工具。该软件还应具有防止过度拟合和评估训练模型性能的工具。
五、常见的陷阱和挑战
成像带来了许多挑战,因此系统集成商和 OEM 应该考虑一些最基本和最基本的陷阱,并在系统设计中预先解决这些问题。这些包括:
环境光:来自为成像系统设计的专用照明组件以外的光源的照明被视为环境光,可能会导致系统出现不一致和故障。在可能的情况下,必须通过屏蔽或光学过滤来控制阳光甚至头顶照明。在一个示例中,靠近检查系统的制造人员制服颜色的变化会引起额外的反射光,从而影响检查结果。在大多数情况下,在成像系统设计中减轻环境光的影响是相对简单的。
机械稳定性:工厂振动会使成像系统中的光学元件松动,相机位置、照明组件甚至镜头设置的变化都会导致成像不可靠。
不同的外观:被检查部件的材料、设计和整体外观可能会发生变化,而视觉系统所有者却没有意识到这些变化。例如,制造工程团队决定更换螺钉上的金属合金,因为它更便宜。在功能上,该部件的工作原理相同,但外观可能会有所不同。这种外部影响可能会导致系统性能下降,有时会悄无声息地下降。检查这种漂移的软件可以通知运营团队何时及时进行视觉系统维护。
六、机器视觉和深度学习的发展
视觉检测系统,无论是传统的还是基于深度学习的,都可以帮助各类行业和公司满足客户需求,同时确保产品质量、提高生产力和降低成本。无论您是希望自动化更多流程的公司,还是面临下一个系统的规范、设计和安装的集成商或 OEM,请考虑这样一个事实:所有视觉检测系统都需要测试、迭代和持续改进。
遵循最佳实践并考虑对比度、空间分辨率、图像一致性和曝光将有助于设计有效的成像系统。在深度学习方面,考虑对干净数据的需求、基于协议的标记、标记和标记以及迭代模型改进将有助于产生高质量的 AI 视觉检测系统。随着不断改进,您的视觉检测系统将继续增加价值,并使您的业务在未来发展。

—版权声明—

仅用于学术分享,版权属于原作者。

若有侵权,请联系微信号:yiyang-sy 删除或修改!


—THE END—
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/119513
 
169 次点击