Skip to content

说明: 性能白皮书为面向公众的聚合视图;完整的按设备、按算子、按尺寸档的逐行数据提供给已付费用户,详见本页末尾的《完整数据获取》。

ACL Pack 性能白皮书

版本: 1.0.3
时间: 2026 年 5 月(v1.0.3 release 跑测)
测试平台: Android arm64-v8a,4 台旗舰设备跨设备交叉验证
对比基线: OpenCV 4.13.0

摘要

ACL Pack 是面向 Android arm64-v8a 的高性能图像处理库,基于 ARM NEON SIMD intrinsics 深度优化。下方数据来自 v1.0.3 release 回归跑测(4 设备 × 7 尺寸档,见 更新日志),所有 4 台设备在每个尺寸档都输出字节级一致。亚毫秒级算子的逐次耗时会受到移动 OS 正常抖动影响,可能在不同跑测之间小幅波动;头条聚合指标稳定。

  • 163 个可调用入口,覆盖 11 大对标测试类别:滤波、色彩转换、几何变换、算术运算、图像分析、特征检测、空间变换、数学运算 (DFT)、绘图、轮廓、内存工具
  • 4 台 arm64-v8a 旗舰设备 × 7 尺寸档全覆盖 — 四设备输出字节级一致
  • NEON 路径 全 7 尺寸档 × 4 设备合并:72.3% 算子样本(n=6864)快于 OpenCV 4.13.0(>5%),聚合加速 4.72×
  • M tier NEON 峰值 ~78×resize_nn_up4x_1ch on Snapdragon 8 Gen 3 (ACL 0.046 ms vs OCV 3.598 ms);其他代表峰值:inRange_1ch 76.42×、threshold_binary 61.79×、resize_area_up4x_1ch 49.51×、bitwise_and_1ch 29.59×、resize_area_up2x_1ch 28.03×
  • 静态库 ~6 MB(付费 tier 区间 6.2–7.5 MB,Trial 0.24 MB)vs OpenCV 15–50 MB 共享库
  • 零外部运行时依赖 — 加 include 路径即可编译

竞品格局

NEON 算子覆盖对比

ACL Pack 列以 operator_tiers.json 权威清单计数,每行为一个标准文档算子族(同一算子的 CPP 与 NEON 实现合并为 1 行,重载 / 类型特化不单独计数),与下表中各竞品库的口径一致便于对比。总文档算子族 113 个,其中 75 个具备 NEON 实现;其余 (主要分布在 contour、draw、math utility 类) 为 CPP-only。若按客户面可调用入口口径(含多图输入变体、核大小分派、独立交付的 CPP/NEON 对),SDK 共暴露 163 个可调用入口

类别ACL Pack (NEON)ACL Pack 总数ppl.cv (商汤)ARM Compute LibrarySimd Librarylibyuv
滤波16205080
色彩转换71110020+~40
几何变换77454~6
算术运算12148105~8
图像分析818307~3
特征检测16160030
空间变换410500–10
数学 (DFT)550
NEON 总计75113~35~15~50~57

OpenCV 不在本表 — 它是混合架构的 CV 开发平台(scalar + cv::hal 多路径 SIMD + 10+ 外部依赖),与纯 NEON 加速库属于不同类目。本页已与 OpenCV 4.13.0 做了大量速度对比,详见 NEON 聚合顶级 NEON 算子

竞品数字为基于各项目公开头文件 / 文档的外部估算,计数约定与 ACL Pack 或有细微差异。需严格逐算子对比,可邮件 zangotech@163.com 索取原始映射表。

独特差异化

  1. 唯一提供完整 SIFT / SURF / ORB / Harris 特征检测套件的 ARM NEON 库 — ppl.cv 与 ARM Compute Library 均无特征检测算子
  2. 滤波覆盖约为最接近竞品的 3 倍 — 双边、引导、NL-Means、Gabor、StackBlur 在 ppl.cv 中均缺失
  3. 完整的空间变换管线 — warpAffine、warpPerspective、findHomography、remap 全部 NEON 优化
  4. NV21 融合管线 — resize + rotate + 色彩转换一次完成(AI 推理预处理场景专用)

