InspireFaceInspireFace1.2.4.d3
首页
快速开始
获取和编译
完整示例
  • English
  • 简体中文
GitHub
首页
快速开始
获取和编译
完整示例
  • English
  • 简体中文
GitHub
  • 介绍
  • 快速开始
  • 功能概览
  • 使用指南

    • 架构与生命周期
    • 模型资源包
    • 图像输入与坐标
    • 会话与跟踪
    • 人脸分析
    • 识别与特征库
    • 人脸关键点
    • 活体检测
    • 人脸抓拍
    • 补充 API 示例
  • 语言与平台

    • C API
    • C++
    • Python
    • Android
    • Apple
    • iOS
    • macOS
    • HarmonyOS
  • 获取和编译

    • 概述与下载
    • 源码准备与通用选项
    • Linux
    • macOS
    • Android
    • iOS
    • HarmonyOS
    • NVIDIA TensorRT
    • Rockchip NPU
    • Python 打包
  • 硬件部署

    • ARM
    • NVIDIA TensorRT
    • Rockchip NPU
    • Rockchip 上的 Python
  • InspireCV
  • 完整示例
  • API 功能索引
  • 性能测量
  • 图像处理性能
  • 常见问题

常见问题

先用本地模型文件和一张已知图像跑通,再逐步添加分析选项、跟踪、摄像头和硬件预处理。这样更容易区分库加载问题与图像格式问题。

确认实际加载的 SDK

当前 1.2.4 Python 封装与匹配的原生库可以这样检查:

import inspireface as isf

print("Python package:", isf.__version__)
print("Native SDK:", isf.version())
print("C API level:", isf.c_api_level())
print(isf.diagnostic_info())

同时检查 Python 包版本和原生 SDK 版本。如果设置了 INSPIREFACE_LIBRARY_PATH,也记录这个路径:程序会加载它指定的原生库,替代 wheel 自带的库。

上面的诊断调用使用 SDK 1.2.4。较早的 SDK 可以记录 isf.version() 和加载的库路径。

导入或加载库失败

现象检查内容
wrong architecture、无效 ELF 或不兼容的 Mach-O库架构须与运行进程一致,包括模拟运行或 32 位 Python。
缺少依赖的 .so 或 .dylib检查原生依赖,安装该构建所需的运行库。
更新 Python 文件后提示缺少函数将封装和原生库一起更新到配套的构建。
本机能导入,设备上失败检查 libc 兼容性、目标 ABI 和打包的依赖路径。

Linux 使用 ldd /path/to/libInspireFace.so 查看动态依赖;macOS 使用 otool -L /path/to/libInspireFace.dylib。

在首次导入前设置 INSPIREFACE_LIBRARY_PATH。修改路径后,重新启动进程以加载指定的库。

Apple Framework 或相机接入失败

Symptom排查方向
No such module InspireFaceSwift将同一构建中的两个 XCFramework 都加入 Swift target;检查 Framework Search Paths,以及包内是否有目标平台和架构。
链接器报告 iOS 与 iOS Simulator 不匹配选择模拟器切片。真机 arm64 与模拟器 arm64 属于不同平台目标;使用 XCFramework 让 Xcode 自动选择。
原生符号重复移除重复的 SDK 或推理库。新版 iOS InspireFace.framework 已经包含静态推理依赖。
macOS 启动时找不到 FrameworkSwift 应用需要嵌入并签名两个动态 Framework;检查应用内的 Frameworks 目录和 runpath。命令行程序用 -rpath 指定 Framework 所在目录。
iOS Framework 嵌入或签名失败新版 iOS Framework 为静态库,选择 Do Not Embed;应用 target 的签名配置独立于 SDK 构建。
Pixel buffer 构造返回错误检查实际像素格式、每行字节数和各平面布局。带行填充的 BGRA、平面不连续的 NV12 需先重新排列,再交给借用缓冲区接口。
下一帧之后,先前结果发生变化借用指针被保留到了有效范围之外。叠加显示可复制几何数值;延后处理则保留 snapshot 与对应像素。
封装报告无效句柄检查对象或其所有者是否已经关闭。继续持有已关闭对象的强引用,不会重新打开原生句柄。

