图1:使用GPU实现快速图像处理速度的焊接检查应用程序的UI。
机器视觉应用中图像处理平台的三个最常见的选择是中央处理器(CPU),图形处理器(GPU)和现场可编程门阵列(FPGA)。
CPU是传统台式计算机和笔记本电脑的心脏。在手机或平板电脑中,消耗较少功率的ARM处理器可提供CPU功能。CPU具有更大的指令集和大量的本地计算机语言库,例如C,C ++,Java,C#和Python。其中一些语言具有可将功能转移到GPU并在GPU上运行的软件包。
传统上,GPU已用于在PC上的视频游戏中渲染像素(即图形)。便携式计算机通常还具有GPU。GPU越好,图形质量越好,帧速率越高。对于图像处理应用,GPU执行相同的功能,但相反。
在机器视觉中,不是从视频游戏中的条件开始,而是尝试将其渲染到具有数百万个像素的屏幕上,而是处理数百万个像素以帮助软件解释和理解图像。由于它们具有由许多并行内核和优化的像素数学组成的架构,因此GPU非常有效地处理图像和绘制图形。
FPGA的可编程电路运行下载到卡上的自定义程序,以将其配置为以比CPU或GPU功耗更低的低级逻辑来完成所需的任务。FPGA还不需要操作系统的开销。
机器视觉系统的开发人员和集成人员可以在开发系统的其余部分之前,尝试决定使用哪些平台。首先对系统进行原型设计通常可以确定平台的选择。如果特定应用程序的数学运算无法在一个平台上运行,则可能无法在任何平台上运行。
设置系统的物理特性(镜头,照明灯,照相机等),收集图像选择并在任何舒适的环境中测试数学都可以为平台选择提供依据。例如,某些智能相机包括板载FPGA,以对相机进行编程以进行不同的测试。如果原型可以使用智能相机按预期运行,则FPGA可能是该应用程序的正确平台,并且可能不需要考虑CPU或GPU。
平台标准
选择特定平台的第一个也是最重要的标准是速度。原型应用程序一旦在测试台上工作,就必须确定该应用程序每秒需要处理多少部分,或者必须处理实时视频每秒要处理多少帧。通常,对于实时视频,约30 fps会创建逼真的图像。
还必须考虑速度的其他方面,例如延迟。系统可能能够在10毫秒内处理一帧,但需要200毫秒才能从相机上取下该帧,GigE Vision驱动程序需要100毫秒来接收该帧并将其提供给应用程序,另外需要10毫秒来处理该帧。 。在零件检查应用程序中,可能是在框架到达应用程序时,相关零件已经移动。
一个假想的系统可能必须开始排队零件图像,以跟上零件在生产线上的移动速度。将需要具有确定性时序的可编程逻辑控制器(PLC)来跟踪生成排队图像的零件的位置,以便如果零件未通过机器视觉系统检查,则可以将其从生产线中拉出。
还必须考虑启动延迟。并非所有的应用程序都可以在工厂车间连续运行,或者在生产线开始运行前让其启动几分钟。诸如户外和消费市场系统之类的某些应用(例如自动驾驶汽车中的系统)可能需要加电并准备在几毫秒内运行。具有多层软件的机器视觉系统(例如具有操作系统的CPU)可能难以满足较短的启动时间要求。
以原型速度制作时,可以通过拍摄高分辨率秒表来进行测试。可以将渲染到屏幕上的帧与秒表上显示的时间进行比较,从而可以轻松量化等待时间并确定系统可能需要更改或改进的方式。
考虑系统所需的功率对于某些应用程序至关重要,而对于其他应用程序则不那么重要。对于在移动设备或无人机等电池供电的硬件上运行的应用程序,可能不适合使用CPU或传统GPU,因为这些平台可能会耗电。但是,像NVIDIA的Jetson这样的移动GPU(www.nvidia.com)提供了低功耗选项。基于Raspberry Pi的片上系统(SoC)平台还将比CPU具有更低的功耗要求。
应该考虑电源的可靠性,尤其是对于基于无人机的户外或移动应用,要求平台具有足够的鲁棒性以应对反复的电源中断,机器视觉公众号。
应该考虑平台的热量和所需空间。为工厂车间构建的应用程序通常有一个面板空间,该面板可以容纳所有电子设备以及一个风扇,以帮助冷却系统。在多尘的环境或设备必须防水的情况下,需要适当的防护等级(分别为IP65 / IP67),还可能需要密封的面板,这些面板可能会迅速升温。在这些条件下,需要更大的面板和无风扇组件。必须装入面板的物品越多,它们产生的热量就越大,系统可能引起的问题也就越多,并且价格可能会更高。
在几乎所有情况下,所选平台都需要与其他设备通信,这是机器视觉应用程序的关键方面,直到设计过程结束才可能被考虑。以必须传输数据以进行打印的应用程序为例。可能严格要求CPU与打印机通信。
数据存储和检索要求也可能会影响平台选择。CPU提供了将信息写入硬盘的功能。在GPU和FPGA上处理内存和持久性存储可能会更加困难。在某些情况下,可能需要CPU来扩充GPU或FPGA,以严格处理与数据相关的问题。智能相机和紧凑的嵌入式视觉系统可以是包括CPU,GPU,FPGA和数字处理器(DSP)的平台的组合。
还必须考虑系统依赖性和将来的证明。硬件可靠性和潜在的更换时间表应予估计。硬件和软件可以购买多长时间?如果所需的处理能力发生变化,系统是否允许按比例放大或缩小?所选组件将提供多长时间的技术支持?是否有足够的人具备操作组件的必要技能?将来寻找人员来运行系统是否会引起长期关注?
应该考虑所选组件的发展以及它们将来是否会满足系统要求。如果一系列FPGA或GPU背后的工程师以解决机器视觉系统将要遇到的特定挑战的心态开发下一代硬件,那么这可能意味着赞成在应用中采用这些FPGA或GPU。如果硬件供应商试图针对其他问题进行工程设计,而忽略了特定应用程序的需求,则可能会打击使用该供应商的硬件产品线。
考虑定制代码开发的要求以创建变通办法,有助于将来验证系统。机器视觉应用程序需要的自定义代码越多,系统开发漏洞的潜力就越大,这是不利的一面。但是,如果您需要长期使最终用户使用该应用程序,则还需要自定义和扩展功能。如果用于特定平台的供应商工具提供了很少甚至没有定制代码的解决方案,但是如果需要的话,可以添加定制代码,这可能就是采用该平台的原因。
用户界面要求经常被视为平台选择的标准。大多数系统最终不得不与人进行某种程度的交流。像素处理可以100%正确,但是如果系统无法与任何人交流信息,则系统可能不适合执行任务。CPU是开发用户界面的最佳工具。基于GPU,FPGA或CPU / GPU组合的系统可以不使用用户界面进行设计,而是通过网页提供摘要信息以监控结果。
对于任何机器视觉任务,都没有唯一正确的答案。但是,三个不同的机器视觉系统的样本演示了如何考虑平台标准来推动这些系统的设计-机器视觉公众号。
焊接查看器
Artemis Vision(www.artemisvision.com)与Melt Tools(www.melttools.com)签订合同,主要设计用于教室的焊接观察器。焊接涉及视野中间非常明亮的光线和黑暗的环境/背景,需要高动态范围(HDR)成像才能同时显示焊接位置的背景和细节(图1)。
该应用程序需要在不同的曝光时间进行多次曝光,然后将图像拼接在一起,以渲染显示不同光照水平的单个帧。要产生流畅的视频,需要30 fps的输出。该系统最初是在Intel i7 CPU上原型设计的。每个输入帧需要30到35毫秒来处理,这意味着每60到70毫秒输出一个组合的,已处理的帧。速度太慢,无法支持30 fps的输出速率,每帧需要30到35 ms,因此CPU对于该应用程序不是一个可行的平台。
考虑将算法转移到FPGA上,然后考虑转移到多核服务器并并行化算法。客户想要一个适合教室使用的系统,但是,该系统需要使用工程教室中已经存在的硬件进行构造。
教室中的计算机具有相当强大的GPU,可为工程软件渲染图像。将HDR算法放到GPU上的选项最有意义。
该算法是在CUDA中实现的,是一款中游NVIDIA图形卡。GPU在5到6毫秒内处理了一个帧,并在另外5到6毫秒内将帧复制到了GPU内存中。除了摄像头本身以外,不需要其他硬件即可创建焊接查看器。
3D激光轮廓仪
3D激光轮廓仪需要快速处理才能支持高线速度。对于垂直于行进轴的视场中的1000个像素,最佳系统将捕获正方形轮廓。在1000毫米的视野和1000毫米的行程范围内,该系统应能够处理1000帧以获得1毫米/像素的分辨率,通常每秒可计算出数百赫兹或帧(图2)。
需要快速启动时间,以使3D Profiler能够充分捕获和处理运动中的零件的图像。确定性时序可避免使用编码器和排队部件,从而使系统更易于组装和调试。
直接将GPU内存进出的能力给将GPU与3D激光轮廓分析应用程序结合使用提出了挑战。设计为PC组件的GPU不需要操作系统,但最容易通过该CPU的OS使用。因此,FPGA通常被视为3D激光线轮廓仪的平台。FPGA提供速度,确定性时序,快速启动时间和可靠性。
图3:需要用于此尺寸标注系统的UI,因此需要CPU平台。
尺寸标注系统
使用片状材料的客户希望采用各种尺寸的板。需要两秒钟的测量时间。生产线以每分钟120英尺的速度运行。电路板的尺寸从4 x 4英尺到4 x 8英尺,并且该系统需要检测拐角和边缘上的芯片。
需要一个操作员界面,以便可以更改板的类型,并且与任何工业系统一样,如果系统运行不正常,则需要一个用户界面来提供错误消息。
该系统首先由运行速度太慢的CPU构建。评估电路板尺寸并计算拐角和边缘是否完整,大约需要5000毫秒。边角算法花费了大量时间。
通过指定感兴趣区域(ROI)减少需要处理的像素数量可以提高应用程序的速度。实施了一个系统来裁剪有限的边缘和角落的ROI。由于使用了裁剪紧密的区域来验证边缘和角落,因此计算时间减少到800到1200毫秒。对算法的更改使将应用程序保留在基于CPU的平台上成为可能(图3)。
结论
如这些示例所示,不存在适用于机器视觉应用的千篇一律的平台。许多变量会影响应该选择CPU,GPU还是FPGA或这三者的某种组合。智能相机可以使用CPU,DSP或CPU和FPGA的组合。在单个平台中可能存在有关功耗和处理速度的多种选择。最佳性能决定了正确的解决方案。