IM (中国电竞) 官方网站

使用Arm KleidiCV开源库加速图像处理性能
栏目:平台快讯 发布时间:2024-09-04
 优化的性能关键型例程的开源库。该软件库专为集成到各种计算机视觉框架而设计,能够为 Arm 平台上的计算机视觉工作负载提供最佳性能,并且无需应用  在消费电子

  优化的性能关键型例程的开源库。该软件库专为集成到各种计算机视觉框架而设计,能够为 Arm 平台上的计算机视觉工作负载提供最佳性能,并且无需应用

  在消费电子设备中,摄像头质量是消费者选择手机时的一大关键因素。但是,摄像头的质量不仅与镜头或传感器有关。从光子击中摄像头传感器到图像显示在屏幕的过程中,图像数据须经过多次转换,其中通常包括但不限于:热像素校正、白平衡、去马赛克、降噪、阴影校正、几何校正、色彩校正、色调曲线调整、边缘增强、缩放和裁剪等。

  上述部分转换应由专用硬件完成,然而许多转换在软件中执行时表现更佳。在软件中执行可以带来出色的灵活性,使摄像头管线设计者能够快速迭代其构想,打造优异的摄像体验,进而使产品在市场中脱颖而出。

  摄像头管线不仅要生成高品质图像,还要能够快速运行。既要让消费者能够以 60fps 帧率录制 4K 视频,又可以快速拍摄优质的静态图像。用户想要记录下的一些美好瞬间稍纵即逝,如果摄像头唤醒时间过长,那即使具备拍出漂亮照片的摄像功能,也只是劳而无功。因此,要拍出令人惊艳的好照片,就最好在软件中运行摄像头管线,而且相关软件需要能够快速运行。

  Arm 对构成图像处理基本要素的许多运算进行了高度优化,充分善用现有和未来 Arm CPU 的功耗和效率。我们是如何做到的?KleidiCV 不使用普通的 C 函数,而是使用 Arm C 语言扩展 (Arm C Language Extensions,ACLE) intrinsics 编写而成,可直接映射到功能强大的 Arm 单指令多数据 (SIMD) 指令。每个 KleidiCV 函数都有三种不同的实现方式,分别针对 Neon、SVE2 或 Streaming SVE 和 SME2。KleidiCV 会自动检测其所运行的硬件,并据此选择合适的实现方式。

  KleidiCV 是一个小型,但不断增长的简单却快速的图像底层运算集合。其中包括:

  KleidiCV 可用作轻量级独立图像处理库,此外还可作为非常热门的 OpenCV 库的一部分无缝使用。如果你已经在使用 OpenCV,那么可以轻松启用 KleidiCV 来加速图像处理。

  目前,KleidiCV 不提供内置的多线程支持。图像处理是一个“易并行”问题,因此原则上,可以轻松地为 KleidiCV 添加多线程,但我们仍在不断完善 API,致力于为开发者提供在多任务环境中使用异构 CPU 时所需的控制功能。为了使比较更有意义,我们的基准测试在 OpenCV 中禁用了多线程。基准测试显示的是单核性能。

使用Arm KleidiCV开源库加速图像处理性能(图1)

  各个运算的基准测试得分各有不同。在某些情况中,性能取得了小幅提升,而在更好的情况下,KleidiCV 的运行时间比标准 OpenCV 要短得多。不同运算的平均提升率超过 75%。

  若想详细了解我们如何运行基准测试,可以在 KleidiCV 资源库中查看我们使用的脚本。

  在Java项目中,要想获取启用 KleidiCV 的 OpenCV,最简单的方法是使用 OpenCV 4.10 Maven 包,开发者可访问以下链接,获取相关资源。

使用Arm KleidiCV开源库加速图像处理性能(图2)

  Arm 非常重视安全问题。安全开发生命周期已融入到我们工作的方方面面。在可能的情况下,KleidiCV 函数将验证其参数,例如参数超出有效范围时,将返回错误。该项目包含大量自动测试。核心库代码的分支覆盖率非常高,远远超过 99%,且行覆盖率达到 100%。

  KleidiCV 库会不断增加更多功能。欢迎开发者在我们的 GitLab 资源库中提出反馈意见或问题。IM电竞网站IM电竞网站