机器视觉 (MV) 和人工智能 (AI) 为各类前沿应用程序提供了宝贵的检测和分析功能。与所有先进技术一样,该领域也存在一些陷阱,需要小心防范。
借助机器视觉,电子系统可以使用一个或多个电子摄像机、高级光传感器、模数转换器 (ADC) 和数字信号处理器 (DSP) 观察周围的环境和物体。这项技术的原型已经使用数十年,大多数应用都在医疗、国防/航空航天和工业自动化领域。
近年来,3D 传感技术不断改进,组件模块日趋紧凑,高质量 CMOS 图像传感器和功能强大的数据处理器价格大幅跳水,机器视觉的应用也呈现出井喷态势。美国知名咨询公司Grandview 研究预计,全球机器视觉市场将延续目前的爆炸式增长,在 2025 年达到 182.5 亿美元,复合年均增长率 (CAGR) 达 7.7%。
机器视觉系统的新市场包括:
- 工厂自动化和机器人技术: 外观检验、诊断、组装、移动方式机器人、数字制作、服务机器人、救援机器人
- 智能交通系统: 交通监控、自动驾驶车辆、驾驶员安全辅助
- 安全与执法: 安全监控、摄像网络、遥控感应、水下和恶劣环境作业
- 生命科学: 农业、林业、渔业、土木/建筑工程、商业、体育、时尚、家居等
- 多媒体: 数据库存档/检索、文档、文化/遗产、虚拟现实 (VR)/混合现实 (MR)/增强现实 (AR)、娱乐
- 生物医学: 断层扫描、内窥镜检查、计算机辅助诊断、计算机辅助手术、计算解剖学、生物信息学、护理
- 人机交互: 面部/手势/行为/步态/凝视分析、生物识别、可穿戴计算、第一人称视觉系统
咨询公司Gartner 的最新研究称,到 2025 年:
- 集成机器视觉的高级驾驶员辅助系统 (ADAS) 在汽车中的渗透率将从目前的 10% 提高到 35%。
- 零售商店使用应用机器视觉技术之后,可以通过针对性促销活动促使客流量增长 20%,店铺利润率增长 10%。
- 五大消费类电子产品制造商销售的所有智能家电中,20% 将配备机器视觉技术。
- 接近所有高端智能手机以及 30% 的基础智能手机都将具备机器视觉功能,面部或手势识别将成为标准的身份验证机制。
机器视觉最早可以追溯至上世纪 50 年代,当时任职于 RCA 的 P. K. Weimer、S. V. Forgue 和 R. R. Goodrich 合作开发了用于早期电子相机的光导摄像管。光导摄像管借助光电导体作为目标材料来捕获图像。上世纪 70 年代末之前,NASA 在大多数具有遥感功能的无人深空探测器上都部署了 RCA 的摄像管相机。
若要成功开发和实施机器视觉解决方案,关键是选择值得信赖的技术合作伙伴,建立必要的硬件组件和软件框架,提供视觉算法、摄像头接口标准、高级分析、人工智能和机器学习。对于任何企业来说,都有可为之事和不可为之事。
本文在此列出了开发现代机器视觉解决方案时需要考虑的 10 大注意事项。
1. 人工智能开发,数据质量先行:机器视觉系统若要正常运行,需要获取、处理、分析和理解图像,而这些工作均需依靠人工智能完成。为 实现这种理解,首先需要编译信息,亦即让人工智能用来学习的训练数据。训练数据质量越好,人工智能的质量就越好。由此也可以提高机器视觉系统的性能。如果训练数据质量低劣或数量不足,将妨碍人工智能和机器视觉应用取得成功。如果缺乏适当的训练数据,即使编程再好,人工智能也无法达到预期效果。
2. 功能不断叠加,渐渐脱离初衷:开始每个项目时,都要设定一系列合乎实际的期望和有望实现的目标。人类大脑能够同时处理来自五种感官的数据,并根据这些数据立即采取行动,这是真正意义上的一心多用。通过编程处理,机器通常能够很好地完成单一任务,但在需要学习和执行多项任务时,人工智能可能遇到困难。初始规划阶段,需要重点关注关系到成败的主要功能。人工智能应用的初始版本便执行种类繁多的任务,可能会导致任务无法正确执行,并导致初始结果满意度欠缺。
3. 视觉的语言:成功的机器视觉应用不仅需要功能强大的硬件,还离不开高超的编程技能。编程可以采用人工智能框架和编码语言的形式。人工智能框架可以简化、加速人工智能应用开发,包括机器学习、深度学习、神经网络和自然语言处理 (NLP)。人工智能框架可以充当人工智能系统的开发模板。与从头开始开发人工智能应用相比,这种方法的开发、部署和管理难度都大大降低。有几种编程语言可以与人工智能配合使用,每种语言都有独到的优势。其中包括 Caffe、Python、Pytorch、TensorFlow、C++、Lisp、Java、R、Prolog 和 Model Zoo。
在机器视觉应用规划阶段,必须确定使用内部资源还是外包编程。程序员的技能水平如何?打算使用哪种编程语言?所选编程语言的最佳开发工具是哪种?人工智能程序和后续更新的编译难度如何?如何发布更新?
4. 选择合适的硬件主器件:选择运行机器视觉人工智能应用程序的硬件时,存在诸多选项。现场可编程逻辑门阵列 (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 英尺远的距离看篮球时,知道两次看到的是同一物体,只是距离不同。在这一点上,多样化的训练集和人工智能的准确测试有助于确保某个距离的物体可以被正确识别。镜头和焦距的选择也直接影响到应用程序的性能。大多数机器视觉系统都读取像素值,但若要成功部署到移动应用,缩放方面的考虑同样不可或缺。
9. 物体变形:机器视觉系统能够识别存在微小偏差的同一物体,这种能力在机器视觉应用中至关重要,特别是在交通和安全方面。对于应用的准确性和操作安全性而言,识别四肢有关节的行人极其重要。此处需要再次强调为人工智能学习提供高质量训练集的必要性,但同样导致数据量更密集。
10. 动作和运动:快速运动/移动会给机器视觉系统带来问题。对于安全性至关重要的应用而言,这可能带来致命的危险。这种情况可以通过选择适当的成像器快门、特殊的编程算法和照明来缓解。廉价的图像传感器通常使用卷帘快门,这会破坏快速移动的图像。全局快门可能增加图像传感器的成本,但却是适当捕捉快速运动的必要功能。预测和准备能力是判断人类智力的两大标准。人工智能应用程序同样如此。
本文仅做学术分享,如有侵权,请联系删文。
直接来源:新机器视觉