0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

Arm社区 来源:Arm社区 作者:Arm社区 2024-09-03 11:32 次阅读

作者:Arm 工程部主任软件工程师Michael Platings

对于在云端及边缘等环境中运行的数百万个人工智能 (AI) 工作负载,以及各类需要理解摄像头和视频数据的 AI 应用来说,计算机视觉 (CV) 都在其中起着关键作用。Arm KleidiCV 是一个针对 Arm CPU 优化的性能关键型例程的开源库。该软件库专为集成到各种计算机视觉框架而设计,能够为 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 是一个小型,但不断增长的简单却快速的图像底层运算集合。其中包括:

RGB 和 BGR(含和不含 alpha 通道)、灰度和 YUV 之间的色彩转换

高斯模糊

膨胀和腐蚀

索贝尔算子

调整图像大小

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

KleidiCV 的速度

通过 OpenCV 的基准测试,我们可以了解 KleidiCV 如何能够加速 OpenCV。代码使用 Android NDK 26d 构建而成。以下基准测试显示了 KleidiCV 在三星 Galaxy S22 手机上搭载的 Arm Cortex-X2 核心上的性能提升情况,其中图像尺寸为 1920*1080。

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

wKgZombWg1qAJKo_AABcBljfPBg460.png

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

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

获取方式

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

或者,在使用 CMake 构建 OpenCV 4.10 时,添加参数 -DWITH_KLEIDICV=ON,即可启用 KleidiCV 0.1。

wKgZombWg2SAOqHfAAAuaqncK7M279.jpg

你也可以将 KleidiCV 构建为独立的库。

安全和测试

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

开源

KleidiCV 以符合 Apache 许可证 2.0 版的源代码形式提供。

初期阶段

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • ARM
    ARM
    +关注

    关注

    134

    文章

    8963

    浏览量

    364953
  • 图像处理
    +关注

    关注

    26

    文章

    1268

    浏览量

    56364
  • 计算机视觉
    +关注

    关注

    8

    文章

    1685

    浏览量

    45808

原文标题:Arm KleidiCV 0.1 助力开发者释放图像处理能力

文章出处:【微信号:Arm社区,微信公众号:Arm社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    凌华科技推出嵌入式模块计算机Express-IB,助力提升图像处理性能

    凌华科技推出高图像处理性能的COM Express嵌入式模块计算机Express-IB,适用于需要高性能图像处理的系统控制器以增加行车安全的
    发表于 12-10 22:10 1608次阅读

    常用的Python图像处理介绍

    本文主要介绍了一些简单易懂最常用的 Python 图像处理
    的头像 发表于 08-19 10:54 1892次阅读

    Arm RAN加速资料

    Arm RAN加速(ArmRAL)包含一组用于加速电信应用的功能,例如但不限于5G无线电接入网络(RAN)。 Arm RAN
    发表于 08-08 07:46

    Arm RAN加速的参考文档

    本书包含Arm RAN加速(ArmRAL)的参考文档。这本书是由使用Doxygen的源代码生成的。
    发表于 08-10 07:08

    Arm RAN加速23.01版参考指南

    本书包含Arm RAN加速(ArmRAL)的参考文档。这本书是使用Doxygen从源代码生成的
    发表于 08-11 07:06

    ARM性能入门(单机版)

    ARM性能ARM处理器上的高性能计算应用程序提供优化的标准核心数学
    发表于 08-25 06:36

    使用计算在Raspberry PI和HiKey 960上分析AlexNet

    够更容易配置和优化 Am 处理器运行的软件。 AlexNet 是一个从 Arm Computer 中为 Raspberry Pi 设计的神经网络网络( CNN) , 从 1 000 个图像
    发表于 08-29 08:05

    性能加速的空间图像处理开发FPGA协处理

    性能加速的空间图像处理开发FPGA协处理器快速、精确的图像数据的板上分类是现代卫星
    发表于 04-27 08:30 15次下载

    浅谈Vitis 加速 可扩展,灵活度高

    Vitis 加速 Vitis 统一软件平台包括一组广泛的、性能优化的开源,这些提供了即开即
    的头像 发表于 11-23 15:45 1611次阅读

    CV-CUDA 高性能图像处理加速

    随着短视频 APP、视频会议平台以及 VR/AR 等技术的发展,视频与图像已逐渐成为全球互联网流量的主要组成部分。包含我们平时接触到的这些视频图像,也有很多是被 AI 和计算机视觉(CV)算法处理
    的头像 发表于 11-18 22:10 926次阅读

    CV-CUDA 高性能图像处理加速发布 Alpha 版本,正式向全球开发者开源

    CV-CUDA (Computer Vision – Compute Unified Device Architecture)高性能图像处理加速
    的头像 发表于 12-21 20:45 957次阅读

    Arm RAN 加速(RAN Acceleration Library, RAL)通过采用 BSD 开源许可证将代码正式开源

    Arm RAN 加速(RAN Acceleration Library, RAL)通过采用 BSD 开源许可证将代码正式
    的头像 发表于 07-20 17:31 1598次阅读

    Nvidia 通过开源提升 LLM 推理性能

    加利福尼亚州圣克拉拉——Nvidia通过一个名为TensorRT LLM的新开源软件,将其H100、A100和L4 GPU的大型语言模型(LLM)推理性能提高了一倍。 正如对相同硬件一轮又一轮改进
    的头像 发表于 10-23 16:10 520次阅读

    Vitis加速:广泛且性能优化的开源

    Vitis 统一软件平台包括一组广泛的、性能优化的开源,这些提供了即开即用的加速功能,并且对现有应用实现最小化代码更改或零更改。
    的头像 发表于 10-30 17:23 549次阅读
    Vitis<b class='flag-5'>加速</b><b class='flag-5'>库</b>:广泛且<b class='flag-5'>性能</b>优化的<b class='flag-5'>开源</b><b class='flag-5'>库</b>

    用ARMxy ARM工业控制器自带的1Tops算力实现高性能图像处理

    ARMxy ARM工业控制器凭借其强大的性能、灵活的配置和高度集成的特性,尤其是其内置的1Tops算力NPU(神经网络处理单元),在图像识别领域展现出了良好的
    的头像 发表于 08-20 11:55 159次阅读
    用ARMxy <b class='flag-5'>ARM</b>工业控制器自带的1Tops算力实现高<b class='flag-5'>性能</b><b class='flag-5'>图像</b><b class='flag-5'>处理</b>