测试方法

硬件(4 台旗舰 arm64-v8a 设备)

SoC角色
MediaTek Dimensity 9400参考基线
MediaTek Dimensity 9500绝对耗时最快
Qualcomm Snapdragon 8 Gen 2绝对耗时最慢
Qualcomm Snapdragon 8 Gen 3中档

尺寸覆盖

覆盖 7 个尺寸档,从 640×480 (移动预览)1920×1280 (主基准 FHD)4096×3072 (4K 压力测试),另含奇数尺寸和极小图像边界案例。本页的规范基准为 FHD 档 (M, 1920×1280)。

测试协议

  1. 预热: 计时前进行 CPU 频率稳定化阶段
  2. 测量: 按次 ms 级计时,ACL 与 OpenCV 4.13.0 使用完全相同的输入
  3. 分类: ±5% 容差带用于 tie / faster / slower 判定
  4. 跨设备验证: 4 台独立设备跑完整矩阵,每个尺寸档的输出 PNG 在 4 台设备间字节级一致
  5. 商业版回归: 4 个商业 tier 构建 (Trial / Starter / Pro / Business) 字节级重现 release 基线

NEON 聚合(全 7 尺寸档,4 设备合并)

头条数字:ACL Pack NEON 路径 vs OpenCV 4.13.0,覆盖完整尺寸矩阵(7 尺寸档 × 4 设备,共 6864 个算子样本)。

指标
快于 OpenCV (>5%)72.3% (4963 / 6864)
持平 (±5%)5.0% (342)
慢于 OpenCV (>5%)22.7% (1559)
聚合加速比 (∑OCV / ∑ACL)4.72×
峰值加速比 (ACL ≥ 0.05 ms)76.4× (inRange_1ch on SD8 Gen 2)

该聚合 baseline 包含少量去噪 / Gabor / 引导滤波 / Scharr 算子(约占 7% 行),这些算子对应行的对照基线是 ACL 自身的 scalar C++ 路径,而非 1:1 的 OpenCV 调用(OpenCV 缺少该算子、放在 opencv_contrib 模块,或采用不同算法类别)。剔除这些行后,算子样本"快于 OpenCV"占比为 72.4% (4632 / 6397) — 按样本计的 faster 比例对 baseline 选择不敏感;∑/∑ 比值更敏感,因为少数大耗时去噪行会主导和值。逐行真值见 完整数据获取

M tier (1920×1280) — 主基准 FHD 档

指标
快于 OpenCV (>5%)70.7%
聚合加速比 (∑OCV / ∑ACL)4.56×

按尺寸档加速曲线

  • 极小图像(E3, 17×17,ROI 小块、缩略图): 4 设备聚合 22–59×。OpenCV 按调用的固定开销在微秒级任务上占主导;ACL 的 header-only 路径几乎无固定开销。
  • 中等尺寸(S 640×480 至 M 1920×1280,真实的移动相机 / 视频场景): 4 设备聚合稳定在 4.4–4.6×
  • 4K (4096×3072): 两个库进入内存带宽饱和区时,聚合加速 4.80×

每设备 × 每算子 × 每尺寸档的完整逐行数据(包含原始 CSV)向已付费用户提供,详见本页末尾的 完整数据获取

顶级 NEON 算子(M Tier)

OperatorSpeedupACL vs SOTA
Resize NN Up 4×up to 78.22×
inRange (Mask)up to 76.42×
Threshold Binaryup to 61.79×
Resize AREA Up 4×up to 49.51×
BitwiseAndup to 29.59×
Resize AREA Up 2×up to 28.03×
Sobel gradXup to 26.03×
Alpha Fusion (α=0.5)up to 22.20×
Gaussian Blur 5×5up to 15.71×
Median Filter 3×3up to 14.99×
normalize MINMAXup to 14.39×
Rotate 180°up to 13.98×
BGR → Labup to 12.86×

柱长以 log(speedup) 为尺度。数字为 4 设备组中的最佳点。

