机器学习、虚拟和增强现实,以及计算机视觉等新兴技术为跨整个 ARM 体系以及所有细分市场的创新和业务增长带来了大好机遇。
半导体供应链中的软件开发人员应该能够集中精力进行创新,而不是重新实现常用的技术和优化。这也为产品开发带来了好机会,我们的合作伙伴应该将时间用在功能开发和差异化上,而不是费力于基础技术。
幸福时光来临!我们一直致力于为我们的合作伙伴和开发人员体系提供支持,今天我们公开发布 ARM 计算库。
什么是 ARM 计算库
ARM 计算库是为 ARM CPU 和 Mali GPU 体系结构优化的一系列低级软件函数,面向各种不同的使用情形,包括:图像处理、计算机视觉和机器学习。它是免费提供的,但需获得 MIT 开源许可证才能使用。
ARM 计算库最初包含大量为 ARMCortex-A 系列 CPU 处理器和 ARM Mali Midgard 和 Bifrost 系列 GPU 实现的函数。它是一个方便的低级优化函数资源库,开发人员可单独使用,也可作为复杂管道的一部分使用,从而加快其算法和应用程序运行速度。
ARM 计算库中的内容
该库的第一个版本包括一系列全面的函数,这些函数是基于我们与合作伙伴和开发人员在图像处理和视觉产品方面的合作经验,以及我们在优化机器学习框架(如 Google TensorFlow)方面的经验而构建的。
该库包括以下函数类别:
我们听取了合作伙伴的意见,并且将继续这样做,以便获得您的反馈,有问题欢迎在下方留言。
ARM 计算库有何优势
ARM 计算库不但是非常全面的一站式解决方案,可用于日常常见 CV 和 ML 性能优化工作,它还有一个重要特性,那就是可移植性。CPU 功能是用 NEON 内部函数实现的,开发人员可以针对其目标体系结构重新编译这些内部函数,也就是说可以在 ARMv7 或 ARMv8 处理器实现之间转换代码,可将代码编译为 32 位和 64 位。该库的 GPU 版本由使用 OpenCL 标准 API 编写的内核程序组成,这些程序同样可以跨多种处理器和体系结构移植(虽然是专门为 ARM Mali GPU 而优化的)。
该库与操作系统无关,已部署在各种基于 ARM 的新式 Linux 和 Android 片上系统平台上。
它是一个很有用的工具,能够大大降低开发人员开发图像处理、视觉和机器学习应用程序时所需要的成本和工作量,让他们能够集中精力打造产品优势并缩短产品上市时间。ARM 计算库非常成熟,并经过测试,全球已有多家消费类和移动芯片提供商、OEM 厂商,以及很多 ISV 在他们的产品中加以利用。
其他类似开源库的表现
如果您开发过任何计算机视觉软件或设计过这种软件的原型,您很可能使用过 OpenCV 库。OpenCV 是极好的工具,堪称最全面的工具箱,任何人都可能需要用它来快速设计计算机视觉和机器学习领域的产品和解决方案原型。
但是现在,在 OpenCV 中,对移动和嵌入式处理器的支持仍然有限。如今,OpenCV 项目包含大约 40 个 NEON 加速函数。还有一个 OpenCL 模块,可在移动 OpenCL 实现中让使用兼容处理器的关键函数加速运行(虽然代码针对特定桌面类 GPU 体系结构进行了优化,性能不算很好,甚至在一些情况下根本不 执行)。
与现有的开源库(如 OpenCV)相比,ARM 计算库提供的函数更为全面,性能更优,并且这一切都是现成可用的。我们测试了这两个库中在一些新式智能手机设备(如华为 P9,即海思麒麟 955)上都使用的函数。在任何情况下,ARM 计算库的性能都优于 OpenCV。下图显示了我们观察到的一些性能上的优势,这些结果按函数类别进行了分组。
[标题:ARM 计算库与 OpenCV,单线程,CPU (NEON),在海思麒麟 960 上测试]
ARM 计算库提供专门针对机器学习和计算机视觉而优化的基元,对 ARM 优化库进行了补充。其他值得关注的提供 NEON 优化的库包括:
现在谁在使用这个库?
在几周之前于巴塞罗那举行的世界移动大会上,我们展示了一款智能手机应用,它通过结合使用计算机视觉和机器学习技术估计食物中的卡路里含量。这次演示是由我们重要的合作伙伴 ThunderView (ThunderSoft) 制作的,其中使用了 ARM 开发的一些经过优化的基元。在我以前的博客以及EEtimes 的 Peter Clark 所撰写的报告中,您可以了解到更多相关信息。
浏览此空间,了解我们的合作伙伴使用 ARM 计算库做些什么。
我们期待您的反馈,也欢迎您在本帖留言提问