InsightFace C++ SDK:一套 C API 在 18 种硬件目标上跑通跨平台人脸识别
【免费下载链接】insightfaceState-of-the-art 2D and 3D Face Analysis Project项目地址: https://gitcode.com/GitHub_Trending/in/insightface
InspireFace 是 InsightFace 项目下的 C/C++ 跨平台人脸识别 SDK,覆盖检测、关键点、特征提取与活体的完整链路。同一套会话式 C API,推理后端可落在 CPU(MNN)、NVIDIA TensorRT、Rockchip RKNPU 与 Apple ANE 上,已适配 Linux(x86_64/ARMv7/ARMv8)、macOS(Intel/Apple Silicon)、iOS 与 Android 共 18 个平台架构组合。
5分钟跑通第一次:从 clone 到 Pikachu 示例
最短路径如下,全程在cpp-package/inspireface目录内操作:
git clone https://gitcode.com/GitHub_Trending/in/insightface cd insightface/cpp-package/inspireface # 官方依赖仓库(含 MNN、RKNN 等子模块)克隆到项目根目录的 3rdparty,务必带子模块 git clone --recurse-submodules <inspireface-3rdparty 地址> 3rdparty # 拉取轻量级模型包(边缘端),落到 test_res/pack bash command/download_models_general.sh Pikachu # 默认配置直接可编,产物含 include/inspireface.h 与 lib/libInspireFace.so bash command/build.sh依赖门槛不高:CMake 3.20+、GCC 4.9+ 或 Clang 3.9+,MNN 与 Eigen3 已随 3rdparty 提供。想一步到位,bash ci/quick_test_local.sh会自动下载测试集、开启ISF_BUILD_WITH_TEST=ON编译并运行Test可执行文件。手动跑测试程序则是:
./Test --test_dir test_res --pack Pikachu能力与架构一览:检测、识别、活体与多后端推理矩阵
SDK 对外统一为"C API + 会话(Session)"模型:进程启动时HFLaunchInspireFace加载一次资源包,之后所有能力都在 Session 上按位开关启用。推理层以 MNN 为 CPU 基线引擎,RKNPU、TensorRT、CoreML(Metal/ANE)作为可插拔后端;某后端缺失对应模型时自动回退 CPU,不会直接报错。
支持的能力按用途分组:
- 检测与跟踪:人脸检测、多帧跟踪、姿态估计
- 识别链路:关键点、对齐、特征向量(Embedding)、人脸比对、1:1 识别、Feature Hub 特征库(增删改查 + 万级库检索)
- 业务能力:静默活体、配合式活体、口罩检测、人脸质量评估、表情识别
核心调用链:8 行 C API 完成单图人脸检测
以单图检测为例,核心链路只有一条主线(完整工程见 cpp/sample/api/,含比对、检索、多线程样本):
HFLaunchInspireFace("test_res/pack"); // ① 加载资源包,每进程一次 HOption opt = HF_ENABLE_QUALITY | HF_ENABLE_MASK_DETECT; HFSession session = {0}; HFCreateInspireFaceSessionOptional(opt, HF_DETECT_MODE_ALWAYS_DETECT, 20, 160, -1, &session); // ② 建会话 HFImageBitmap img; HFCreateImageBitmapFromFilePath("face.jpg", 3, &img); HFImageStream stream = {0}; HFCreateImageStreamFromImageBitmap(img, 0, &stream); HFMultipleFaceData faces = {0}; HFExecuteFaceTrack(session, stream, &faces); // ③ 执行,faces.detectedNum 为结果数 HFReleaseImageBitmap(img); HFReleaseImageStream(stream); HFReleaseInspireFaceSession(session); // ④ 释放几个关键参数:HF_DETECT_MODE_ALWAYS_DETECT表示纯图像模式、每帧强制检测而不维护跟踪状态;maxDetectNum=20限制单帧最多输出人数;detectPixelLevel是检测内部输入分辨率档位(160/320/640),档越高漏检越少、耗时越大;opt按位组合可选模块,Session 创建时按需加载对应模型。
平台与后端选型:一条 CMake 命令编译 TensorRT 加速版
支持矩阵(完整 19 行明细见 README):
| 平台 | 架构 | 特殊后端 |
|---|---|---|
| Linux | x86_64 | CPU / CUDA / TensorRT |
| Linux | ARMv7 | RKNPU(RV1109/RV1126、RV1103/RV1106) |
| Linux | ARMv8 | RKNPU(RK3566/RK3568/RK3588) |
| macOS / iOS | Intel、Apple Silicon、ARM | CPU / Metal / ANE |
| Android | ARMv7 / ARMv8 | 另有 RK356X/RK3588 NPU 版 |
后端选择按算力位置定:瑞芯微板卡直接选 RKNPU(配合ISF_ENABLE_RKNN=ON与ISF_RK_DEVICE_TYPE指定型号,需换对应 Gundam 模型包);NVIDIA 服务器选 TensorRT,前提是装好 CUDA 11+、cuDNN 与 TensorRT-10,export TENSORRT_ROOT后执行bash command/build_linux_tensorrt.sh,也可用docker-compose up build-tensorrt-cuda12-ubuntu22免配置交叉编译;Apple 设备开ISF_ENABLE_APPLE_EXTENSION=ON走 Metal/ANE,官方基准在 iPhone 13 上检测 @160 约 0.71ms、MNet 特征提取约 0.85ms(基准报告.md) 持续更新)。
调优要点只有三条:速度吃紧时把detectPixelLevel从 320/640 降到 160,并用maxDetectNum限制人数上限;同一进程共享一个 Session,勿反复创建销毁;HFImageBitmap与HFImageStream用后即释放,项目内已内置全局资源统计可排查泄漏。
踩坑与排障:251 与 301 两个高频错误码
现象:HFLaunchInspireFace返回 251(资源包加载失败)或 252(模型加载失败)。原因:test_res/pack路径为空或文件截断;模型包与后端不匹配(RKNPU 设备上跑了 Megatron CPU 包);或同一进程内二次加载(返回 254)。解决:重新执行command/download_models_general.sh <包名>并确认落盘完整;核对包名与目标后端对应关系(Pikachu/Megatron→CPU,Megatron_TRT→GPU,Gundam 系列→RKNPU);全生命周期只调用一次 Load。
现象:运行 GPU 版报 301(CUDA not supported),或编译期找不到 CUDA/TensorRT。原因:TensorRT-10、CUDA 11+ 未安装,TENSORRT_ROOT未导出,或CUDA_TOOLKIT_ROOT_DIR、CUDA_CUDART_LIBRARY环境变量缺失导致链接失败。解决:配好TENSORRT_ROOT后用官方脚本编译,或直接用build-tensorrt-cuda12-ubuntu22Docker 镜像;确认设备确为 NVIDIA 且驱动正常。全部错误码对照见 错误码表。
现象:找不到 Sample/Test 可执行文件。原因:测试与示例程序受开关控制,ISF_BUILD_WITH_SAMPLE默认开启,ISF_BUILD_WITH_TEST默认关闭;且 Test 依赖test_res/pack存在。解决:配置 CMake 时加-DISF_BUILD_WITH_TEST=ON(选项全表见 CMake-Option.md),或直接用ci/quick_test_local.sh一条脚本完成下载、编译、运行。
收尾
一句话定位:有 C/C++ 集成能力的跨端产品线(门禁、刷脸终端、安防摄像头、移动端 App),想要单一代码库覆盖 CPU/NPU/GPU 的推理部署,InspireFace 是目前 InsightFace 生态里工程化程度最高的出口。模型文件仅限学术用途,商用授权需另行获取。
【免费下载链接】insightfaceState-of-the-art 2D and 3D Face Analysis Project项目地址: https://gitcode.com/GitHub_Trending/in/insightface
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考