链接配置见 iOS 与 macOS。Apple API 指南提供完整的 NSError 和 Swift throws 示例。记录错误时保留 domain、数值 code 和 message。

模型启动失败

如果下载的是 ZIP 压缩包,先解压,再把模型包文件传给 SDK。核对下载文件的大小和校验值。

然后检查模型包与后端:Megatron_TRT 需要 TensorRT 构建,Gundam_* 需要对应的 Rockchip 目标。当前构建可使用 validate_resource_pack(path) 区分资源格式问题与后续会话初始化问题。

应用启动时加载一次模型。加载失败时记录错误,修正资源或环境后再创建会话。

检测不到人脸

“无人脸”是处理成功但返回空列表或零数量的正常结果。先测试清晰、正向的人脸图像,再检查:

  • 像素格式:BGR 缓冲区标为 RGB 时,数组形状可能正确,但通道顺序错误。
  • 旋转:避免先旋转像素,再让 SDK 执行一次相同修正。
  • 输入内存:行数据紧密排列、尺寸有效,缓冲区在整个处理期间保持有效。
  • 人脸大小:远处的小脸可能需要更高的受支持检测级别;最小人脸尺寸过滤也可能移除结果。
  • 模式:不相关的静态图片使用 ALWAYS_DETECT,有序视频帧使用跟踪模式。

将实际提交给 SDK 的缓冲区保存成图像,对照相机预览检查颜色和方向,并确认行间是否有填充字节。

人脸框或关键点在预览中偏移

检查原始帧到显示画面的变换。预览的中心裁剪、缩放、旋转和前置镜像都会影响绘制。在画面中心和各个边缘分别测试。详见坐标处理。

分析结果缺失或始终不变

创建会话时启用所需选项,运行分析流水线时再次请求对应功能。调用成功后,读取已启用选项的结果。

使用当前帧对应的 token,并保留图像。C 中普通跟踪结果和部分 getter 数组是借用缓冲区,需要在后续调用覆盖前复制。各类生命周期见架构说明和 C 接入指南。

识别或检索结果不符合预期

录入时明确选择目标人脸,使用同一模型生成的兼容向量,并在读取检索身份前检查 matched。Eager 搜索可能返回第一条满足阈值的记录;需要最佳匹配时使用 exhaustive 搜索。

识别使用 cosine similarity 阈值。检测置信度、活体置信度和抓拍评分各有自己的判断条件。识别阈值的选择与模型迁移见识别与特征库。

抓拍始终无法就绪

持续送入新帧,保证 ID 和毫秒时间戳递增。检查 reject_reasons 和 metrics.available_filters。人数过滤需要会话能够检测多张人脸,姿态和质量过滤则需要启用对应会话选项。

使用快照时,为每个新帧创建快照,让跟踪次数随视频推进。处理离线视频时,使用视频本身的时间戳。

内存或延迟持续增长

复用会话,及时释放图像流和独立创建的检测快照,只缓存需要的候选图像。避免无限增长的帧队列,也不要默认保存所有特征向量或预览位图。释放工作线程的会话前,先停止提交任务。

测量内存时,区分稳定的分配器或运行时缓存,以及未释放句柄的持续增加。当前 Python API 提供 show_system_resource_statistics() 查看 SDK 资源计数,可以比较多轮创建、使用、释放后的数量。

在哪里关注 SDK 的最新更新?

需要更快的问题响应和 SDK 版本更新,可以关注 develop 仓库。

提供可复现的问题

附上原生版本、封装版本、模型标识、平台与后端、准确错误码,以及最小可复现输入或代码。摄像头问题还需说明提交的格式、尺寸、步长和旋转,并附上可公开的测试图片。

所有问题统一提交到 InspireFace Issues。

编辑此页
最近更新: 2026/9/28 20:17
贡献者: Jingyu
上一页
图像处理性能