跨模态分类算法
REVISION HISTORY¶
Revision No. | Description |
Date |
---|---|---|
1.0 | 10/31/2023 |
1. 算法说明¶
跨模态分类算法(Open Vocabulary Classification, Ovcls),对文本模态和图像模态进行匹配,可以用于以文搜图或者以图搜文。
2. API参考¶
该功能模块提供以下API:
API名称 | 功能 |
---|---|
ALGO_OVCLS_CreateHandle | 创建句柄 |
ALGO_OVCLS_InitHandle | 初始化句柄 |
ALGO_OVCLS_GetInputAttr | 获取模型的属性信息 |
ALGO_OVCLS_SetThreshold | 设置阈值 |
ALGO_OVCLS_CreateImageDatabase | 创建图像数据库 |
ALGO_OVCLS_CreateTextDatabase | 创建文本数据库 |
ALGO_OVCLS_AddImageToDatabase | 添加图像到数据库 |
ALGO_OVCLS_AddTextToDatabase | 添加文本到数据库 |
ALGO_OVCLS_SaveImageDatabase | 保存图像数据库 |
ALGO_OVCLS_SaveTextDatabase | 保存文本数据库 |
ALGO_OVCLS_SearchTextByImage | 以图搜文 |
ALGO_OVCLS_SearchImageByText | 以文搜图 |
ALGO_OVCLS_DeInitHandle | 反初始化句柄 |
ALGO_OVCLS_ReleaseHandle | 删除句柄 |
2.1. ALGO_OVCLS_CreateHandle¶
-
功能
创建句柄
-
语法
MI_S32 ALGO_OVCLS_CreateHandle (void** handle);
-
形参
参数名称 描述 输入/输出 handle 句柄 输入 -
返回值
返回值 描述 0 成功 其他 错误码 -
依赖
-
头文件:sstar_ovcls_api.h
-
库文件:libsstaralgo_ovcls.a/libsstaralgo_ovcls.so
-
2.2. ALGO_OVCLS_InitHandle¶
-
功能
初始化句柄
-
语法
MI_S32 ALGO_OVCLS_InitHandle (void* handle, lipOvclsInitInfo_t* init_info);
-
形参
参数名称 描述 输入/输出 handle 句柄 输入 init_info 配置ipu_firmware_path路径、模型文件夹路径、阈值 输入 -
返回值
返回值 描述 0 成功 其他 错误码 -
依赖
-
头文件:sstar_ovcls_api.h
-
库文件:libsstaralgo_ovcls.a/libsstaralgo_ovcls.so
-
2.3. ALGO_OVCLS_GetInputAttr¶
-
功能
获取模型的属性信息,包括模型输入分辨率以及输入数据的类型
-
语法
MI_S32 ALGO_OVCLS_GetInputAttr (void* handle, OvclsOvclsInputAttr_t* init_info);
-
形参
参数名称 描述 输入/输出 handle 句柄 输入 init_info 输出结构体 输出 -
返回值
返回值 描述 0 成功 其他 错误码 -
依赖
-
头文件:sstar_ovcls_api.h
-
库文件:libsstaralgo_ovcls.a/libsstaralgo_ovcls.so
-
2.4. ALGO_OVCLS_SetThreshold¶
-
功能
设置阈值
-
语法
MI_S32 ALGO_OVCLS_SetThreshold (void* handle, MI_FLOAT threshold);
-
形参
参数名称 描述 输入/输出 handle 句柄 输入 threshold 阈值 输入 -
返回值
返回值 描述 0 成功 其他 错误码 -
依赖
-
头文件:sstar_ovcls_api.h
-
库文件:libsstaralgo_ovcls.a/libsstaralgo_ovcls.so
-
2.5. ALGO_OVCLS_CreateImageDatabase¶
-
功能
创建图像数据库
-
语法
MI_S32 ALGO_OVCLS_CreateImageDatabase(void* handle, int img_num, char* img_database_path, char *img_label_path);
-
形参
参数名称 描述 输入/输出 handle 句柄 输入 img_num 数据库图像数目 输入 img_database_path 图像数据库地址,如果此变量不为NULL,则加载img_database_path对应数据库 输入 img_label_path 图像标签路径,如果此变量不为NULL,则加载img_database_path对应标签 输入 -
返回值
返回值 描述 0 成功 其他 错误码 -
依赖
-
头文件:sstar_ovcls_api.h
-
库文件:libsstaralgo_ovcls.a/libsstaralgo_ovcls.so
-
2.6. ALGO_OVCLS_CreateTextDatabase¶
-
功能
创建文本数据库
-
语法
MI_S32 ALGO_OVCLS_CreateTextDatabase(void* handle, int text_num, char* text_database_path, char *text_label_path);
-
形参
参数名称 描述 输入/输出 handle 句柄 输入 text_num 数据库图像数目 输入 text_database_path 图像数据库地址,如果此变量不为NULL,则加载text_database_path对应数据库 输入 text_label_path 图像标签路径,如果此变量不为NULL,则加载text_label_path对应标签 输入 -
返回值
返回值 描述 0 成功 其他 错误码 -
依赖
-
头文件:sstar_ovcls_api.h
-
库文件:libsstaralgo_ovcls.a/libsstaralgo_ovcls.so
-
2.7. ALGO_OVCLS_AddImageToDatabase¶
-
功能
添加图像到数据库
-
语法
MI_S32 ALGO_OVCLS_AddImageToDatabase(void* handle, const OvclsAlgo_Input_t *img_input, const char *img_str);
-
形参
参数名称 描述 输入/输出 handle 句柄 输入 img_input 图像输入结构体 输入 img_str 图像地址 输入 -
返回值
返回值 描述 0 成功 其他 错误码 -
依赖
-
头文件:sstar_ovcls_api.h
-
库文件:libsstaralgo_ovcls.a/libsstaralgo_ovcls.so
-
2.8. ALGO_OVCLS_AddTextToDatabase¶
-
功能
添加文本到数据库
-
语法
MI_S32 ALGO_OVCLS_AddTextToDatabase(void* handle, const char *promopt_text, int language_type);
-
形参
参数名称 描述 输入/输出 handle 句柄 输入 promopt_text 文本 输入 language_type 语种,0表示中文,1表示英文 输入 -
返回值
返回值 描述 0 成功 其他 错误码 -
依赖
-
头文件:sstar_ovcls_api.h
-
库文件:libsstaralgo_ovcls.a/libsstaralgo_ovcls.so
-
2.9. ALGO_OVCLS_SaveImageDatabase¶
-
功能
保存图像数据库
-
语法
MI_S32 ALGO_OVCLS_SaveImageDatabase(void* handle, char* img_database_path, char *img_label_path);
-
形参
参数名称 描述 输入/输出 handle 句柄 输入 img_database_path 图像数据库地址 输入 img_label_path 图像标签地址 输入 -
返回值
返回值 描述 0 成功 其他 错误码 -
依赖
-
头文件:sstar_ovcls_api.h
-
库文件:libsstaralgo_ovcls.a/libsstaralgo_ovcls.so
-
2.10. ALGO_OVCLS_SaveTextDatabase¶
-
功能
保存文本数据库
-
语法
MI_S32 ALGO_OVCLS_SaveTextDatabase(void* handle, char* text_database_path, char *text_label_path);
-
形参
参数名称 描述 输入/输出 handle 句柄 输入 text_database_path 文本数据库地址 输入 text_label_path 文本标签地址 输入 -
返回值
返回值 描述 0 成功 其他 错误码 -
依赖
-
头文件:sstar_ovcls_api.h
-
库文件:libsstaralgo_ovcls.a/libsstaralgo_ovcls.so
-
2.11. ALGO_OVCLS_SearchTextByImage¶
-
功能
以图搜文
-
语法
MI_S32 ALGO_OVCLS_SearchTextByImage(void* handle, const OvclsAlgo_Input_t *img_input, int language_type, OvclsOutputInfo_t *results);
-
形参
参数名称 描述 输入/输出 handle 句柄 输入 img_input 图像输入结构体 输入 language_type 语种,0表示中文,1表示英文 输入 results 搜索结果 输出 -
返回值
返回值 描述 0 成功 其他 错误码 -
依赖
-
头文件:sstar_ovcls_api.h
-
库文件:libsstaralgo_ovcls.a/libsstaralgo_ovcls.so
-
2.12. ALGO_OVCLS_SearchImageByText¶
-
功能
以图搜文
-
语法
MI_S32 ALGO_OVCLS_SearchImageByText(void* handle, const char *promopt_text, int language_type, OvclsOutputInfo_t *results);
-
形参
参数名称 描述 输入/输出 handle 句柄 输入 promopt_text 文本 输入 language_type 语种,0表示中文,1表示英文 输入 results 结果 输入 -
返回值
返回值 描述 0 成功 其他 错误码 -
依赖
-
头文件:sstar_ovcls_api.h
-
库文件:libsstaralgo_ovcls.a/libsstaralgo_ovcls.so
-
2.13. ALGO_OVCLS_DeInitHandle¶
-
功能
反初始化句柄
-
语法
MI_S32 ALGO_OVCLS_DeInitHandle (void* handle);
-
形参
参数名称 描述 输入/输出 handle 句柄 输入 -
返回值
返回值 描述 0 成功 -
依赖
-
头文件:sstar_ovcls_api.h
-
库文件:libsstaralgo_ovcls.a/libsstaralgo_ovcls.so
-
2.14. ALGO_OVCLS_ReleaseHandle¶
-
功能
删除句柄
-
语法
MI_S32 ALGO_OVCLS_ReleaseHandle (void* handle);
-
形参
参数名称 描述 输入/输出 handle 句柄 输入 -
返回值
返回值 描述 0 成功 -
依赖
-
头文件:sstar_ovcls_api.h
-
库文件:libsstaralgo_ovcls.a/libsstaralgo_ovcls.so
-
3. 数据类型¶
Ovcls相关数据类型定义如下:
数据类型 | 定义 |
---|---|
OvclsInputAttr_t | 算法输入属性结构体 |
OvclsOutputInfo_t | 算法输出结构体 |
OvclsInitInfo_t | 算法初始化相关结构体 |
OvclsAlgo_Input_t | 算法输入相关结构体 |
3.1 OvclsInputAttr_t¶
-
说明
算法输入属性结构体
-
定义
typedef struct{ MI_U32 width; MI_U32 height; MI_IPU_ELEMENT_FORMAT format; }OvclsInputAttr_t;
-
成员
成员名称 描述 width 模型输入数据的宽 height 模型输入数据的高 format 模型输入数据的类型 -
相关数据类型及接口
3.2 OvclsOutputInfo_t¶
-
说明
算法输出结构体
-
定义
typedef struct{ MI_U32 class_id; MI_FLOAT score; char string[OVCLS_MAX_STRLEN]; }OvclsOutputInfo_t;
-
成员
成员名称 描述 class_id 类别 score 目标的分值 string 结果对应标签 -
相关数据类型及接口
3.3 OvclsInitInfo_t¶
-
说明
算法初始化相关结构体
-
定义
typedef struct{ MI_U32 language; char ipu_firmware_path[OVCLS_MAX_STRLEN]; char img_model_path[OVCLS_MAX_STRLEN]; char text_model_path[OVCLS_MAX_STRLEN]; char vocab_path[OVCLS_MAX_STRLEN]; }OvclsInitInfo_t;
-
成员
成员名称 描述 language 语种 ipu_firmware_path ipu_firmware_path路径 img_model_path 图像模型路径 text_model_path 文本模型路径 vocab_path 字典路径 -
相关数据类型及接口
3.4 OvclsAlgo_Input_t¶
-
说明
算法输入相关结构体
-
定义
typedef struct{ void* p_vir_addr; MI_PHY phy_addr; MI_U32 buf_size; }OvclsAlgo_Input_t;
-
成员
成员名称 描述 p_vir_addr 输入buffer的虚拟地址 phy_addr 输入buffer的物理地址 buf_size 输入buffer的长度 -
相关数据类型及接口
4. 错误码¶
错误码 | 数值 | 描述 |
---|---|---|
E_ALGO_SUCCESS | 0 | 操作成功 |
E_ALGO_HANDLE_NULL | 1 | 算法句柄为空 |
E_ALGO_INVALID_PARAM | 2 | 无效的输入参数 |
E_ALGO_DEVICE_FAULT | 3 | 硬件错误 |
E_ALGO_LOADMODEL_FAIL | 4 | 加载模型失败 |
E_ALGO_INIT_FAIL | 5 | 算法初始化失败 |
E_ALGO_NOT_INIT | 6 | 算法尚未初始化 |
E_ALGO_INPUT_DATA_NULL | 7 | 算法输入数据为空 |
E_ALGO_INVALID_INPUT_SIZE | 8 | 无效的算法输入数据维度 |
E_ALGO_INVALID_LICENSE | 9 | 无效的license许可 |
E_ALGO_MEMORY_OUT | 10 | 内存不足 |
E_ALGO_FILEIO_ERROR | 11 | 文件读写操作错误 |
E_ALGO_INVALID_OUTPUT_SIZE | 12 | 无效的算法输出数据维度 |