机器视觉(MV) 和人工智能(AI) 为各种尖端应用提供了宝贵的检测和分析功能。与所有先进技术一样,该领域也存在需要小心防范的陷阱。
借助机器视觉,电子系统可以使用一个或多个电子摄像头、先进的光传感器、模数转换器(ADC) 和数字信号处理器(DSP) 来观察周围环境和物体。该技术的原型已经使用了数十年,大多数应用在医疗、国防/航空航天和工业自动化领域。
近年来,3D传感技术不断完善,元件模块日益紧凑,高品质CMOS图像传感器和强大数据处理器的价格直线下降,机器视觉的应用也呈现井喷之势。美国知名咨询公司Grandview Research预测,全球机器视觉市场将延续目前的爆发式增长,到2025年将达到182.5亿美元,复合年增长率(CAGR)为7.7%。
机器视觉系统的新市场包括:
工厂自动化和机器人:视觉检查、诊断、装配、移动机器人、数字制造、服务机器人、救援机器人
智能交通系统:交通监控、自动驾驶车辆、驾驶员安全辅助
安全和执法:安全监控、摄像网络、遥感、水下和恶劣环境操作
生命科学:农业、林业、渔业、土木/建筑工程、商业、体育、时尚、家居等。
多媒体:数据库归档/检索、文档、文化/遗产、虚拟现实(VR)/混合现实(MR)/增强现实(AR)、娱乐
生物医学:断层扫描、内窥镜检查、计算机辅助诊断、计算机辅助手术、计算解剖学、生物信息学、护理
人机交互:面部/手势/行为/步态/目光分析、生物特征识别、可穿戴计算、第一人称视觉系统
根据咨询公司Gartner 的最新研究,到2025 年:
集成机器视觉的高级驾驶辅助系统(ADAS)在汽车中的渗透率将从目前的10% 增加到35%。
使用应用机器视觉技术的零售商店可以通过有针对性的促销活动将客流量增加20%,并将商店利润率提高10%。
前五名消费电子制造商销售的所有智能家电中,20%将配备机器视觉技术。
几乎所有高端智能手机和30%的基础智能手机都将具备机器视觉功能,面部或手势识别将成为标准的身份验证机制。
机器视觉的历史可以追溯到20 世纪50 年代,当时在RCA 工作的P. K. Weimer、S. V. Forgue 和R. R. Goodrich 合作开发了用于早期电子相机的光导管。光电导摄像管借助光电导体作为目标材料来捕获图像。直到20 世纪70 年代末,NASA 在其大多数具有遥感功能的无人深空探测器上都部署了RCA 的视频管摄像机。
要成功开发和实施机器视觉解决方案,关键是选择值得信赖的技术合作伙伴,建立必要的硬件组件和软件框架,以提供视觉算法、相机接口标准、高级分析、人工智能和机器学习。与任何企业一样,都有该做和不该做的事情。在这里,我们列出了开发现代机器视觉解决方案时需要考虑的十大事项。
1、人工智能发展数据质量先行:机器视觉系统要正常运行,需要采集、处理、分析和理解图像,而这些任务都需要人工智能来完成。为了实现这种理解,你首先需要编译信息,即人工智能用来学习的训练数据。训练数据的质量越好,人工智能的质量就越好。这也可以提高机器视觉系统的性能。如果训练数据质量差或数量不足,就会阻碍人工智能和机器视觉应用的成功。如果没有适当的训练数据,人工智能无论编程得多么好,都无法达到预期的结果。
2. 功能不断堆积并逐渐偏离初衷:当你开始每个项目时,设定一组现实的期望和可实现的目标。人脑能够同时处理来自五种感官的数据,并根据这些数据立即采取行动,这是真正的多任务处理。机器通常可以通过编程来很好地执行单个任务,但人工智能在需要学习和执行多个任务时可能会遇到困难。在初始规划阶段,重点关注决定成功或失败的关键特征。人工智能应用程序的初始版本执行各种各样的任务,这可能会导致任务无法正确执行,并导致对初始结果不满意。
3.视觉语言:成功的机器视觉应用不仅需要强大的硬件,还需要高超的编程技能。编程可以采用人工智能框架和编码语言的形式。 AI 框架简化并加速了AI 应用程序的开发,包括机器学习、深度学习、神经网络和自然语言处理(NLP)。人工智能框架可以作为人工智能系统开发的模板。与从头开始开发人工智能应用程序相比,这种方法更容易开发、部署和管理。有多种编程语言可以与人工智能一起使用,每种语言都有独特的优势。其中包括Caffe、Python、Pytorch、TensorFlow、C++、Lisp、Java、R、Prolog 和Model Zoo。
在机器视觉应用规划阶段,必须决定是使用内部资源还是外包编程。程序员的技术水平如何?您打算使用哪种编程语言?最适合您选择的编程语言的开发工具是什么? AI程序的编译和后续更新有多容易?如何发布更新?
4.选择合适的硬件主机:选择运行机器视觉AI应用程序的硬件时有很多选择。现场可编程门阵列(FPGA)、图形处理单元(GPU) 和微控制器(MCU) 都有各自的优势。
FPGA: FPGA 是功能非常强大的处理单元,可进行配置以满足几乎任何应用的需求。可以创建定制FPGA 架构来处理特定应用。与GPU 和CPU 等其他选项相比,可实现更高的性能、更低的成本和更好的能效。
GPU: GPU是一款主要用于处理图像和视频的专用处理器。与CPU相比,它的处理单元更简单,但拥有更多的核心。因此,GPU 非常适合需要并行处理大量数据(例如图像像素或视频编解码器)的应用程序。不过,GPU 也有一些局限性:由于使用CUDA 和OpenCL 等语言进行编程,其能耗较高,且灵活性不如CPU。
CPUs: CPU的核心数量有限,无法快速处理人工智能所需的大量数据。因此,CPU 仅适用于有效批量较小的小型模型。 CPU的优点是编程方便、成本低、广泛支持各种编程框架。
除此之外,在选择硬件时,还需要考虑能源效率、设备移动性、IO数量、运行环境,以及最重要的因素——成本。在最初的规划阶段进行彻底的调查和深思熟虑可以避免以后的麻烦。有了所有处理器和支持组件,您就可以获得足够的处理能力,为未来的功能铺平道路,并准备足够的板载内存来处理固件升级和人工智能算法增长。
5. 图像传感器和照明:CMOS 传感器的前照式(FSI) 和背照式(BSI) 技术取得了巨大进步,即使在低光照水平下也能获得更高分辨率的图像。适当的照明也是一个重要的考虑因素。所有照明性能的基础都归结为图像传感器的三个主要特性:量子效率(QE)、暗电流和饱和能力。量子效率是器件对于特定数量的入射光子产生的电荷的比率。由于QE 在不同波长下会发生变化,因此最好将其绘制为波长的函数。这使得能够精确测量设备灵敏度。当安装在相机内部时,由于外部光学和电子效应,相机的最大QE 应小于传感器。
此外,暗电流和饱和能力也是机器视觉系统设计中的重要考虑因素。暗电流测量CMOS 成像器内热量产生的电子数量的变化,以及可能伴随的噪声。饱和容量代表单个像素可以存储的电子数量。尽管这些参数通常不会在相机制造商的数据表中说明,但它们可以与QE 测量一起用于计算应用的最大信噪比(S/N)、绝对灵敏度和动态范围。
适当的照明有助于提高机器视觉应用的准确性和效率。照明需要考虑的其他因素包括波长(例如红外线)、固定照明,甚至照明位置。研究证明,直接照射在机器视觉系统相机上的光源和反射会降低物体检测的准确性。
6.背景识别:背景会给机器视觉系统带来特殊问题。想象一下,安全系统无法检测到坏人黑外套中的黑枪。同样,工厂环境中的反光金属物体可能会阻碍目视检查算法正常运行,从而造成此类困难。辅助算法可以通过关注电磁(EM) 频谱的不同波长(例如红外光和自适应光)来缓解这种情况。
7. 物体定位和定向:人工智能可以帮助机器视觉解决方案识别从训练数据中学习到的物体。如果您拍摄同一个物体但改变其方向,某些机器视觉系统会出错。这可以通过为人工智能提供准确的训练集来缓解,但这也会导致数据量变得密集。
8. 对象缩放:当我们从两英尺远和10 英尺远看篮球时,我们知道我们两次看到同一个物体,只是距离不同。此时,多样化的训练集和对AI的准确测试有助于确保一定距离的物体能够被正确识别。镜头和焦距的选择也直接影响应用性能。大多数机器视觉系统读取像素值,但缩放考虑因素也是成功部署到移动应用程序中不可或缺的一部分。
9. 物体变形:机器视觉系统识别具有轻微偏差的同一物体的能力在机器视觉应用中至关重要,特别是在交通和安全领域。具有关节肢体的行人识别对于应用的准确性和操作安全性极为重要。这里需要再次强调为人工智能学习提供高质量训练集的必要性,但这又会导致数据量更加密集。
10. 动作和移动:快速移动可能会给机器视觉系统带来问题。对于安全关键型应用来说,这可能是致命的。通过选择适当的成像器快门、特殊编程算法和照明可以缓解这种情况。廉价的图像传感器通常使用滚动快门,这会破坏快速移动的图像。全局快门可能会增加图像传感器的成本,但它是正确捕捉快速运动的必要功能。预测能力和准备能力是判断人类智力的两大标准。人工智能应用也是如此。
审稿人:李茜