InspireFace 跨平台人脸识别 SDK 基准测试全解析:从 Apple ANE、Rockchip NPU 到 NVIDIA CUDA 的性能实测

发布时间:2026/9/10 6:15:15
InspireFace 跨平台人脸识别 SDK 基准测试全解析:从 Apple ANE、Rockchip NPU 到 NVIDIA CUDA 的性能实测 InspireFace 跨平台人脸识别 SDK 基准测试全解析从 Apple ANE、Rockchip NPU 到 NVIDIA CUDA 的性能实测【免费下载链接】insightfaceState-of-the-art 2D and 3D Face Analysis Project项目地址: https://gitcode.com/GitHub_Trending/in/insightface本篇技术指南围绕 InspireFace位于本仓库cpp-package/inspireface目录下的跨平台人脸识别 SDK的官方基准测试文档展开完整解读其在不同硬件平台Apple Neural Engine、Intel CPU、Rockchip NPU、NVIDIA GPU上的检测、跟踪、特征提取、人脸比对与特征库检索实测数据并结合仓库内测试源码cpp/test子工程剖析这些数据是如何被测出来的帮助读者理解 InspireFace 各模型包与推理后端的能力边界并掌握在本地复现基准测试的完整方法。一、基准测试概览模型包、推理后端与测试口径InspireFace 是使用 C/C 开发、支持 CPU / GPU / NPU 多种推理后端的跨平台人脸识别 SDK。为了向开发者呈现不同硬件上的真实运行表现仓库维护了一份持续更新的基准测试记录文档 Benchmark-Remark(Updating).md.md)文档开头即说明The benchmark tests will be continuously updated基准测试将持续更新。基准测试中出现的名称并非产品代号而是对应着不同的模型包Model Pack。在 download_models_general.sh 中可以看到完整的模型包清单与下载逻辑模型包名对应平台/后端Megatron通用高精度模型包配合 CUDA 等高性能后端Pikachu通用轻量模型包Gundam_RV1109Rockchip RV1109/RV1126RKNPUGundam_RV1106Rockchip RV1103/RV1106RKNPU2Gundam_RK356XRockchip RK3566/RK3568RKNPU2Gundam_RK3588Rockchip RK3588RKNPU2Megatron_TRTNVIDIA GPUTensorRT/CUDA该脚本支持通过参数单独下载某个模型包例如bash command/download_models_general.sh Pikachu无参数时则下载全部 7 个模型包到test_res/pack/目录。文档末尾特别注明The test results are all calculated by the test programs in the cpp/test subproject所有测试结果均由cpp/test子工程中的测试程序计算得出即基准数据并非估算值而是由仓库自带测试程序在统一 1000 次循环Loops 1000口径下实测的平均耗时。从 enviro.h 可以看到测试环境的默认配置默认模型包名为Pikachu测试资源目录为test_res。二、Apple ANECoreML后端基准数据当在 Apple 设备上启用ISF_ENABLE_APPLE_EXTENSION参见 CMake-Option.md后SDK 可将部分模型切换到 Apple 设备上的 Metal 与 ANEApple Neural Engine神经网络加速推理。下述两组数据的推理后端均为CoreML。2.1 Pikachu_AppleMac mini 2023Apple M2FP32BenchmarkLoopsTotal TimeAverage TimeFace Detect1601000553 ms0.53 msFace Detect32010001635ms1.64msFace Detect64010005903ms5.90msFace Comparison10001ms0.001ms2.2 Megatron_AppleiPhone 13Apple A15FP32BenchmarkLoopsTotal TimeAverage TimeFace Detect1601000711 ms0.71 msFace Detect1921000832ms0.83msFace Detect2561000931ms0.92msFace Detect32010001324ms1.32msFace Detect64010003881ms3.88msFace Extract(MNet)1000853ms0.85msFace Extract(R50)10003856ms3.86ms2.3 Megatron_AppleMac mini 2023Apple M2FP32BenchmarkLoopsTotal TimeAverage TimeFace Detect1601000414 ms0.45 msFace Detect1921000574ms0.57msFace Detect2561000769ms0.77msFace Detect32010001073ms1.07msFace Detect64010003743ms3.74msFace Extract(MNet)1000573ms0.57msFace Extract(R50)10003527ms3.53ms观察要点Face DetectN表示以 N 像素为检测输入尺寸PixLevel的人脸检测耗时。在 ANE 加持下iPhone 13A15上 160 像素输入的人脸检测平均仅0.71ms即便提升到 640 像素输入也只有3.88msMac mini 2023M2上更是低至 0.45ms160与 3.74ms640。特征提取项中的MNet与R50对应不同规模的识别骨干网络MNet 更轻量iPhone 13 上 0.85msR50 精度潜力更高但耗时约为前者的 4~5 倍iPhone 13 上 3.86ms。这也印证了仓库 README.md 变更日志中的描述在 iPhone 13 上借助 ANE人脸检测 对齐 特征提取的完整流程可控制在 2ms 以内。三、纯 CPU 后端基准数据Pikachu 模型包Device: MacBook Pro 16-inch 20192.6 GHz Intel Core i7FP32BenchmarkLoopsTotal TimeAverage TimeFace Detect16010004170.91578 ms4.1709 msFace Detect32010008493.06583 ms8.4893 msFace Detect640100025808.39749 ms25.808 msFace Light-Track10001957.73 ms1.9577 msFace alignment Extract10006139.67 ms6.1397 msFace Comparison10000.24ms0.0002msSearch Face from 1k100072.39ms0.07msSearch Face from 5k1000364.21ms0.36msSearch Face from 10k10001193.26ms1.19ms观察要点这是纯 CPU 场景下的性能基线。Face Light-Track轻量跟踪模式平均 1.96ms明显快于同尺寸下的逐帧全量检测Search Face from Nk指在包含 1k / 5k / 10k 条人脸特征的 Feature Hub 中执行一次检索的平均耗时数据呈近似线性增长0.07ms → 0.36ms → 1.19ms反映了基于特征向量的暴力检索Exhaustive Search在不同库容量下的开销特征。四、Rockchip NPU 后端基准数据Gundam 系列Rockchip 平台通过ISF_ENABLE_RKNN启用 NPU 推理并结合ISF_RK_DEVICE_TYPE支持RV1109RV1126、RV1106、RV356X与ISF_RK_COMPILER_TYPE等 CMake 选项进行交叉编译详见 build_cross_rv1106_armhf_uclibc.sh、build_cross_rk356x_rk3588_aarch64.sh 等构建脚本。以下数据均基于INT8量化模型。4.1 Gundam_RV1109RV1126RKNPUINT8BenchmarkLoopsTotal TimeAverage TimeFace Detect160100017342.88616ms17.34289msFace Detect320100022638.11865ms22.63812msFace Detect640100039745.28562ms39.74529msFace Light-Track10008858.03802ms8.85804msFace alignment Extract100042352.03367ms42.35203msFace Comparison10001.30754ms0.00131msSearch Face from 1k10003198.13874ms3.19814msSearch Face from 5k100015745.00533ms15.74501msSearch Face from 10k100031267.2301ms31.26723ms4.2 Gundam_RV1106RV1106RKNPU2INT8BenchmarkLoopsTotal TimeAverage TimeFace Detect160100023776ms23.78msFace Detect320100033310ms33.31msFace Detect640100058631ms58.63msFace Light-Track100015642ms15.64msFace alignment Extract100015178ms15.18msFace Comparison100023ms0.023us4.3 Gundam_RK356XRK3568RKNPU2INT8BenchmarkLoopsTotal TimeAverage TimeFace Detect160100016946ms16.95msFace Detect320100025108ms25.11msFace Detect640100068778ms68.78msFace Light-Track100011215ms11.22msFace alignment Extract10009070ms9.07msFace Comparison10009ms0.009ms观察要点三款 Rockchip 芯片均为嵌入式场景设计检测耗时处于十几到几十毫秒量级其中 RK3568 与 RV1126 在 160 像素输入下耗时接近约 17msRV1106 稍高约 24ms。值得注意的是Face Comparison纯特征向量余弦比对在 NPU 平台上同样达到亚毫秒级0.001ms~0.009ms 量级RV1106 行中原文档记录的 0.023us 应视为单位笔误说明比对本身是纯计算密集型操作、几乎不依赖 NPU。此外RKNPU2 设备还可通过ISF_ENABLE_RGA开启 RGA 图像加速目前仅 RKNPU2 设备支持参见 CMake-Option.md进一步提升图像预处理链路效率。五、NVIDIA CUDA / TensorRT 后端基准数据Device: NVIDIA RTX3060 12GFP16BenchmarkLoopsTotal TimeAverage TimeFace Detect1601000911ms0.91msFace Detect32010002374ms2.37msFace Detect64010008685ms8.685msFace Light-Track1000621ms0.62msFace alignment Extract10001009ms1.01msFace Comparison10001ms0.001ms观察要点Megatron_TRT对应 NVIDIA GPU 上的 TensorRT 后端。根据 CMake-Option.md启用该后端需要ISF_ENABLE_TENSORRTON且要求 Linux 环境、NVIDIA 设备、已安装 CUDA 与TensorRT-10默认安装路径/usr/local/TensorRT可通过TENSORRT_ROOT指定。在 RTX3060FP16上检测 160 平均仅 0.91ms轻量跟踪模式更是低至 0.62ms对齐 特征提取整体 1.01ms具备实时视频流处理能力。CUDA 相关错误可通过 Error-Feedback-Codes.md 中的HERR_DEVICE_CUDA_*系列错误码301~304进行排查。六、基准数据从何而来cpp/test测试程序源码剖析所有上述平均耗时都由cpp/test子工程的测试程序计算得出核心实现位于 test_benchmark.cpp且整个文件由#ifdef ISF_ENABLE_BENCHMARK宏包裹——意味着只有开启 Benchmark 编译选项才会编译这些基准测试用例。6.1 人脸检测基准Face Detect检测基准在test_BenchmarkFaceDetect用例中按 160 / 320 / 640 三个输入尺寸分别测试其核心逻辑完全一致const int loop 1000; auto pixLevel 160; // 检测输入尺寸 HFSessionCustomParameter parameter {0}; HFDetectMode detMode HF_DETECT_MODE_ALWAYS_DETECT; HFSession session; ret HFCreateInspireFaceSession(parameter, detMode, 3, pixLevel, -1, session); ... inspire::SpendTimer timeSpend(Face Detect160); for (size_t i 0; i loop; i) { timeSpend.Start(); HFMultipleFaceData multipleFaceData {0}; ret HFExecuteFaceTrack(session, imgHandle, multipleFaceData); REQUIRE(ret HSUCCEED); REQUIRE(multipleFaceData.detectedNum 1); timeSpend.Stop(); } std::cout timeSpend std::endl;关键点HFCreateInspireFaceSession的第 4 个参数即文档表格中的N检测 PixLevel通过创建不同尺寸的会话得到 160/320/640 三组数据测试使用HF_DETECT_MODE_ALWAYS_DETECT始终全量检测模式每轮通过HFExecuteFaceTrack执行一次检测并用inspire::SpendTimer计时循环 1000 次后输出总计与平均耗时测试图片来自test_res/data/bulk/kun.jpg并通过断言detectedNum 1保证每轮都真实检测到了人脸避免无效计时。6.2 轻量跟踪基准Face Light-Tracktest_BenchmarkFaceTrack与检测基准的唯一区别在于将检测模式换为HF_DETECT_MODE_LIGHT_TRACK其余流程PixLevel160、循环 1000 次、SpendTimer计时完全一致。这也解释了为何表格中Face Light-Track的耗时显著低于同尺寸的Face Detect——跟踪模式复用上一帧的跟踪结果避免了对每一帧做全量检测。6.3 对齐 特征提取基准Face alignment Extracttest_BenchmarkFaceExtractWithAlign使用HFCreateInspireFaceSessionOptional(HF_ENABLE_FACE_RECOGNITION, ...)创建启用了人脸识别功能的会话先执行一次HFExecuteFaceTrack得到人脸框随后在循环中重复执行跟踪内部包含对齐与特征提取管线并计时。文档表格中 MNet / R50 的差异即来源于会话加载的识别模型不同。6.4 人脸比对基准Face Comparisontest_BenchmarkFaceComparison先在enable_recognition 1的会话中对两张图data/bulk/woman.png与data/bulk/woman_search.jpeg分别执行HFFaceFeatureExtractCpy提取特征然后在 1000 次循环中重复调用HFFaceComparison(featureZy, featureZyQuery, compRes)计算相似度并计时。由于比对仅涉及两段定长特征向量的计算因此各平台结果都处于微秒级。6.5 特征库检索基准Search Face from Nktest_BenchmarkFaceHubSearchPersistence与test_BenchmarkFaceHubSearchMemory两个用例分别覆盖持久化与纯内存两种模式各含 1k / 5k / 10k 三个库容量的 SECTION。其流程为通过HFFeatureHubDataEnable初始化 Feature Hub配置primaryKeyMode HF_PK_AUTO_INCREMENT、searchMode HF_SEARCH_MODE_EXHAUSTIVE穷举检索、searchThreshold 0.48f用GenerateRandomFeature(featureLength)生成 1000/5000/10000 条随机特征并逐条HFFeatureHubInsertFeature入库用SimulateSimilarVector构造目标特征的相似向量循环 1000 次调用HFFeatureHubFaceSearch检索并断言返回的mostSimilar.id命中预置目标如 1k 场景的 800 号且相似度confidence 0.88f。该用例同时验证了 Feature Hub 检索功能的正确性与性能检索耗时随库容量近似线性增长与 CPU 平台表格中 1k→5k→10k 的数据趋势吻合。七、在本地复现基准测试7.1 通过 CI 脚本一键复现仓库提供了开箱即用的基准复现脚本 quick_test_linux_x86_usual.sh其核心步骤为# 1. 下载 Pikachu 模型包 bash command/download_models_general.sh Pikachu # 2. 配置 CMake开启测试与 Benchmark cmake -DCMAKE_BUILD_TYPERelease \ -DCMAKE_POLICY_VERSION_MINIMUM3.5 \ -DISF_BUILD_WITH_SAMPLEOFF \ -DISF_BUILD_WITH_TESTON \ -DISF_ENABLE_BENCHMARKON \ -DISF_ENABLE_USE_LFW_DATAOFF \ -DISF_ENABLE_TEST_EVALUATIONOFF \ -DISF_BUILD_SHARED_LIBSOFF ../../ make -j4 # 3. 运行测试可执行程序输出各 Benchmark 用例结果 ./test/Test脚本将test_res目录软链接到构建目录下确保测试程序能通过GET_DATA(...)找到测试图片与模型包。需要注意必须开启ISF_ENABLE_BENCHMARKON否则test_benchmark.cpp中的用例不会参与编译整个文件被#ifdef ISF_ENABLE_BENCHMARK包裹默认测试环境使用Pikachu模型包见 enviro.h 中packName{Pikachu}的默认值如需复现 Megatron / Gundam 系列数据需按目标平台下载对应模型包并相应调整测试资源ISF_BUILD_SHARED_LIBSOFF用于静态链接便于直接运行测试程序。7.2 按平台选择编译配置基准文档覆盖了四个典型的硬件后端对应的构建入口与 CMake 选项总结如下平台/后端构建脚本参考关键 CMake 选项Apple ANE / MetalCoreMLbuild_macos_coreml_arm64.sh、build_ios_coreml.shISF_ENABLE_APPLE_EXTENSIONONIntel CPUbuild_linux_ubuntu18.sh默认配置即可Rockchip NPUbuild_cross_rv1106_armhf_uclibc.sh、build_cross_rk356x_rk3588_aarch64.shISF_ENABLE_RKNNON、ISF_RK_DEVICE_TYPE、ISF_RK_COMPILER_TYPE、ISF_ENABLE_RGA可选NVIDIA GPUTensorRTbuild_linux_tensorrt.shISF_ENABLE_TENSORRTON、TENSORRT_ROOT完整参数说明默认值、含义、适用前提参见 CMake-Option.md例如ISF_ENABLE_USE_LFW_DATA用于测试用例加载 LFW 数据、ISF_ENABLE_TEST_EVALUATION需与前者配合开启评估功能均与基准测试相互独立。此外Python 侧用户可通过 resource.py 中的ResourceManager以 ModelScope 或 OSS 渠道拉取Gundam_RV1106、Megatron、Pikachu等模型包便于在对应平台上准备运行资源。八、如何正确解读这份基准数据综合五个平台的实测数据可以得出以下几点基于文档事实的观察而非性能排名结论后端差异决定了量级差异同一检测任务在 Apple ANE0.45ms160、NVIDIA TensorRT0.91ms160、Intel CPU4.17ms160与 Rockchip NPU17~24ms160之间呈现明显的数量级梯度这与各平台的算力定位移动端 NPU / 独立 GPU / 嵌入式 NPU一致输入尺寸对检测耗时的放大效应从 160 提升到 640各平台耗时普遍增长 5~10 倍如 CPU 上 4.17ms→25.81ms开发者应根据实际分辨率需求选择 PixLevel 以平衡精度与帧率跟踪模式是嵌入式实时化的关键手段Light-Track 相比 Always Detect 可显著降低单帧开销如 CPU 上 1.96ms vs 4.17ms160适合视频流场景比对与检索是独立于检测管线的开销Face Comparison在全部平台均为微秒级而Search Face耗时随库容量线性增长大规模库场景需关注 Feature Hub 的检索模式配置如HF_SEARCH_MODE_EXHAUSTIVE与阈值searchThreshold。需要说明的适用前提与局限本组数据由仓库cpp/test子工程测试程序实测得出其测试样本、循环次数与计时方式固定1000 次循环取平均实际部署表现会因输入图像内容、并发会话数量、系统负载、模型包版本与编译优化选项而有所差异同时文档标注为 Updating官方会持续补充新的平台数据建议以 Benchmark-Remark(Updating).md.md) 当前版本为准。若测试过程中遇到运行错误可对照 Error-Feedback-Codes.md 中的错误码表如HERR_DEVICE_CUDA_NOT_SUPPORT301、HERR_ARCHIVE_LOAD_MODEL_FAILURE252 等快速定位问题类型。【免费下载链接】insightfaceState-of-the-art 2D and 3D Face Analysis Project项目地址: https://gitcode.com/GitHub_Trending/in/insightface创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考