Attribute Recognition算法说明
REVISION HISTORY¶
| Revision No. | Description |
Date |
|---|---|---|
| 1.0 | 09/19/2023 | |
| 1.1 | 10/17/2023 |
1. 概述¶
1.1. 算法说明¶
attribute recognition算法包括:人脸属性识别、人脸表情识别、车辆属性识别。
| Model | 功能 | 版本 | 属性类别 | 输出索引信息 |
|---|---|---|---|---|
| far103_224y.img | 人脸属性识别 | FAR101 | 眼镜、性别、口罩、胡子、年龄 | 人脸属性输出索引对照表 |
| far101_224y_emo.img | 人脸表情识别 | FAR101 | 正常、高兴、难过、惊讶、害怕、厌恶、生气 | 人脸表情输出索引对照表, 当输出值为-1时,表示无法识别 |
| var100_224y.img | 车辆属性识别 | VAR100 | 颜色、车型、车标 | 车辆颜色输出索引对照表、车辆类型输出索引对照表、车辆品牌输出索引对照表, 当输出值为-1时,表示无法识别 |
2. API参考¶
该功能模块提供以下API:
| API名称 | 功能 |
|---|---|
| ALGO_ATTR_CreateHandle | 创建句柄 |
| ALGO_ATTR_InitHandle | 初始化句柄 |
| ALGO_ATTR_GetInputAttr | 获取模型的属性信息 |
| ALGO_ATTR_SetParams | 设置模型参数 |
| ALGO_ATTR_Run | 进入属性识别算法 |
| ALGO_ATTR_DeInitHandle | 反初始化句柄 |
| ALGO_ATTR_ReleaseHandle | 删除句柄 |
2.1. ALGO_ATTR_CreateHandle¶
-
功能
创建句柄
-
语法
MI_S32 ALGO_ATTR_CreateHandle (void **handle);
-
形参
参数名称 描述 输入/输出 handle 句柄 输入 -
返回值
返回值 描述 0 成功 其他 错误码 -
依赖
-
头文件:sgs_attr_api.h
-
库文件:libsgsalgo_attr.a/libsgsalgo_attr.so
-
2.2. ALGO_ATTR_InitHandle¶
-
功能
初始化句柄
-
语法
MI_S32 ALGO_ATTR_InitHandle (void *handle, AttrInitInfo_t *init_info);
-
形参
参数名称 描述 输入/输出 handle 句柄 输入 init_info 配置ipu_firmware_path路径、模型文件夹路径 输入 -
返回值
返回值 描述 0 成功 其他 错误码 -
依赖
-
头文件:sgs_attr_api.h
-
库文件:libsgsalgo_attr.a/libsgsalgo_attr.so
-
2.3. ALGO_ATTR_GetInputAttr¶
-
功能
获取模型的属性信息,包括模型输入分辨率以及输入数据的类型
-
语法
MI_S32 ALGO_ATTR_GetInputAttr (void *handle, AttrInputAttr_t *attr_input);
-
形参
参数名称 描述 输入/输出 handle 句柄 输入 attr_input 输出结构体 输出 -
返回值
返回值 描述 0 成功 其他 错误码 -
依赖
-
头文件:sgs_attr_api.h
-
库文件:libsgsalgo_attr.a/libsgsalgo_attr.so
-
2.4. ALGO_ATTR_SetParams¶
-
功能
设置模型参数
-
语法
MI_S32 ALGO_ATTR_SetParams (void *handle, AttrParam_t *attr_params);
-
形参
参数名称 描述 输入/输出 handle 句柄 输入 attr_params 可配参数 输入 -
返回值
返回值 描述 0 成功 其他 错误码 -
依赖
-
头文件:sgs_attr_api.h
-
库文件:libsgsalgo_attr.a/libsgsalgo_attr.so
-
2.5. ALGO_ATTR_Run¶
-
功能
进入属性识别算法
-
语法
MI_S32 ALGO_ATTR_Run (void *handle, ALGO_AttrInput_t *attr_input, Attr_t *results);
-
形参
参数名称 描述 输入/输出 handle 句柄 输入 attr_input 输入buffer 输入 results 模型输出结构体 输出 -
返回值
返回值 描述 0 成功 其他 错误码 -
依赖
-
头文件:sgs_attr_api.h
-
库文件:libsgsalgo_attr.a/libsgsalgo_attr.so
-
2.6. ALGO_ATTR_DeInitHandle¶
-
功能
反初始化句柄
-
语法
MI_S32 ALGO_ATTR_DeInitHandle (void *handle);
-
形参
参数名称 描述 输入/输出 handle 句柄 输入 -
返回值
返回值 描述 0 成功 -
依赖
-
头文件:sgs_attr_api.h
-
库文件:libsgsalgo_attr.a/libsgsalgo_attr.so
-
2.7. ALGO_ATTR_ReleaseHandle¶
-
功能
删除句柄
-
语法
MI_S32 ALGO_ATTR_ReleaseHandle (void *handle);
-
形参
参数名称 描述 输入/输出 handle 句柄 输入 -
返回值
返回值 描述 0 成功 -
依赖
-
头文件:sgs_attr_api.h
-
库文件:libsgsalgo_attr.a/libsgsalgo_attr.so
-
3. 结构体说明¶
attr相关数据类型定义如下:
| 数据类型 | 定义 |
|---|---|
| ALGO_MODEL_TYPE_ATTR_e | 属性类型枚举 |
| AttrFace_t | 人脸属性结构体 |
| AttrVehicle_t | 车辆属性结构体 |
| AttrEmotion_t | 人脸表情属性结构体 |
| Attr_t | 属性类型结构体 |
| AttrInputAttr_t | 模型输入结构体 |
| AttrInitInfo_t | 算法初始化参数相关结构体 |
| ALGO_AttrInput_t | 算法输入相关结构体 |
| AttrParam_t | 算法可配参数相关结构体 |
3.1 ALGO_MODEL_TYPE_ATTR_e¶
-
说明
算法识别类型枚举
-
定义
typedef enum { ATTR_TYPE_FACE, ATTR_TYPE_VEHICLE, ATTR_TYPE_EMOTION, }ALGO_MODEL_TYPE_ATTR_e; -
成员
成员名称 描述 ATTR_TYPE_FACE 人脸属性识别 ATTR_TYPE_VEHICLE 车辆属性识别 ATTR_TYPE_EMOTION 人脸表情识别 -
相关数据类型及接口
3.2 AttrFace_t¶
-
说明
人脸属性输出信息
-
定义
typedef struct AttrFace_ { MI_BOOL eye_glass; MI_BOOL male; MI_BOOL mask; MI_S32 age; MI_BOOL mustache; }AttrFace_t; -
成员
成员名称 描述 eye_glass 眼镜 male 性别 mask 口罩 age 年龄 mustache 胡子 -
相关数据类型及接口
3.3 AttrVehicle_t¶
-
说明
车辆属性输出信息
-
定义
typedef struct AttrVehicle_ { MI_S32 color; MI_S32 type; MI_S32 logo; }AttrVehicle_t; -
成员
成员名称 描述 color 车辆颜色 type 车辆类型 logo 车辆品牌 -
相关数据类型及接口
3.4 AttrEmotion_t¶
-
说明
人脸表情属性输出信息
-
定义
typedef struct AttrEmotion_ { MI_S32 emotion; }AttrEmotion_t; -
成员
成员名称 描述 emotion 表情 -
相关数据类型及接口
3.5 Attr_t¶
-
说明
属性输出结构体
-
定义
typedef struct Attr_ { AttrFace_t face; AttrVehicle_t vehicle; AttrEmotion_t emotion; }Attr_t; -
成员
成员名称 描述 face 人脸属性输出信息 vehicle 车辆属性输出信息 emotion 人脸表情属性输出信息 -
相关数据类型及接口
3.6 AttrInputAttr_t¶
-
说明
定义分辨率大小和模型类型
-
定义
typedef struct AttrInputAttr_ { MI_U32 width; MI_U32 height; MI_IPU_ELEMENT_FORMAT format; }AttrInputAttr_t; -
成员
成员名称 描述 width 模型输入数据的宽 height 模型输入数据的高 format 模型输入数据的类型 -
相关数据类型及接口
3.7 AttrInitInfo_t¶
-
说明
算法相关结构体
-
定义
typedef struct AttrInitInfo_ { MI_U8 ipu_firmware_path[IPU_MAX_LENGTH]; MI_U8 model_path[MODEL_MAX_LENGTH]; MI_BOOL create_device; MI_BOOL destroy_device; void *model_buffers; MI_U32 model_buffer_len; }AttrInitInfo_t; -
成员
成员名称 描述 ipu_firmware_path[IPU_MAX_LENGTH] ipu_firmware_path路径 model_path[MODEL_MAX_LENGTH] 模型路径 create_device 是否创建设备 destroy_device 是否销毁设备 model_buffers 使用model_path时请设置为NULL,将model_path置空并且设置model_buffer和model_buffer_len可用于从模型内存块初始化算法 model_buffer_len 使用model_path时请设置为0,设置model_buffer内存块长度 -
相关数据类型及接口
3.8 ALGO_AttrInput_t¶
-
说明
输入buffer相关结构体
-
定义
typedef struct ALGO_AttrInput_ { void* p_vir_addr; MI_PHY phy_addr; MI_U32 buf_size; MI_S64 pts; }ALGO_AttrInput_t; -
成员
成员名称 描述 p_vir_addr 输入buffer的虚拟地址 phy_addr 输入buffer的物理地址 buf_size 输入buffer的长度 pts 输入buffer的时间戳 -
相关数据类型及接口
3.9 AttrParam_t¶
-
说明
算法参数相关结构体
-
定义
typedef struct AttrParam_ { MI_FLOAT threshold; ALGO_MODEL_TYPE_ATTR_e model_type_attr; }AttrParam_t; -
成员
成员名称 描述 threshold 阈值 model_type_attr 模型识别类型 -
相关数据类型及接口
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 | 无效的算法输出数据维度 |
5. 输出索引说明¶
5.1 人脸属性索引对照表¶
| 索引 | 眼镜 | 性别 | 口罩 | 胡子 | 年龄 |
|---|---|---|---|---|---|
| 0 | 没戴眼镜 | 女性 | 没戴口罩 | 没有胡子 | 0~100岁 |
| 1 | 戴眼镜 | 男性 | 戴口罩 | 有胡子 | 0~100岁 |
5.2 人脸表情索引对照表¶
| 索引 | 人脸表情 |
|---|---|
| 0 | 正常 |
| 1 | 高兴 |
| 2 | 难过 |
| 3 | 惊讶 |
| 4 | 害怕 |
| 5 | 厌恶 |
| 6 | 生气 |
5.3 车辆颜色索引对照表¶
| 索引 | 车辆颜色 |
|---|---|
| 0 | 白色 |
| 1 | 黑色 |
| 2 | 灰色 |
| 3 | 红色 |
| 4 | 蓝色 |
| 5 | 绿色 |
| 6 | 棕色 |
| 7 | 黄色 |
| 8 | 青色 |
| 9 | 紫色 |
| 10 | 金色 |
5.4 车辆类型索引对照表¶
| 索引 | 车辆类型 |
|---|---|
| 0 | 轿车 |
| 1 | SUV |
| 2 | 面包车 |
| 3 | 商务车 |
| 4 | 公共汽车 |
| 5 | 卡车 |
| 6 | 客车 |
| 7 | 皮卡车 |
| 8 | 其他 |
5.5 车辆品牌索引对照表¶
| 索引 | 车辆品牌 |
|---|---|
| 0 | Volkswagen |
| 1 | Buick |
| 2 | Ford |
| 3 | Toyota |
| 4 | NISSAN |
| 5 | Honda |
| 6 | Modern |
| 7 | Wuling |
| 8 | KIA |
| 9 | Chevrolet |
| 10 | Audi |
| 11 | Mercedes-Benz |
| 12 | Changan |
| 13 | BMW |
| 14 | Bao Jun |
| 15 | Geely |
| 16 | Harvard |
| 17 | Citroen |
| 18 | BYD |
| 19 | JAC |
| 20 | Cheryl |
| 21 | Bestune |
| 22 | Peugeot |
| 23 | FAW |
| 24 | Mazda |
| 25 | Skoda |
| 26 | Roewe |
| 27 | Forland times |
| 28 | Great Wall |
| 29 | Land Rover |
| 30 | Volvo |
| 31 | Suzuki |
| 32 | Cadillac |
| 33 | BAIC Weiwang |
| 34 | Southeast Motor |
| 35 | Dongfeng Xiaokang |
| 36 | Haima |
| 37 | Jeep |
| 38 | GAC Motor |
| 39 | Zotye |
| 40 | Lexus |
| 41 | Yutong |
| 42 | Foton |
| 43 | Zhongtong |
| 44 | Jinbei |
| 45 | Dongfeng Fengxing |
| 46 | Mitsubishi |
| 47 | Subaru |
| 48 | BAIC Senova |
| 49 | Renualt |
| 50 | Jing long |
| 51 | Zhonghua |
| 52 | Dongfeng Fengshen |
| 53 | Dongfeng |
| 54 | Jiangling |
| 55 | SUNWIN |
| 56 | Porsche |
| 57 | MINI |
| 58 | MG |
| 59 | BAIC Motor |
| 60 | HIGER |
| 61 | Smart |
| 62 | BAIC BJEV |
| 63 | Lincoln |
| 64 | Venucia |
| 65 | Karry |
| 66 | Dongfeng scenery |
| 67 | DODGE |
| 68 | Infiniti |
| 69 | Jaguar |
| 70 | Iveco |
| 71 | FIAT |
| 72 | TKNG |
| 73 | Hafei Auto |
| 74 | Kaima |
| 75 | Old Scooter |
| 76 | LUXGEN |
| 77 | Golden Dragon |
| 78 | Yuejin |
| 79 | Changhe |
| 80 | Leopaard |
| 81 | Isuzu |
| 82 | SAIC MAXUS |
| 83 | Landwind |
| 84 | BAIC Huansu |
| 85 | Hawtai |
| 86 | Ssangyong |
| 87 | Zhongxing |
| 88 | Lifan |
| 89 | Chrysler |
| 90 | Mustang |
| 91 | Shaanqi Tongjia |
| 92 | Huanghai |
| 93 | Maserati |
| 94 | DS |
| 95 | Ankai |
| 96 | Tesla |
| 97 | Hengtong |
| 98 | FAW General |
| 99 | SINOTRUK |
| 100 | ACURA |
| 101 | Cowin |
| 102 | Hongqi |
| 103 | Heibao Auto |
| 104 | Kowloon |
| 105 | Borgward |
| 106 | Qingdao Jiefang |
| 107 | Wuzheng |
| 108 | EVERUS |
| 109 | Dongfeng Fengdu |
| 110 | Dongfeng Shares |
| 111 | Opel |
| 112 | Car end |
| 113 | SWM Motor |
| 114 | Dongfeng Commercial |
| 115 | QOROS |
| 116 | Jiefang |
| 117 | Concrete Mixer Class |
| 118 | WAW Truck |
| 119 | Lotus |
| 120 | Daewoo |
| 121 | Guangzhou Auto Geo |
| 122 | CNJ |
| 123 | BAIC |
| 124 | Shenlong |
| 125 | Bentley |
| 126 | BAW |
| 127 | Dangerous Goods Transport Vehicles |
| 128 | Qingling |
| 129 | FQT Motor |
| 130 | Fudi |
| 131 | Hanteng |
| 132 | Sprinkler |
| 133 | Shifeng |
| 134 | Shaanxi Auto |
| 135 | Youngman |
| 136 | SMA Motor |
| 137 | Yaxing |
| 138 | Huazhong |
| 139 | GMC |
| 140 | Skannia |
| 141 | North |
| 142 | Yongyuan |
| 143 | UFO |
| 144 | Feichi |
| 145 | KANDI |
| 146 | Yingzhi |
| 147 | Beiben |
| 148 | Sediment truck |