ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

InsightFace C++ SDK:一套人脸检测代码,从服务器编译到 Android 上线的完整路径

InsightFace C++ SDK:一套人脸检测代码,从服务器编译到 Android 上线的完整路径 InsightFace C SDK一套人脸检测代码从服务器编译到 Android 上线的完整路径【免费下载链接】insightfaceState-of-the-art 2D and 3D Face Analysis Project项目地址: https://gitcode.com/GitHub_Trending/in/insightface同一套人脸检测与识别能力要同时跑在 Linux 服务器、Android 手机和 Rockchip 开发板上这是不少 C 团队的真实诉求。我们的做法是把 InsightFace C SDKInspireFace作为多平台部署的底座它覆盖人脸检测、关键点定位、特征比对、活体与质量评估底层推理后端可选 CPU、GPU、NPU上层 API 全平台统一。1. 先定后端不同平台该选哪种推理加速选后端直接决定精度以外的全部指标——帧率、功耗、部署体积。按我们的踩坑经验先对号入座目标设备推荐后端编译开关对应模型资源包Linux NVIDIA GPUGPUTensorRT-DISF_ENABLE_TENSORRTONMegatron_TRTRockchip RV1109/RV1126、RV1103/RV1106、RK356X/RK3588NPURKNN-DISF_ENABLE_RKNNON配合ISF_RK_DEVICE_TYPEGundam_RV1109、Gundam_RV1106、Gundam_RK356X、Gundam_RK3588iPhone / iPadmacOS、iOS 开发板同理ANE / Metal-DISF_ENABLE_APPLE_EXTENSIONON通用包Android / 普通 x86 / 无加速卡设备CPU默认无需额外开关Pikachu移动端/MegatronPC 与服务器一个判断原则设备上有 NPU 就走 NPU有 NVIDIA 卡就走 TensorRT其余一律 CPU 保底——SDK 的 API 层不区分后端换后端只改编译参数。2. 最短上手路径Linux 下 4 条命令跑通这一节解决从零到能调用人脸检测 API的最短路径Android 与嵌入式交叉编译放到后面按需查看。系统要求很轻核心依赖一张表平台工具链Linuxx86_64 / ARMv7 / ARMv8CMake 3.20GCC 4.9 或 Clang 3.9macOSIntel / Apple SiliconXcode 12CMake 3.20AndroidARMv7 / ARMv8NDK 16CMake 3.20最少步骤如下# 1. 克隆项目 git clone https://gitcode.com/GitHub_Trending/in/insightface.git cd insightface/cpp-package/inspireface # 2. 拉取第三方依赖含子模块编译必需 git clone --recurse-submodules https://github.com/tunmx/inspireface-3rdparty.git 3rdparty # 3. 下载模型资源包到 test_res/packMegatron 为 PC/服务器版Pikachu 为移动端轻量版 bash command/download_models_general.sh Megatron # 4. 编译macOS 同理产物在 build/inspireface-linux bash command/build.shCMake 高频选项只列这几个完整清单见 doc/CMake-Option.md选项默认值作用ISF_THIRD_PARTY_DIR3rdparty第三方依赖根目录ISF_BUILD_SHARED_LIBSON产出动态库libInspireFace.soISF_ENABLE_TENSORRTOFF开启 NVIDIA GPU 加速需 TensorRT-10TENSORRT_ROOT/usr/local/TensorRTTensorRT-10 安装路径ISF_ENABLE_RKNNOFF开启 Rockchip NPU 加速ISF_RK_DEVICE_TYPERV1109RV1126Rockchip 目标芯片可选RV1106、RV356XISF_ENABLE_APPLE_EXTENSIONOFFApple 设备的 Metal/ANE 加速需要交叉编译时再看Android 设置ANDROID_NDK路径后执行bash command/build_android.sh产出 arm64-v8a 与 armeabi-v7a 两套 so 到build/inspireface-androidRockchip 以 RV1106 为例设置ARM_CROSS_COMPILE_TOOLCHAIN指向 arm-rockchip830 工具链后执行bash command/build_cross_rv1106_armhf_uclibc.shTensorRT 版本则export TENSORRT_ROOT后执行bash command/build_linux_tensorrt.sh。不想手动配交叉工具链时docker-compose.yml 已备好容器化方案如docker-compose up build-cross-rv1106-armhf-uclibc、build-cross-android、build-tensorrt-cuda12-ubuntu22一条命令出包。3. 一次完整的人脸检测五步调用链这一节把核心 C API 串成最短闭环加载资源包 → 创建会话 → 读图 → 执行检测 → 释放句柄官方样例 cpp/sample/api/ 里每个步骤都有现成参考。#include inspireface.h // 头文件与 herror.h 均在 include/ 下 int main() { HResult ret; // ① 加载模型资源包HFLaunchInspireFace ret HFLaunchInspireFace(test_res/pack); // ② 创建会话开启质量评估口罩检测最多20张脸检测等级160 HOption option HF_ENABLE_QUALITY | HF_ENABLE_MASK_DETECT; HFSession session NULL; ret HFCreateInspireFaceSessionOptional(option, HF_DETECT_MODE_LIGHT_TRACK, 20, 160, -1, session); // ③ 读图并包装成图像流 HFImageBitmap image; ret HFCreateImageBitmapFromFilePath(test.jpg, 3, image); HFImageStream stream; ret HFCreateImageStreamFromImageBitmap(image, HF_CAMERA_ROTATION_0, stream); // ④ 执行人脸检测 HFMultipleFaceData faces; ret HFExecuteFaceTrack(session, stream, faces); printf(detected: %d\n, faces.detectedNum); // ⑤ 释放全部句柄 HFReleaseImageStream(stream); HFReleaseImageBitmap(image); HFReleaseInspireFaceSession(session); return 0; }细节说明会话可选参数通过HFCreateInspireFaceSessionOptional的option位掩码组合质量、口罩、活体HF_ENABLE_LIVENESS、表情等maxDetectNum与detectPixelLevel控制检测上限与输入分辨率。报错时按返回码对照 doc/Error-Feedback-Codes.md例如 251 表示资源包加载失败、252 表示模型加载失败、301 表示设备不支持 CUDA。4. 平台与后端对照一张表看清多平台部署面这一节合并原文分散的平台矩阵部署评审时直接引用。平台架构可用后端典型场景Linuxx86_64CPU / GPUTensorRT、CUDA服务器、门禁后端、工作站LinuxARMv7CPU / NPURV1109、RV1126、RV1103、RV1106嵌入式板卡LinuxARMv8CPU / NPURK3566、RK3568、RK3588边缘设备macOSIntel / Apple SiliconCPU / Metal / ANE桌面端iOSARMCPU / Metal / ANEiPhone、iPad 端上识别AndroidARMv7 / ARMv8CPU手机 App 集成Rockchip 全系另有专用构建脚本build_cross_rk356x_rk3588_aarch64.sh等模型包按芯片区分下载容器化交叉编译见上一节的 docker-compose 提示。5. 提速与排错速查现象与处理性能侧四条可直接落地的参数经验检测输入等级detectPixelLevel从 320 降到 160速度优先场景收益明显可用HFQuerySupportedPixelLevelsForFaceDetection查询当前支持档位。maxDetectNum按业务上限收紧默认 20人数受限场景能省掉多余检测开销。服务器端开 TensorRT检测帧率可提升 3~5 倍模型包必须换成Megatron_TRT。iPhone 上启用 ANEISF_ENABLE_APPLE_EXTENSIONON后检测对齐特征提取整链路低于 2ms。高频问题按现象→处理排编译报 TensorRT not found或运行返回 301/302→ 确认 TensorRT-10、CUDA、cuDNN 已安装且TENSORRT_ROOT指向正确链接阶段还要检查CUDA_TOOLKIT_ROOT_DIR、CUDA_CUDART_LIBRARY两个环境变量实在没有 GPU 环境就-DISF_ENABLE_TENSORRTOFF重编。运行返回 251/252资源或模型加载失败→ pack 包不完整或版本过旧。重新执行bash command/download_models_general.sh对应参数项目处于快速迭代期每次更新代码前先拉一次最新模型包。Android 集成不知道怎么开始→ 设置ANDROID_NDK后跑bash command/build_android.sh拿到 arm64-v8a/armeabi-v7a 两个 so参考 android/ 下的示例工程通过 JNI 调 C API 即可。6. 下一步更多 NPU 与异构设备在路上团队当前的方向是把更多 Rockchip 芯片型号和 TensorRT 版本纳入官方构建更远期的清单里还有华为昇腾、寒木纪思元等国产 NPU 的异构推理适配。项目迭代节奏很快建议每次升级前看一眼官方 README 的 Change Logs并重新拉取模型包——cpp-package/inspireface/README.md 里的日志会随每个版本同步更新。【免费下载链接】insightfaceState-of-the-art 2D and 3D Face Analysis Project项目地址: https://gitcode.com/GitHub_Trending/in/insightface创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表