近年来,GPU(图形处理单元)、传感器、相机和视觉AI方面所取得的进步,推动了3D图形和嵌入式视觉行业都实现了巨大的增长。然而,尽管图形行业受益于开放标准的API(应用程序接口),如OpenGL和Vulkan,这些API能够使软件在不同供应商的多代GPU硬件上移植,但是视觉市场依然缺乏可移植性接入嵌入式相机系统的互操作性标准,而这往往会增加视觉处理的成本并减缓创新
管理开放标准OpenGL和Vulkan的Khronos Group行业联盟,目前正在为嵌入式相机系统开发新的Kamaros API标准,旨在提高嵌入式视觉产品的硬件/软件互操作性。鉴于相机、GPU硬件架构以及视觉应用的特点,因此需要采用不同的方法来设计有效的开放标准API。
本文将讨论Kamaros API标准面临的设计挑战,以及Kamaros工作组建议如何克服这些挑战,以便将互操作性的好处带到嵌入式视觉领域。
开放标准推动3D图形行业增长
随着第一批GPU的推出,3D图形行业在20世纪90年代和21世纪初迎来了爆炸性增长。GPU作为一种专用的图形处理器件,能比CPU更有效地处理数据密集型图形任务。GPU硬件加速了3D渲染,迅速被广泛应用于从视频游戏到专业设计、可视化和电影制作的一系列应用中。GPU的普及得益于1992年业界对OpenGL标准的早期采用。OpenGL提供了图形管线的抽象模型和用于访问任何GPU的API,这提供了将API映射到自身硬件架构的驱动程序。
这使硬件供应商能够在不暴露专有技术的情况下创新硬件实施,同时也能让应用程序在广泛的硬件上轻松部署;这反过来又推动了更多市场和平台对创新图形硬件的需求。
图1:1992年发布的OpenGL API通过抽象处理管线提供了互操作性,30多年来此举始终推动着3D图形技术的发展。
在将3D图形的可用性扩展到其他市场方面,Khronos Group也发挥了重要作用,比如采用OpenGL ES标准的移动设备和采用WebGL API(OpenGL的直系后代)的万维网。Khronos的新一代Vulkan API,针对现代图形处理任务进一步发展了OpenGL。
通过开放API标准实现的可移植性和更易实现GPU加速,继续推动3D技术的采用,同时图形硬件经历了巨大创新。如果开放标准能够降低访问新型相机、传感器和ISP(图像信号处理器)硬件的门槛,嵌入式视觉市场是否也能享受到类似好处呢?
嵌入式视觉行业可能错过了额外增长的机会
嵌入式视觉行业经历了快速增长,已经有数百万台相机被部署到无人机、机器人、智能设备和自动驾驶机器中,并且还在结合人工智能(AI)技术来理解视觉数据。
然而,嵌入式视觉市场所走的历史道路,导致了今天的相机系统通常是使用特定硬件供应商专有的API和软件开发工具包(SDK),来展示它们的功能。如果想要更换或升级相机系统,将会给软件开发人员和系统集成商带来巨大负担。缺乏开放标准的API,使得利用不同的相机技术成本高昂,因为视觉处理堆栈的大部分通常需要针对新相机硬件重新编写。
此外,由于缺乏经过深思熟虑设计的开放标准API,无法通过抽象底层相机硬件的细节来提供功能可移植性,这意味着如果相机供应商不想披露专有传感器和处理管线的细节,软件开发人员通常无法充分利用相机的功能。
图2:视觉传感器和图像处理的多样性和复杂性不断增加,这也增加了对开放嵌入式相机标准需求的紧迫性。
随着相机产品被越来越多地部署到日益复杂的系统中,行业对开放标准API的需求越来越迫切。这些视觉系统通常包含多台相机,并与复杂的下游处理技术紧密集成,这就要求对相机图像流的生成进行精确控制。这种情况促使嵌入式视觉行业越发认识到:需要一个开放标准的API来推动创新和降低成本。
Khronos Group和Kamaros
20多年来,Khronos已经创建了开放、无版税的API标准,使软件应用程序和框架能够利用专用硅处理器的力量;这些处理器通常使用并行处理,以提升3D图形、AR和VR、视频处理以及机器学习/推理等高要求应用的性能。
图3:Khronos开放标准以控制AR和VR硬件管线,包括使用Kamaros控制传感器、相机和ISP处理。
新的Kamaros API标准将适用于一系列活跃的Khronos标准,提供对嵌入式视觉硬件的多个管线阶段的软件控制,这些硬件通常用于消费、工业、汽车和科学领域。这包括用于加速视觉和推理操作的OpenCL和OpenVX,它们补充了Kamaros的拟议功能,旨在提供对相机、传感器和ISP加速的可移植性访问。
Kamaros API的目标
用于访问嵌入式市场中的加速硬件或GPU的API标准,可以带来许多好处,包括:
-
跨平台软件可移植性
-
软件和硬件开发解耦,更容易部署和集成新组件
-
跨代可重用性
-
现场可升级性
这些标准降低了成本,缩短了上市时间,并降低了在各类产品中使用先进技术(如并行处理)进行更快的推理和视觉处理的障碍。
任何向硬件(包括相机)提供可移植性访问的成功API,都必须为标准实施者和用户提供显著好处,以推动标准被广泛采用及获得广泛支持。
对于软件供应商来说,一个针对嵌入式相机的有效的开放标准,应该提供引擎和应用程序的跨平台可移植性,以实现更广泛的部署,并降低在不同硬件上的开发成本。与此同时,硬件供应商应该让软件开发人员能够发现并有效利用其相机系统功能的全部潜力,且无需公开使用细节。这有助于实现硬件的创新和差异化,同时打造更大的库和应用生态系统。
Kamaros设计
Kamaros是一个面向应用的用户空间API。它被设计为部署在不同的操作系统和底层硬件架构上,并由应用程序、框架和库使用。
Kamaros可以通过多种语言绑定调用,包括C、C++和Python。与其他现代Khronos API一样,Kamaros通过可加载层使用命令调度系统,使开发人员能够使用可安装层进行验证、分析和调试。Kamaros还将使用Vulkan风格的资源管理、同步和命令队列,重点关注极简主义和效率,以满足嵌入式视觉应用对延迟性和吞吐量的高要求。
图4:Kamaros希望为跨平台开发者提供相机系统API的范本。
Kamaros API允许应用程序识别和选择系统中的可用相机,发现相机属性,并通过管线模板配置处理管线和设置,使应用程序能够充分利用硬件功能,包括多个输入和输出流。
Kamaros是一个抽象的API,不需要开发人员设计代码以符合专有硬件使用细节。因此,它可以在不同硬件设备上移植使用,而无需特定于平台的代码。一旦配置了传感器和处理管线,Kamaros就可以使用每帧动态控制来发送帧请求,并在每帧元数据中返回所有应用的设置和任何异常。
图5:Kamaros应用程序结构。
管线模板的使用,使Kamaros能够满足各种相机供应商和开发人员的需求。针对常见用例配置的简单模板将得到广泛支持,以为那些希望在几次API调用后就开始采集图像的应用提供广泛的可移植性。希望使用相机功能的开发人员,可以使用Kamaros API来精确配置处理管线来满足自身需求。相机供应商也可以发布复杂的管线模板,这些模板展示了经过测试和优化的高级或自定义管线,以提高效率。