亮点(M tier, 4 设备组中的最佳点):

  • Resize NN 4× 放大 (1ch): Snapdragon 8 Gen 3 上 78.22×、SD8 Gen 2 上 51.58× 加速,覆盖相机管线上采样场景
  • Resize AREA 4× 放大 (1ch): SD8 Gen 2 上 49.51× 加速
  • gammaTransform: LUT 实现击败 OpenCV 的逐像素 pow()
  • bgr2Lab (NEON): 定点 + LUT,SD8 Gen 3 上比 OpenCV 浮点版快 12.86×
  • Threshold / inRange / bitwise (1ch u8): 27–76× — 这些是最廉价的逐像素算子,OCV 的固定开销在此尤为突出

关键场景性能亮点

AI 推理预处理

相机 NV21 / NV12 → 模型输入,一次调用完成:

  • YUV_utilities_float:resize + rotate + YUV→RGB + float 输出全部融合
  • 消除 3 个中间缓冲和 3 次内存遍历

实时视频处理 (1920×1280)

  • Sobel3x3 梯度:1ch u8 上 ~26×
  • Resize NN 4× 放大 (1ch):Snapdragon 8 Gen 3 上 78×、SD8 Gen 2 上 52×(相机管线放大)
  • 逐像素算子 (threshold / inRange / bitwise / LUT):27–76× — OCV 的按调用固定开销在此尤为突出

极小图像管线 (E3, 17×17)

  • ROI 小块处理、缩略图生成、视觉预处理微批:4 设备聚合加速 22–59×(Dimensity 9500 29.6×、SD8 Gen 3 22.7×、SD8 Gen 2 39.3×、Dimensity 9400 58.9×)。OpenCV 在此尺寸下固定调用开销占主导,而 ACL 的 header-only 路径几乎无固定开销。

体积对比

指标ACL PackOpenCV
交付形式Header-only (.hpp) 或静态库 (.a)共享库 (.so) 或静态库 (.a)
源码体积~43,000 LOC~500,000+ LOC
编译后体积 (Android arm64)Trial 0.24 MB / Starter 6.17 MB / Pro 7.12 MB / Business 7.51 MB (.a)15–50 MB (.so, 取决于模块)
编译后体积 (Linux aarch64)Starter 3.94 MB / Pro 4.88 MB / Business 5.28 MB (.a)同左 (.so)
外部依赖无(零依赖)zlib、libpng、libjpeg、libtiff、protobuf 等
集成工作量添加 include 路径CMake find_package 或预编译下载
运行时内存用户管理(零隐式分配)cv::Mat 含隐式分配 + 引用计数

结论

ACL Pack 在 Android ARM64 大多数图像处理算子上相对 OpenCV 提供可测量、可复现的性能优势。覆盖全 7 尺寸档 × 4 设备(共 6864 个算子样本),72.3% 的 NEON 算子样本快于 OpenCV 4.13.0,聚合 ∑OCV/∑ACL = 4.72×;M tier 峰值 78× (resize_nn_up4x_1ch on Snapdragon 8 Gen 3),逐像素算子 76× (inRange_1ch),极小图像 (≤ 32×32) 22–59× — 使 ACL Pack 成为 Android ARM64 应用中性能最强的图像处理选择。付费 tier 静态库约 6–7.5 MB,零外部运行时依赖,跨设备输出字节级一致。

完整数据获取

本页呈现的是面向公众的聚合视图。完整的按设备、按算子、按尺寸档的逐行数据集(包含原始 CSV:全部 4 设备 × 7 尺寸档 × 163 个可调用入口的逐样本计时、精度、误差、通过状态)向已付费用户提供:

  • 邮箱:zangotech@163.com
  • 主题:[Perf Data] + 你的 license ID
  • 1–2 个工作日内回复

试用版用户可邮件索取 1 台设备 × 1 尺寸档的样本数据集,主题 [Trial Perf Sample]

基准数据:v1.0.3 release 回归跑测(2026 年 5 月),4 设备 × 7 尺寸档。