Attribute Recognition算法说明
REVISION HISTORY¶
Revision No. | Description |
Date |
---|---|---|
1.0 | 09/19/2023 | |
1.1 | 10/17/2023 |
1. 概述¶
1.1. 算法说明¶
attribute recognition算法包括:人脸属性识别、人脸表情识别、车辆属性识别。
Model | 功能 | 版本 | 属性类别 | 输出索引信息 |
---|---|---|---|---|
far101_224y.img | 人脸属性识别 | FAR101 | 眼镜、性别、口罩、胡子、年龄 | 人脸属性输出索引对照表 |
far101_224y_emo.img | 人脸表情识别 | FAR101 | 正常、高兴、难过、惊讶、害怕、厌恶、生气 | 人脸表情输出索引对照表, 当输出值为-1时,表示无法识别 |
var100_224y.img | 车辆属性识别 | VAR100 | 颜色、车型、车标 | 车辆颜色输出索引对照表、车辆类型输出索引对照表、车辆品牌输出索引对照表, 当输出值为-1时,表示无法识别 |
1.2. 算法规格¶
-
板端资源
Model Resolution Rom Ram Inference time far100_224y_s45.img 224*224 1099KB 1729KB 2.44ms far101_224y.img 224*224 4167KB 5390KB 5.25ms far101_224y_emo.img 224*224 3608KB 4832KB 5.08ms Model Resolution Rom Ram Inference time var100_224y.img 224*224 3921KB 5156KB 5.18ms -
精度
指标:TPR/TNR
测试集: Face Test Set
Model attribution Threshold Test Set A Test Set B Test Set C Test Set D Test Set D far100_224y_s45.img eye_glass 0.5 0.999/0.984 -/- -/- 0.994/0.994 0.997/0.990 male 0.5 0.994/0.991 -/- -/- 0.994/0.976 0.967/0.974 mask 0.5 0.000/1.000 1.00/0.000 1.00/0.000 0.000/1.00 0.000/0.998 age 0.5 8 - - 11 5
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 |