{ "name": "XFeat", "id": "ku59qr0kts00", "description": "XFeat是用于特征点检测与匹配的轻量级局部特征模型,可输出局部描述子、关键点分类图和可靠性热力图,支持基于HPatches数据集进行单应性估计评估。", "category": "计算机视觉", "framework": [ "PyTorch" ], "supportOs": [ "Linux" ], "computingPower": [ "Hi3516CV610" ], "tags": [ "特征点检测" ], "repositoryUrl": "https://gitcode.com/HiSpark/modelzoo/tree/master/samples/built-in/point/Xfeat/README.md", "licenseUrl": "https://github.com/verlab/accelerated_features/blob/main/LICENSE", "downloads": [ { "fileName": "xfeat.om", "variants": [ "编译模型 / OM 元数据 / A8W8" ] }, { "fileName": "xfeat_sim.onnx", "variants": [ "源模型 / 源模型下载" ] } ], "apiDetail": { "createdBy": 139761718403620, "creationDate": "2026-09-14 11:11:18", "creationUserCN": "bazinga", "lastUpdatedBy": null, "lastUpdateDate": "2026-09-15 15:27:11", "lastUpdateUserCN": "bazinga", "rowIdx": -1, "id": "ku59qr0kts00", "name": "XFeat", "isBeta": 0, "betaVersionDesc": "", "description": "XFeat是用于特征点检测与匹配的轻量级局部特征模型,可输出局部描述子、关键点分类图和可靠性热力图,支持基于HPatches数据集进行单应性估计评估。", "parentId": "ku59qr0kts00", "coverImageId": 1767208963342338, "coverImageUrl": "https://openxinhuo-board-image.obs.cn-east-3.myhuaweicloud.com/1767208963342338%2Ftest_538332484_huge_vis_%E4%B8%8A%E6%9E%B6.jpg", "modelEffectId": null, "modelEffectUrl": "", "computerVersion": [ "特征点检测" ], "naturalLanguageProcess": [], "multimodal": [], "video": [], "framework": [ "PyTorch" ], "modelRepository": "https://gitcode.com/HiSpark/modelzoo/tree/master/samples/built-in/point/Xfeat/README.md", "originModel": [ { "id": "1767207520501763", "name": "xfeat_sim.onnx", "url": null, "size": "2730070" } ], "originModelLink": "", "dataSet": "https://www.modelscope.cn/datasets/AdamShyly/HPatches/files", "modelLicense": "https://github.com/verlab/accelerated_features/blob/main/LICENSE", "detailParams": [ { "name": "输入", "value": "640 x 480" }, { "name": "参数量", "value": "0.66M" }, { "name": "计算量", "value": "2.66 GFLOPs" } ], "quickStart": { "url": "https://gitcode.com/HiSpark/modelzoo/tree/master/samples/built-in/point/Xfeat", "markDownUrl": "", "developLanguage": [ { "language": "C++", "context": "{\"ops\":[{\"insert\":\"XFeat 可以通过以下代码完成快速推理,该代码仅展示主要流程,完整实现参考src/main.cpp文件和readme\"},{\"attributes\":{\"blockquote\":true},\"insert\":\"\\n\"},{\"insert\":\"#include \"},{\"attributes\":{\"code-block\":\"plain\"},\"insert\":\"\\n\"},{\"insert\":\"#include \\\"log.h\\\"\"},{\"attributes\":{\"code-block\":\"plain\"},\"insert\":\"\\n\"},{\"insert\":\"#include \\\"model.h\\\"\"},{\"attributes\":{\"code-block\":\"plain\"},\"insert\":\"\\n\"},{\"insert\":\"#include \\\"utils.h\\\"\"},{\"attributes\":{\"code-block\":\"plain\"},\"insert\":\"\\n\"},{\"insert\":\"#include \\\"xfeat_process.h\\\"\"},{\"attributes\":{\"code-block\":\"plain\"},\"insert\":\"\\n\\n\"},{\"insert\":\"using namespace Infer;\"},{\"attributes\":{\"code-block\":\"plain\"},\"insert\":\"\\n\\n\"},{\"insert\":\"int main(int argc, char *argv[])\"},{\"attributes\":{\"code-block\":\"plain\"},\"insert\":\"\\n\"},{\"insert\":\"{\"},{\"attributes\":{\"code-block\":\"plain\"},\"insert\":\"\\n\"},{\"insert\":\"    InferParam inferParam;\"},{\"attributes\":{\"code-block\":\"plain\"},\"insert\":\"\\n\"},{\"insert\":\"    if (!ParseParamFromCmd(argc, argv, inferParam)) {\"},{\"attributes\":{\"code-block\":\"plain\"},\"insert\":\"\\n\"},{\"insert\":\"        LOG(ERROR) << \\\"fail to parse cmd\\\";\"},{\"attributes\":{\"code-block\":\"plain\"},\"insert\":\"\\n\"},{\"insert\":\"        return -1;\"},{\"attributes\":{\"code-block\":\"plain\"},\"insert\":\"\\n\"},{\"insert\":\"    }\"},{\"attributes\":{\"code-block\":\"plain\"},\"insert\":\"\\n\"},{\"insert\":\"    XFeatParam cfgParam;\"},{\"attributes\":{\"code-block\":\"plain\"},\"insert\":\"\\n\"},{\"insert\":\"    if (cfgParam.InitParam(\\\"../data/cfg.txt\\\") != 0) {\"},{\"attributes\":{\"code-block\":\"plain\"},\"insert\":\"\\n\"},{\"insert\":\"        LOG(ERROR) << \\\"fail to parse cfg param\\\";\"},{\"attributes\":{\"code-block\":\"plain\"},\"insert\":\"\\n\"},{\"insert\":\"        return -1;\"},{\"attributes\":{\"code-block\":\"plain\"},\"insert\":\"\\n\"},{\"insert\":\"    }\"},{\"attributes\":{\"code-block\":\"plain\"},\"insert\":\"\\n\"},{\"insert\":\"    if (EnvInit(inferParam.aclConfigPath) != 0) {\"},{\"attributes\":{\"code-block\":\"plain\"},\"insert\":\"\\n\"},{\"insert\":\"        LOG(ERROR) << \\\"fail to init env\\\";\"},{\"attributes\":{\"code-block\":\"plain\"},\"insert\":\"\\n\"},{\"insert\":\"        return -1;\"},{\"attributes\":{\"code-block\":\"plain\"},\"insert\":\"\\n\"},{\"insert\":\"    }\"},{\"attributes\":{\"code-block\":\"plain\"},\"insert\":\"\\n\"},{\"insert\":\"    std::unique_ptr model = std::make_unique();\"},{\"attributes\":{\"code-block\":\"plain\"},\"insert\":\"\\n\"},{\"insert\":\"    if (model->Load(inferParam.omModelPath) != 0) {\"},{\"attributes\":{\"code-block\":\"plain\"},\"insert\":\"\\n\"},{\"insert\":\"        LOG(ERROR) << \\\"fail to load model\\\";\"},{\"attributes\":{\"code-block\":\"plain\"},\"insert\":\"\\n\"},{\"insert\":\"        EnvDeinit();\"},{\"attributes\":{\"code-block\":\"plain\"},\"insert\":\"\\n\"},{\"insert\":\"        return -1;\"},{\"attributes\":{\"code-block\":\"plain\"},\"insert\":\"\\n\"},{\"insert\":\"    }\"},{\"attributes\":{\"code-block\":\"plain\"},\"insert\":\"\\n\"},{\"insert\":\"    XFeatProcess processFunc;\"},{\"attributes\":{\"code-block\":\"plain\"},\"insert\":\"\\n\"},{\"insert\":\"    model->SetProcessFunc(processFunc);\"},{\"attributes\":{\"code-block\":\"plain\"},\"insert\":\"\\n\"},{\"insert\":\"    std::any param = cfgParam;\"},{\"attributes\":{\"code-block\":\"plain\"},\"insert\":\"\\n\"},{\"insert\":\"    auto ret = model->Infer(inferParam.imglistPath, JsonFile, std::ref(param));\"},{\"attributes\":{\"code-block\":\"plain\"},\"insert\":\"\\n\"},{\"insert\":\"    if (ret.empty()) {\"},{\"attributes\":{\"code-block\":\"plain\"},\"insert\":\"\\n\"},{\"insert\":\"        LOG(ERROR) << \\\"fail to infer model\\\";\"},{\"attributes\":{\"code-block\":\"plain\"},\"insert\":\"\\n\"},{\"insert\":\"        model->Unload();\"},{\"attributes\":{\"code-block\":\"plain\"},\"insert\":\"\\n\"},{\"insert\":\"        EnvDeinit();\"},{\"attributes\":{\"code-block\":\"plain\"},\"insert\":\"\\n\"},{\"insert\":\"        return -1;\"},{\"attributes\":{\"code-block\":\"plain\"},\"insert\":\"\\n\"},{\"insert\":\"    }\"},{\"attributes\":{\"code-block\":\"plain\"},\"insert\":\"\\n\"},{\"insert\":\"    ret.clear();\"},{\"attributes\":{\"code-block\":\"plain\"},\"insert\":\"\\n\"},{\"insert\":\"    ret.shrink_to_fit();\"},{\"attributes\":{\"code-block\":\"plain\"},\"insert\":\"\\n\"},{\"insert\":\"    if (model->Unload() != 0) {\"},{\"attributes\":{\"code-block\":\"plain\"},\"insert\":\"\\n\"},{\"insert\":\"        LOG(ERROR) << \\\"fail to unload model\\\";\"},{\"attributes\":{\"code-block\":\"plain\"},\"insert\":\"\\n\"},{\"insert\":\"        EnvDeinit();\"},{\"attributes\":{\"code-block\":\"plain\"},\"insert\":\"\\n\"},{\"insert\":\"        return -1;\"},{\"attributes\":{\"code-block\":\"plain\"},\"insert\":\"\\n\"},{\"insert\":\"    }\"},{\"attributes\":{\"code-block\":\"plain\"},\"insert\":\"\\n\"},{\"insert\":\"    EnvDeinit();\"},{\"attributes\":{\"code-block\":\"plain\"},\"insert\":\"\\n\"},{\"insert\":\"    return 0;\"},{\"attributes\":{\"code-block\":\"plain\"},\"insert\":\"\\n\"},{\"insert\":\"}\"},{\"attributes\":{\"code-block\":\"plain\"},\"insert\":\"\\n\"},{\"attributes\":{\"line-height\":\"1.6\",\"color\":\"#40485b\",\"size\":\"16px\",\"background\":\"#ffffff\"},\"insert\":\"备注:上述C++代码依赖的动态库与头文件位于\"},{\"attributes\":{\"line-height\":\"1.6\",\"color\":\"#095eab\",\"size\":\"16px\",\"background\":\"transparent\",\"link\":\"https://gitcode.com/HiSpark/modelzoo/tree/master/samples/common\"},\"insert\":\"/samples/common\"},{\"attributes\":{\"line-height\":\"1.6\",\"color\":\"#40485b\",\"size\":\"16px\",\"background\":\"#ffffff\"},\"insert\":\"目录下,编译相关配置参考\"},{\"attributes\":{\"line-height\":\"1.6\",\"color\":\"#095eab\",\"size\":\"16px\",\"background\":\"transparent\",\"link\":\"https://gitcode.com/HiSpark/modelzoo/blob/master/samples/built-in/point/Xfeat/src/CMakeLists.txt\"},\"insert\":\"CMakeLists.txt\"},{\"attributes\":{\"line-height\":\"1.6\",\"color\":\"#40485b\",\"size\":\"16px\",\"background\":\"#ffffff\"},\"insert\":\"。\"},{\"attributes\":{\"blockquote\":true},\"insert\":\"\\n\"},{\"insert\":\"\\n\"}]}" } ] }, "status": "released", "currentHandler": "", "currentHandlerName": "", "jsonPath": "", "modelAdaptor": [ { "createdBy": null, "creationDate": null, "creationUserCN": null, "lastUpdatedBy": null, "lastUpdateDate": null, "lastUpdateUserCN": null, "rowIdx": -1, "id": "jkjs2gdsi000", "name": "Hi3516CV610", "modelId": "ku59qr0kts00", "modelName": "XFeat", "supportNames": [ "A8W8" ], "toolkit": [ { "name": "SDK", "url": "https://gitcode.com/HiSpark/Hi3516CV610/tree/tag_V2.0.0_Beta", "desc": "稳定、易用的设计;支撑客户快速产品量产", "imgId": "sdk" } ], "supportOs": [ "Linux" ], "supportQuantify": [ { "createdBy": 139761718403620, "creationDate": "2026-09-14 14:47:12", "creationUserCN": "bazinga", "lastUpdatedBy": 139761718403620, "lastUpdateDate": "2026-09-14 14:47:12", "lastUpdateUserCN": "bazinga", "rowIdx": -1, "id": "ku6r8758ts00", "name": "A8W8", "computingId": "jkjs2gdsi000", "computingName": "Hi3516CV610", "omOfflineModelUrl": null, "omOfflineModelId": null, "omOfflineModelSize": null, "omOfflineModelName": null, "omOfflineModel": [ { "id": "1767208244019201", "name": "xfeat.om", "url": null, "size": "2142553" } ], "omOfflineModelLink": "", "releaseTime": "2026-09-14", "boardOs": "Linux", "modelLicense": "https://gitcode.com/HiSpark/modelzoo/tree/master/samples/built-in/point/Xfeat/LICENSE", "modelPerformance": [ { "performanceValue": "87.88", "unit": "耗时(ms)", "desc": "单帧推理耗时" }, { "performanceValue": "11.38", "unit": "性能(fps)", "desc": "帧率" }, { "performanceValue": "32.92", "unit": "单帧内存带宽(MB)", "desc": "DDR单帧带宽" }, { "performanceValue": "11.22", "unit": "内存(MB)", "desc": "峰值内存" } ], "deleted": 0 } ], "deleted": 0 } ], "saveType": null, "deleteType": null, "latest": "Y", "deleted": 0, "modelPhase": "released", "remark": null, "fileInfo": null, "reviewType": null, "owner": "bazinga", "ownerBy": 139761718403620, "optional": null, "optionalList": [ "0e900d99dee8461b8" ], "optionalBy": null, "downloadNum": 2, "collectNum": null, "isCollect": null } }