ARTICLE DETAIL

资讯详情

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

InspireFace 错误反馈码(Error Feedback Codes)完整指南:错误码表、数值结构与跨语言排查实践

InspireFace 错误反馈码(Error Feedback Codes)完整指南:错误码表、数值结构与跨语言排查实践 InspireFace 错误反馈码Error Feedback Codes完整指南错误码表、数值结构与跨语言排查实践【免费下载链接】insightfaceState-of-the-art 2D and 3D Face Analysis Project项目地址: https://gitcode.com/GitHub_Trending/in/insightface本文以 Error-Feedback-Codes.md 为主体结合 InspireFace 的 C/C 头文件、宏定义、Python 绑定与自动化生成工具系统梳理 InspireFace 全部错误反馈码的取值、分组结构、传播机制与排查方法。读完本文你将能在 C API、C 接口与 Python 绑定中准确识别错误码含义、定位失败模块并理解错误码表为何能跨语言保持一致。InspireFace 是 InsightFace 仓库cpp-package下的跨平台人脸推理引擎覆盖人脸检测、关键点、识别、跟踪与特征管理FeatureHub等能力。在实际运行中任何一步失败都会以整型错误码的形式回传给调用方。由于 InspireFace 同时提供 C API、C API、Python 绑定与 Android JNI 等多语言入口掌握一套统一、稳定的错误码体系是快速定位线上问题的关键能力。一、错误反馈码是什么InspireFace 的 C 接口约定所有 API 调用均返回一个整型状态码HSUCCEED值为0表示成功其余非零值代表各类失败原因。调用方只需与错误码表比对即可判断失败发生在参数校验、会话Session运行、特征库FeatureHub、模型归档Archive加载还是硬件设备CUDA层面无需阅读冗长日志。该错误码体系在2025 年 6 月 15 日经历了一次结构性重构历史版本中的部分遗留码被移除错误码被重新归类整合为更精简的版本。因此本文给出的错误码表以当前仓库为准旧版本项目迁移时需注意码值与含义的对应关系可能发生变化。二、错误反馈码完整总表下表完整收录了 InspireFace 当前版本的全部错误反馈码共 43 个有效码值含成功码。Index 为原文表格序号Comment 为官方注释含义。IndexNameCodeComment1HSUCCEED0Success2HERR_UNKNOWN1Unknown error (1)3HERR_INVALID_PARAM2Invalid parameter (2)4HERR_INVALID_IMAGE_STREAM_HANDLE3Invalid image stream handle (3)5HERR_INVALID_CONTEXT_HANDLE4Invalid context handle (4)6HERR_INVALID_FACE_TOKEN5Invalid face token (5)7HERR_INVALID_FACE_FEATURE6Invalid face feature (6)8HERR_INVALID_FACE_LIST7Invalid face feature list (7)9HERR_INVALID_BUFFER_SIZE8Invalid copy token (8)10HERR_INVALID_IMAGE_STREAM_PARAM9Invalid image param (9)11HERR_INVALID_SERIALIZATION_FAILED10Invalid face serialization failed (10)12HERR_INVALID_DETECTION_INPUT11Failed to modify detector input size (11)13HERR_INVALID_IMAGE_BITMAP_HANDLE12Invalid image bitmap handle (12)14HERR_IMAGE_STREAM_DECODE_FAILED13ImageStream failed to decode the image (13)15HERR_SESS_FUNCTION_UNUSABLE101Function not usable (101)16HERR_SESS_TRACKER_FAILURE102Tracker module not initialized (102)17HERR_SESS_PIPELINE_FAILURE103Pipeline module not initialized (103)18HERR_SESS_INVALID_RESOURCE104Invalid static resource (104)19HERR_SESS_LANDMARK_NUM_NOT_MATCH105The number of input landmark points does not match (105)20HERR_SESS_LANDMARK_NOT_ENABLE106The landmark model is not enabled (106)21HERR_SESS_KEY_POINT_NUM_NOT_MATCH107The number of input key points does not match (107)22HERR_SESS_REC_EXTRACT_FAILURE108Face feature extraction not registered (108)23HERR_SESS_REC_CONTRAST_FEAT_ERR109Incorrect length of feature vector for comparison (109)24HERR_SESS_FACE_DATA_ERROR110Face data parsing (110)25HERR_SESS_FACE_REC_OPTION_ERROR111An optional parameter is incorrect (111)26HERR_FT_HUB_DISABLE201FeatureHub is disabled (201)27HERR_FT_HUB_INSERT_FAILURE202Data insertion error (202)28HERR_FT_HUB_NOT_FOUND_FEATURE203Get face feature error (203)29HERR_ARCHIVE_LOAD_FAILURE251Archive load failure (251)30HERR_ARCHIVE_LOAD_MODEL_FAILURE252Model load failure (252)31HERR_ARCHIVE_FILE_FORMAT_ERROR253The archive format is incorrect (253)32HERR_ARCHIVE_REPETITION_LOAD254Do not reload the model (254)33HERR_ARCHIVE_NOT_LOAD255Model not loaded (255)34HERR_DEVICE_CUDA_NOT_SUPPORT301CUDA not supported (301)35HERR_DEVICE_CUDA_TENSORRT_NOT_SUPPORT302CUDA TensorRT not supported (302)36HERR_DEVICE_CUDA_UNKNOWN_ERROR303CUDA unknown error (303)37HERR_DEVICE_CUDA_DISABLE304CUDA support is disabled (304)38HERR_EXTENSION_ERROR351Extension module error (351)39HERR_EXTENSION_MLMODEL_LOAD_FAILED352MLModel load failed (352)40HERR_EXTENSION_HETERO_MODEL_TAG_ERROR353Incorrect heterogeneous model tag (353)41HERR_EXTENSION_HETERO_REC_HEAD_CONFIG_ERROR354Rec head config error (354)42HERR_EXTENSION_HETERO_MODEL_NOT_MATCH355Heterogeneous model dimensions do not match (355)43HERR_EXTENSION_HETERO_MODEL_NOT_LOADED356Heterogeneous model dimensions not loaded (356)三、错误码的数值结构按模块分组的偏移基址错误码并非无规律递增而是按功能模块划分了数值区间Base区间内部再以Base offset的方式叠加。这一点可以直接从 C 头文件 herror.h 的宏定义中得到确认// Basic error types (1-99) #define HERR_BASIC_BASE 0x0001 // 基础错误 #define HERR_UNKNOWN HERR_BASIC_BASE // Unknown error (1) #define HERR_INVALID_PARAM (HERR_BASIC_BASE 1) // Invalid parameter (2) // Session error types (100-199) #define HERR_SESS_BASE 0x0064 // Session 错误基址 (100) #define HERR_SESS_FUNCTION_UNUSABLE (HERR_SESS_BASE 1) // Function not usable (101) // FeatureHub error types (200-249) #define HERR_FT_HUB_BASE 0x00C8 // FeatureHub 错误基址 (200) // Archive error types (250-299) #define HERR_ARCHIVE_BASE 0x00FA // Archive 错误基址 (250) // Device/Hardware error types (300-349) #define HERR_DEVICE_BASE 0x012C // 硬件错误基址 (300) // Extension module error types (350-549) #define HERR_EXTENSION_BASE 0x015E // 扩展模块错误基址 (350)据此可以归纳出清晰的分组画像区间模块归属典型触发场景0成功码所有 API 正常返回1–99Basic基础/输入参数非法、句柄无效、缓冲大小错误、图像解码失败100–199Session会话跟踪器/流水线未初始化、关键点数量不匹配、特征提取未注册200–249FeatureHub特征库特征库被禁用、插入失败、特征未找到250–299Archive模型归档模型加载失败、归档格式错误、重复加载、未加载300–349Device硬件设备CUDA 不支持、CUDA TensorRT 不支持、CUDA 被禁用350–549Extension扩展模块MLModel 加载失败、异构模型标签/维度不匹配这种“基址 偏移”的设计有双重收益其一码值区间一眼可辨失败模块日志中看到2xx即可锁定 FeatureHub 或 Archive其二为后续模块扩展预留了充足空间如 Extension 区间跨度达 200新增错误码不会与既有码冲突。四、C/C 侧的错误传播与检查机制4.1 统一返回约定InspireFace 的 C API见 inspireface.h与 C 内部模块统一以int32_t返回错误码。内部模块通过 isf_check.h 提供的检查宏快速短路失败路径#define INSPIREFACE_RETURN_IF_ERROR(...) \ do { \ const int32_t _status (__VA_ARGS__); \ if (_status ! HSUCCEED) { \ INSPIRE_LOGE(Error code: %d, _status); \ return _status; \ } \ } while (0)该宏会在子调用失败时立即记录日志并向上层原样透传错误码保证错误码从最深层模块一路传播到最外层调用者而不被吞掉。此外INSPIREFACE_CHECK/INSPIREFACE_CHECK_MSG用于断言式检查失败时输出致命日志。4.2 示例会话创建流程中的逐级校验以官方示例 sample_create_session.c 为例可以看到典型的错误处理范式——每个 API 调用后立即比对HSUCCEED并携带错误码打印日志if (ret ! HSUCCEED) { HFLogPrint(HF_LOG_ERROR, Load Resource error: %d, ret); } ... if (ret ! HSUCCEED) { HFLogPrint(HF_LOG_ERROR, Create InspireFace session error: %d, ret); } ... if (ret ! HSUCCEED) { HFLogPrint(HF_LOG_ERROR, Set minimum face pixel size error: %d, ret); }同一模式也贯穿于 sample_face_track.c、sample_face_comparison.c、sample_load_reload.c 等示例中。单元测试同样依赖错误码做断言例如 test_face_context.cpp 中通过检查返回值是否为HSUCCEED来判断 API 行为是否符合预期。4.3 关键错误码的底层触发点HERR_ARCHIVE_LOAD_FAILURE (251) / HERR_ARCHIVE_LOAD_MODEL_FAILURE (252)模型归档.pak 文件读取或模型解析失败常见于模型文件缺失、路径错误或归档损坏。重复加载同一模型会触发HERR_ARCHIVE_REPETITION_LOAD (254)而未加载即使用会触发HERR_ARCHIVE_NOT_LOAD (255)——这组码在 sample_load_reload.c 中专门演示了加载/重载的正确流程。HERR_SESS_TRACKER_FAILURE (102) / HERR_SESS_PIPELINE_FAILURE (103)对应 face_track_module.cpp 与 face_pipeline_module.cpp 中的跟踪器、流水线模块未完成初始化即被调用。*HERR_DEVICE_CUDA_(301–304)**由 cuda_toolkit.cpp 及 TensorRT/CoreML 推理封装层inference_wrapper_tensorrt.cpp在硬件能力探测阶段返回例如运行环境缺少 CUDA 支持或显式关闭了 CUDA 编译选项。五、Python 绑定中的错误码处理InspireFace 的 Python 包在python/inspireface/modules/下对错误码做了完整封装实现“码值 ↔ 异常类型”的自动映射。5.1 错误码常量herror.pyherror.py 是由 C 头文件自动生成的错误码常量模块头文件注释明确标注“Auto-generated error code definitions from cpp/inspireface/include/inspireface/herror.h”。因此 Python 侧与 C 侧的码值保证一一对应HSUCCEED 0 # Success HERR_INVALID_PARAM 2 # Invalid parameter (2) HERR_SESS_REC_CONTRAST_FEAT_ERR 109 # Incorrect length of feature vector for comparison (109) HERR_ARCHIVE_REPETITION_LOAD 254 # Do not reload the model (254) HERR_DEVICE_CUDA_NOT_SUPPORT 301 # CUDA not supported (301)5.2 异常体系exception.py 与 check_errorexception.py 定义了以InspireFaceError为基类的异常层次并通过ERROR_CODE_MAPPING将错误码归类到不同异常类型InvalidInputError参数/数据格式错误如HERR_INVALID_PARAM、HERR_INVALID_BUFFER_SIZESystemNotReadyError系统未就绪如HERR_ARCHIVE_NOT_LOAD、HERR_SESS_INVALID_RESOURCEProcessingError处理流程错误如HERR_SESS_TRACKER_FAILURE、HERR_IMAGE_STREAM_DECODE_FAILEDResourceError句柄/资源类错误如HERR_INVALID_FACE_TOKEN、HERR_INVALID_IMAGE_BITMAP_HANDLEHardwareError硬件类错误HERR_DEVICE_CUDA_NOT_SUPPORT等FeatureHubError特征库错误HERR_FT_HUB_*系列。核心入口是check_error(error_code, operation, **context)当 C 库返回非零码时它会反查错误名、构造形如[HERR_INVALID_PARAM(2)] xxx failed的异常消息并依据映射表抛出对应子类异常异常对象上还携带error_code、error_name与context属性便于程序化处理try: check_error(ret, CreateSession) except InspireFaceError as e: print(e.error_name, e.error_code) # 例如 HERR_ARCHIVE_NOT_LOAD 255此外模块还内置了validate_image_format、validate_feature_data、validate_session_initialized等便捷校验函数在调用 C 库前先行拦截常见输入错误如图像非三维数组、通道数不为 3/4、特征数据非 float32使 Python 侧的错误信息更友好。六、错误码表的自动化生成与一致性维护错误码分布在 C 头文件、文档与 Python 模块三处为杜绝手工维护导致的三处不一致仓库提供了生成工具generate_error_tabel_to_python.py解析herror.h中[Anchor-Begin]与[Anchor-End]锚点之间的宏定义用正则提取#define行、剥离注释并通过eval计算BASE offset表达式得到真实码值最终输出 Python 格式的错误码表。它跳过_BASE结尾的基址宏只保留具名错误码。output_error_table.py输出错误码对照表便于核对文档与代码的一致性。这也解释了前文观察到的现象——herror.py 与 herror.h 中每个码的名称、数值、注释完全一致因为后者是前者的唯一事实来源。七、常见错误码排查速查场景错误码建议处理首次加载模型即失败251 / 252检查.pak归档路径、文件完整性及格式版本反复创建会话导致失败254避免重复加载同一模型先释放旧会话参考 sample_load_reload.c调用识别接口报 108108确认创建会话时已启用识别并使能对应模型人脸特征比对报 109109核对比对双方特征向量长度是否一致特征库操作报 201/202/203201–203确认 FeatureHub 已开启插入前校验特征格式查询前确认特征已入库跟踪功能失效102确认跟踪器已初始化且已调用HFSetTrackPreviewSize等前置设置CUDA 推理失败301–304检查编译选项与运行环境是否启用 CUDA/TensorRT参考 CMake-Option.md扩展模块/异构模型加载失败351–356核对模型标签tag、识别头配置及特征维度与模型归档是否匹配八、结语InspireFace 的错误反馈码体系是“模块化、可传播、跨语言一致”的典型设计数值上按 Basic / Session / FeatureHub / Archive / Device / Extension 分组并预留扩展区间传播上由 C 层宏逐级透传、示例与测试严格校验消费侧则通过 Python 异常映射与自动化生成工具保证多语言体验一致。无论是排查线上问题、编写健壮的调用代码还是为 InspireFace 扩展新功能本文的完整码表与分组画像都可以直接作为参考依据详细的实现可进一步阅读 Error-Feedback-Codes.md 与 herror.h。【免费下载链接】insightfaceState-of-the-art 2D and 3D Face Analysis Project项目地址: https://gitcode.com/GitHub_Trending/in/insightface创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表