检测跟踪算法说明
REVISION HISTORY¶
Revision No. | Description |
Date |
---|---|---|
1.0 | First version | 05/15/2024 |
2.0 | Second version | 07/09/2024 |
1. 概述¶
1.1. 算法说明¶
本算法库可以实现以下基础功能:人形检测、人脸检测,车辆检测,非机动车检测,宠物检测,检测目标(人、人脸、车、非机动车、宠物等)跟踪。
比如需要同时检测人形,车辆和宠物,则在初始化的模型中配置SD,检测接口会对这几类同时进行检测。
还可以实现应用功能:区域人数统计/区域入侵(非法停车)/拌线入侵/徘徊检测/快速移动。
支持检测模型包括:行人检测(SYPD)、人非车检测(SYPCN)、人宠物检测(SYPCD)、车牌检测(SYLPD)、人脸检测(SYFD)、火焰烟雾(SYFSD)、人形+人头+人脸检测(SPD)、人非车宠物检测 (SD)。具体的检测类别说明如下:
-
行人检测(SYPD)输出的类别共1类,为行人(class_id=0)。
-
人非车检测(SYPCN)输出的类别共6类,分别为行人(class_id=0)、自行车(class_id=1)、轿车(class_id=2) 、摩托车(class_id=3)、公交车(class_id=4)、卡车(class_id=5)。
-
人宠物检测(SYPCD)输出的类别共3类,分别为行人(class_id=0)、猫(class_id=1)、狗(class_id=2)。
-
车牌检测(SYLPD)输出的类别共1类,分别为车牌(class_id=0)。
-
人脸检测(SYFD)输出的类别共1类,分别人脸(class_id=0)。
-
火焰烟雾(SYFSD)输出的类别共2类,分别为火焰(class_id=0)、烟雾(class_id=1)。
-
人+人头+人脸检测(SPD)输出的类别共3类,分别为行人(class_id=0)、人头(class_id=1)、人脸(class_id=2)。
-
人+车+宠物+人头+人脸检测(SD)输出的类别共10类,分别为行人(class_id=0)、自行车(class_id=1)、轿车(class_id=2) 、摩托车(class_id=3)、公交车(class_id=4)、卡车(class_id=5)、猫(class_id=6)、狗(class_id=7)、人头(class_id=8)、人脸(class_id=9)。
1.2. 算法规格¶
-
行人检测(SYPD)
-
板端资源(在377平台(IPU clock@800MHz)下测得)
Model Name Model Version Resolution Input Format Rom Ram Inference Time PostProcess Time SYPD36 310 640x352 yuv_nv12 772KB 1780KB 6.5ms 约1.0ms SYPD48 310 800x480 yuv_nv12 828KB 2540KB 10.9ms 约1.2ms SYPD58 310 896x512 yuv_nv12 848KB 3048KB 13.0ms 约1.5ms
-
-
人非车检测(SYPCN)
-
板端资源(在377平台下测得)
Model Name Model Version Resolution Input Format Rom Ram Inference Time PostProcess Time SYPCN36s 310 640x352 yuv_nv12 880KB 1928KB 6.6ms 约1.2ms SYPCN48s 310 800x480 yuv_nv12 936KB 2720KB 11.1ms 约1.6ms SYPCN58s 310 896x512 yuv_nv12 960KB 3256KB 13.3ms 约2.0ms SYPCN36l 310 800x480 yuv_nv12 3216KB 5176KB 15.7ms 约1.2ms SYPCN48l 310 896x512 yuv_nv12 3340KB 6660KB 26.4ms 约1.6ms
-
-
人宠物检测(SYPCD)
-
板端资源(在377平台下测得)
Model Name Model Version Resolution Input Format Rom Ram Inference Time PostProcess Time SYPCD36s 310 640x352 yuv_nv12 772KB 1796KB 6.5ms 约1.1ms SYPCD48s 310 800x480 yuv_nv12 828KB 2572KB 11.0ms 约1.5ms SYPCD58s 310 896x512 yuv_nv12 852KB 3092KB 13.1ms 约1.8ms
-
-
火焰烟雾检测(SYFSD)
-
板端资源(在377平台下测得)
Model Name Model Version Resolution Input Format Rom Ram Inference Time PostProcess Time SYFSDY36l 310 640x352 yuv_nv12 2579KB 4489KB 14.76ms 约1.1ms SYFSDY48l 310 800x480 yuv_nv12 2689KB 5940KB 24.67ms 约1.5ms
-
2. API参考¶
该功能模块提供以下API:
API名称 | 功能 |
---|---|
ALGO_DT_CreateHandle | 创建句柄 |
ALGO_DT_InitHandle | 初始化句柄 |
ALGO_DT_GetInputAttr | 获取模型的属性信息 |
ALGO_DT_SetParams | 设置算法参数 |
ALGO_DT_Detect | 运行检测算法,对目标进行检测 |
ALGO_DT_Track | 对检测目标进行跟踪 |
ALGO_DT_Count | 对区域流量进行统计 |
ALGO_DT_RoiAlarmDetect | 区域入侵检测 |
ALGO_DT_RoiWanderDetect | 区域徘徊检测 |
ALGO_DT_RoiFastMovingDetect | 快速移动检测 |
ALGO_DT_LineAlarmDetect | 拌线入侵检测 |
ALGO_DT_DeinitHandle | 停止跟踪算法 |
ALGO_DT_ReleaseHandle | 释放句柄 |
2.1. ALGO_DT_CreateHandle¶
-
功能
创建句柄
-
语法
MI_S32 ALGO_DT_CreateHandle(void **handle);
-
形参
参数名称 描述 输入/输出 handle 句柄 输入 -
返回值
返回值 描述 0 成功 其它 失败(详见错误码) -
依赖
-
头文件:sgs_dt_api.h
-
库文件:libsgsalgo_dt.a / libsgsalgo_dt.so
-
2.2. ALGO_DT_InitHandle¶
-
功能
初始化句柄
-
语法
MI_S32 ALGO_DT_InitHandle(void *handle, DtInit_t *init_info);
-
形参
参数名称 描述 输入/输出 handle 句柄 输入 init_info 算法配置项,详见DtInit_t 输入 -
返回值
返回值 描述 0 成功 其它 失败(详见错误码) -
相关结构体
-
依赖
-
头文件:sgs_dt_api.h
-
库文件:libsgsalgo_dt.a / libsgsalgo_dt.so
-
2.3. ALGO_DT_GetInputAttr¶
-
功能
获取模型的属性信息,包括模型输入分辨率以及输入数据的类型,主要两种格式 1->NV12,7->ARGB888
-
语法
MI_S32 ALGO_DT_GetInputAttr(void *handle, DtInputAttr_t *input_attr);
-
形参
参数名称 描述 输入/输出 handle 句柄 输入 input_attr 保存属性信息指针,详见DtInputAttr_t 输入 -
返回值
返回值 描述 0 成功 其它 失败(详见错误码) -
相关结构体
-
依赖
-
头文件:sgs_dt_api.h
-
库文件:libsgsalgo_dt.a / libsgsalgo_dt.so
-
2.4. ALGO_DT_SetParams¶
-
功能
设置算法的参数
-
语法
MI_S32 ALGO_DT_SetParams(void *handle, const DtParams_t *params);
-
形参
参数名称 描述 输入/输出 handle 句柄 输入 params 算法参数,详见DtParams_t 输入 -
返回值
返回值 描述 0 成功 其它 失败(详见错误码) -
相关结构体
-
依赖
-
头文件:sgs_dt_api.h
-
库文件:libsgsalgo_dt.a / libsgsalgo_dt.so
-
2.5. ALGO_DT_Detect¶
-
功能
运行模型推理,对人形等目标进行检测,获得检测结果
-
语法
MI_S32 ALGO_DT_Detect(void *handle, const DtInput_t *algo_input, DtBox_t bboxes[MAX_DT_OBJECT], MI_S32 *num_bboxes);
-
形参
参数名称 描述 输入/输出 handle 句柄 输入 algo_input 输入图像的buffer信息,根据前面接口获取模型的输入大小,一般模型名称会包含输入信息,比如sypdy36**,就是yuv_nv12的352(高) * 640(宽)输入 输入 bboxes 用于保存检测结果框的数组 输出 num_bboxes 用于保存检测结果框个数的指针 输出 -
返回值
返回值 描述 0 成功 其它 失败(详见错误码) -
调用流程
ALGO_DT_CreateHandle->ALGO_DT_InitHandle->ALGO_DT_SetParams->ALGO_DT_Detect
-
相关结构体
-
依赖
-
头文件:sgs_dt_api.h
-
库文件:libsgsalgo_dt.a / libsgsalgo_dt.so
-
2.6. ALGO_DT_Track¶
-
功能
对检测结果进行跟踪,获取跟踪结果,并获得跟踪id
-
语法
MI_S32 ALGO_DT_Track(void *handle, DtBox_t bboxes[MAX_DT_OBJECT], MI_S32 *num_bboxes);
-
形参
参数名称 描述 输入/输出 handle 句柄 输入 bboxes 既是输入也是输出结果框,输入是检测的结果,输出是跟踪后的结果,会根据参数设置输出对应的目标框 输入/输出 num_bboxes 既是输入也是输出,输入是检测结果框的个数,输出是跟踪结果框个数的指针 输入/输出 -
返回值
返回值 描述 0 成功 其它 失败(详见错误码) -
调用流程
ALGO_DT_CreateHandle->ALGO_DT_InitHandle->ALGO_DT_SetParams->ALGO_DT_Detect->ALGO_DT_Track
-
相关结构体
-
依赖
-
头文件:sgs_dt_api.h
-
库文件:libsgsalgo_dt.a / libsgsalgo_dt.so
-
2.7. ALGO_DT_Count¶
-
功能
对指定区域内的客流进行统计
-
语法
MI_S32 ALGO_DT_Count(void *handle, CountRoi_t rois[MAX_DT_ROI], MI_S32 num_rois, DtBox_t bboxes_input[MAX_DT_OBJECT], MI_S32 num_bboxes_input);
-
形参
参数名称 描述 输入/输出 handle 句柄 输入 rois 流量统计的区域数组 输入 /输出 num_rois 流量统计的区域个数 输入 bboxes_input 用于输入跟踪结果框的数组 输入 num_bboxes_input 输入跟踪结果框个数 输入 -
返回值
返回值 描述 0 成功 其它 失败(详见错误码) -
调用流程
ALGO_DT_CreateHandle->ALGO_DT_InitHandle->ALGO_DT_SetParams->ALGO_DT_Detect->ALGO_DT_Track->ALGO_DT_Count
-
相关结构体
-
依赖
-
头文件:sgs_dt_api.h
-
库文件:libsgsalgo_dt.a / libsgsalgo_dt.so
-
2.8. ALGO_DT_RoiAlarmDetect¶
-
功能
对区域内的目标进行区域入侵判断
-
语法
MI_S32 ALGO_DT_RoiAlarmDetect(void* handle, ALGO_DtRoiAlarm_t rois[MAX_DT_ROI], MI_S32 num_rois, DtBox_t bboxes_input[MAX_DT_OBJECT], MI_S32 num_bboxes_input);
-
形参
参数名称 描述 输入/输出 handle 句柄 输入 rois 设置警戒区域 输入/输出 num_rois 设置区域的个数 输入 bboxes_input 跟踪结果框 输入 num_bboxes_input 跟踪结果框个数 输入 -
返回值
返回值 描述 0 成功 其它 失败(详见错误码) -
调用流程
ALGO_DT_CreateHandle->ALGO_DT_InitHandle->ALGO_DT_SetParams->ALGO_DT_Detect->ALGO_DT_Track->ALGO_DT_RoiAlarmDetect
-
相关结构体
-
依赖
-
头文件:sgs_dt_api.h
-
库文件:libsgsalgo_dt.a / libsgsalgo_dt.so
-
2.9. ALGO_DT_RoiWanderDetect¶
-
功能
对区域内目标进行徘徊检测
-
语法
MI_S32 ALGO_DT_RoiWanderDetect(void* handle, ALGO_DtRoiWander_t rois[MAX_DT_ROI], MI_S32 num_rois, DtBox_t bboxes_input[MAX_DT_OBJECT], MI_S32 num_bboxes_input);
-
形参
参数名称 描述 输入/输出 handle 句柄 输入 rois 设置区域信息 输入/输出 num_rois 设置区域个数 输入 bboxes_input 跟踪结果框信息 输入 num_bboxes_input 跟踪结果框个数 输入 -
返回值
返回值 描述 0 成功 其它 失败(详见错误码) -
调用流程
ALGO_DT_CreateHandle->ALGO_DT_InitHandle->ALGO_DT_SetParams->ALGO_DT_Detect->ALGO_DT_Track->ALGO_DT_RoiWanderDetect
-
相关结构体
-
依赖
-
头文件:sgs_dt_api.h
-
库文件:libsgsalgo_dt.a / libsgsalgo_dt.so
-
2.10. ALGO_DT_RoiFastMovingDetect¶
-
功能
区域内的目标快速移动检测
-
语法
MI_S32 ALGO_DT_RoiFastMovingDetect(void* handle, ALGO_DtRoiFastMove_t rois[MAX_DT_ROI], MI_S32 num_rois, DtBox_t bboxes_input[MAX_DT_OBJECT], MI_S32 num_bboxes_input);
-
形参
参数名称 描述 输入/输出 handle 句柄 输入 rois 区域信息 输入/输出 num_rois 区域个数 输入 bboxes_input 检测框信息 输入 num_bboxes_input 检测框个数 输入 -
返回值
返回值 描述 0 成功 其它 失败(详见错误码) -
调用流程
ALGO_DT_CreateHandle->ALGO_DT_InitHandle->ALGO_DT_SetParams->ALGO_DT_Detect->ALGO_DT_Track->ALGO_DT_RoiFastMovingDetect
-
相关结构体
-
依赖
-
头文件:sgs_dt_api.h
-
库文件:libsgsalgo_dt.a / libsgsalgo_dt.so
-
2.11. ALGO_DT_LineAlarmDetect¶
-
功能
对拌线进行目标入侵判断
-
语法
MI_S32 ALGO_DT_LineAlarmDetect(void* handle, ALGO_DtLineAlarm_t lines[MAX_DT_ROI], MI_S32 num_lines, DtBox_t bboxes_input[MAX_DT_OBJECT], MI_S32 num_bboxes_input);
-
形参
参数名称 描述 输入/输出 handle 句柄 输入 lines 拌线信息 输入/输出 num_lines 拌线数量 输入 bboxes_input 跟踪结果框信息 输入 num_bboxes_input 跟踪结果框数量 输入 -
返回值
返回值 描述 0 成功 其它 失败(详见错误码) -
调用流程
ALGO_DT_CreateHandle->ALGO_DT_InitHandle->ALGO_DT_SetParams->ALGO_DT_Detect->ALGO_DT_Track->ALGO_DT_LineAlarmDetect
-
相关结构体
-
依赖
-
头文件:sgs_dt_api.h
-
库文件:libsgsalgo_dt.a / libsgsalgo_dt.so
-
2.12. ALGO_DT_DeinitHandle¶
-
功能
停止算法
-
语法
MI_S32 ALGO_DT_DeinitHandle(void *handle);
-
形参
参数名称 描述 输入/输出 handle 句柄 输入 -
返回值
返回值 描述 0 成功 其它 失败(详见错误码) -
依赖
-
头文件:sgs_dt_api.h
-
库文件:libsgsalgo_dt.a / libsgsalgo_dt.so
-
2.13. ALGO_DT_ReleaseHandle¶
-
功能
释放句柄占用资源
-
语法
MI_S32 ALGO_DT_ReleaseHandle(void *handle);
-
形参
参数名称 描述 输入/输出 handle 句柄 输入 -
返回值
返回值 描述 0 成功 其它 失败(详见错误码) -
依赖
-
头文件:sgs_dt_api.h
-
库文件:libsgsalgo_dt.a / libsgsalgo_dt.so
-
3. 结构体/枚举类型说明¶
相关数据类型定义如下:
数据类型 | 定义 |
---|---|
DtInit_t | 算法参数相关结构体 |
DtInputAttr_t | 算法输入属性结构体 |
DtParams_t | 算法输入参数结构体 |
DtInput_t | 算法输入图像数据信息 |
DtBox_t | 检测和跟踪的输出结构体 |
DtPoint_t | 顶点像素坐标 |
DtRoi_t | 多边形区域位置 |
CountRoi_t | 区域流量统计信息 |
RoiAlarmMode_e | 区域入侵模式 |
ALGO_DtRoiAlarm_t | 区域入侵结构体 |
ALGO_DtRoiFastMove_t | 区域目标快速移动结构体 |
ALGO_DtRoiWander_t | 区域目标徘徊结构 |
DtLine_t | 拌线结构体 |
ALGO_DtLineAlarm_t | 拌线入侵结构体 |
Label_PD_Person_e | 行人检测算法class_id和类别名称的对应 |
Label_FD_Face_e | 人脸检测算法class_id和类别名称的对应 |
Label_PCN_e | 人非车检测算法class_id和类别名称的对应 |
Label_PCD_e | 人宠物检测算法class_id和类别名称的对应 |
Label_FSD_e | 火焰烟雾检测算法class_id和类别名称的对应 |
Label_SD_e | 人+车+宠物+人头+人脸检测算法class_id和类别名称的对应 |
Label_SPD_e | 人+人头+人脸检测算法class_id和类别名称的对应 |
3.1 DtInit_t¶
-
说明
算法相关配置项
-
定义
typedef struct { char ipu_firmware_path[MAX_DT_STRLEN]; char model_path[MAX_DT_STRLEN]; MI_BOOL create_device; MI_BOOL destroy_device; void *model_buffer; MI_U32 model_buffer_len; } DtInit_t;
-
成员
成员名称 描述 ipu_firmware_path[MAX_DT_STRLEN] ipu_firmware_path路径 model_path[MAX_DT_STRLEN] 模型文件路径 create_device 是否在算法库内进行IPUDevice的创建,默认为true,即在库内创建,在需同时调用算法库时可设置为false并在外部手动创建IPUDevice destroy_device 是否在算法库内进行IPUDevice的销毁,默认为true,即在库内销毁,在需同时调用算法库时可设置为false并在外部手动销毁IPUDevice model_buffer 使用model_path时请设置为NULL,将model_path置空并且设置model_buffer和model_buffer_len可用于从模型内存块初始化算法 model_buffer_len 使用model_path时请设置为0,设置model_buffer内存块长度 -
相关数据类型及接口
3.2 DtInputAttr_t¶
-
说明
定义分辨率大小和模型类型
-
定义
typedef struct { MI_U32 width; MI_U32 height; MI_IPU_ELEMENT_FORMAT format; } DtInputAttr_t;
-
成员
成员名称 描述 width 模型输入数据的宽 height 模型输入数据的高 format 模型输入数据的类型 -
相关数据类型及接口
3.3 DtParams_t¶
-
说明
算法相关配置项
-
定义
typedef struct { MI_S32 disp_width; // default=1920 MI_S32 disp_height; // default=1080 // detect MI_FLOAT conf_threshold=0.5; // default=0.5 // track MI_BOOL ignore_static_objects; // default=false MI_BOOL stable_bbox; // default=false MI_FLOAT stable_iou_threshold; // default=0.65 MI_FLOAT static_iou_threshold; // default=0.85 MI_S32 ignore_frame_number; // default=0 MI_FLOAT ignore_static_time; // default=0 MI_BOOL use_detect_bbox; // default=false MI_BOOL strict_mode; // default=false } DtParams_t;
-
成员
成员名称 描述 disp_width 显示码流的分辨率宽度(用于映射检测框位置),默认值1920 disp_height 显示码流的分辨率高度(用于映射检测框位置),默认值1080 conf_threshold 检测算法的阈值,默认值0.5 ignore_static_objects 是否忽略静止目标,默认为false,即动态和静态目标均检测 stable_bbox 是否进行稳框 stable_iou_threshold 稳框算法的灵敏度,取值0.0~1.0,取值越小稳框效果越强,默认值为0.65 ignore_frame_number 忽略目标的前8帧的检测结果,主要用于静止过滤,如果要静止过滤则建议设为8,否则为0 ignore_static_time 只有静止超过设定的时间才会忽略静止目标,单位为秒 use_detect_bbox 跟踪算法中,是否使用检测的结果框,若为false,则使用跟踪的结果框 strict_mode 是否使用strict检测模式,默认值false -
相关数据类型及接口
3.4 DtInput_t¶
-
说明
算法输入图像数据信息
-
定义
typedef struct { void *p_vir_addr; MI_PHY phy_addr; MI_U32 buf_size; MI_U64 pts; } DtInput_t;
-
成员
成员名称 描述 p_vir_addr 输入buffer的虚拟地址 phy_addr 输入buffer的物理地址 buf_size 输入buffer的长度 pts 输入buffer时间戳 -
相关数据类型及接口
3.5 DtBox_t¶
-
说明
跟踪结果输出结构体
-
定义
typedef struct { MI_U32 x; MI_U32 y; MI_U32 width; MI_U32 height; MI_U32 class_id; MI_FLOAT score; MI_U64 pts; MI_U64 track_id; MI_BOOL moving; } DtBox_t;
-
成员
成员名称 描述 x,y, width, height 结果框的位置 class_id 结果框的类别ID score 结果的置信度分值(0~1) pts 送入图像帧的时间戳 track_id 结果的跟踪ID moving 是否为运动物体 -
相关数据类型及接口
3.6 DtPoint_t¶
-
说明
顶点像素坐标
-
定义
typedef struct { MI_U32 x; MI_U32 y; } DtPoint_t;
-
成员
成员名称 描述 x 顶点横坐标 y 顶点纵坐标 -
相关数据类型及接口
3.7 DtRoi_t¶
-
说明
多边形区域位置
-
定义
typedef struct { DtPoint_t point[MAX_DT_VERTEX]; MI_U32 point_num; } DtRoi_t;
-
成员
成员名称 描述 point 多边形顶点坐标数组(最大顶点数MAX_DT_VERTEX) point_num 多边形顶点个数 -
相关数据类型及接口
3.8 CountRoi_t¶
-
说明
区域流量统计信息
-
定义
typedef struct { DtRoi_t roi; MI_U32 count; MI_FLOAT interval; MI_U32 interval_in_count; MI_U32 interval_out_count; MI_U32 count_cls[MAX_DT_NUM_CLASS]; MI_S16 num_count_cls; } CountRoi_t;
-
成员
成员名称 描述 roi 多边形区域位置,区域点顺时针或逆时针配置 count 区域流量计数值 interval 统计进出人数间隔时间段(单位:秒) interval_in_count 时间段内进区域的人数,每次到达间隔时间将清0 count_cls 需要计数的类别数组 num_count_cls 需要计数的类别数,若为0,则对所有类别计数 -
相关数据类型及接口
3.9 RoiAlarmMode_e¶
-
说明
区域入侵模式,正常模式还是非法停车模式
-
定义
typedef enum { E_NORMAL_ROI_ALARM = 0, E_ILLEGAL_PARKING, } RoiAlarmMode_e;
-
成员
成员名称 描述 E_NORMAL_ROI_ALARM 正常区域入侵 E_ILLEGAL_PARKING 非法停车 -
相关数据类型及接口
3.10 ALGO_DtRoiAlarm_t¶
-
说明
区域入侵结构体信息
-
定义
typedef struct { DtRoi_t roi; RoiAlarmMode_e roi_model; MI_BOOL inbreak; DtBox_t inbreak_box[MAX_DT_OBJECT]; MI_U32 inbreak_box_num; MI_BOOL target_enter; DtBox_t target_enter_box[MAX_DT_OBJECT]; MI_U32 target_enter_box_num; MI_BOOL target_leave; DtBox_t target_leave_box[MAX_DT_OBJECT]; MI_U32 target_leave_box_num; }ALGO_DtRoiAlarm_t;
-
成员
成员名称 描述 roi 区域信息,区域点顺时针或逆时针配置 roi_model 报警模式 inbreak 是否入侵 inbreak_box 入侵目标框 inbreak_box_num 入侵目标个数 target_enter 是否有目标进入 target_enter_box 进入区域目标框 target_enter_box_num 进入区域目标个数 target_leave 是否有目标离开 target_leave_box 离开区域目标框 target_leave_box_num 离开区域目标个数 -
相关数据类型及接口
3.11 ALGO_DtRoiFastMove_t¶
-
说明
区域目标快速移动结构体
-
定义
typedef struct { DtRoi_t roi; MI_BOOL fase_move; DtBox_t fast_move_box[MAX_DT_OBJECT]; MI_U32 fast_move_box_num; MI_FLOAT sensitive; }ALGO_DtRoiFastMove_t;
-
成员
成员名称 描述 roi 区域信息,区域点顺时针或逆时针配置 fase_move 区域内目标是否发生快速移动 fast_move_box 区域内发生快速移动的目标框 fast_move_box_num 区域内发生快速移动的个数 sensitive 快速移动的灵敏度,0.0-5.0,越大需移动越快 -
相关数据类型及接口
3.12 ALGO_DtRoiWander_t¶
-
说明
区域目标徘徊结构体
-
定义
typedef struct { DtRoi_t roi; MI_BOOL wander; DtBox_t target_wander_box[MAX_DT_OBJECT]; MI_U32 target_wander_num; MI_FLOAT interval; }ALGO_DtRoiWander_t;
-
成员
成员名称 描述 roi 区域信息,区域点顺时针或逆时针配置 wander 区域内是否发生目标徘徊 target_wander_box 区域内目标徘徊框 target_wander_num 区域内目标徘徊个数 interval 徘徊的时间设定 -
相关数据类型及接口
3.13 DtLine_t¶
-
说明
拌线结构体信息
-
定义
typedef struct { DtPoint_t point1; DtPoint_t point2; }DtLine_t;
-
成员
成员名称 描述 point1 拌线的第一个点 point2 拌线的第二个点 -
相关数据类型及接口
3.14 ALGO_DtLineAlarm_t¶
-
说明
拌线入侵的结构体
-
定义
typedef struct { DtLine_t line; MI_BOOL inbreak; DtBox_t inbreak_box[MAX_DT_OBJECT]; MI_U32 inbreak_box_num; MI_BOOL cross_line; DtBox_t cross_line_box[MAX_DT_OBJECT]; MI_S32 cross_line_orien[MAX_DT_OBJECT]; MI_S32 cross_line_num; MI_FLOAT sensitive; //between(-1.0 - 1.0) }ALGO_DtLineAlarm_t;
-
成员
成员名称 描述 line 拌线信息 inbreak 是否发生拌线入侵 inbreak_box 发生拌线入侵的目标框 inbreak_box_num 发生拌线入侵的框数量 cross_line 是否发生了越线,越线是目标从拌线一边到另外一边 cross_line_box 发生越线的目标框坐标 cross_line_orien 发生越线目标的方向,目标的方向,1是从左到右,2是从右到左,3是从上到下,4是从下到上 cross_line_num 发生越线目标的个数 sensitive (-0.1 - 1.0) 缩放框设置,中心保持不变,宽高变化,width = width - sensitive * width,height = height - sensitive * height,防止框过大而没有对目标进行越线判断 -
相关数据类型及接口
3.15 Label_PD_Person_e¶
-
说明
检测模型类别和class_id的对应关系
-
定义
typedef enum { E_PD_PERSON = 0 } Label_PD_Person_e;
-
成员
成员名称 描述 E_PD_PERSON 行人类别(class_id=0)
3.16 Label_FD_Face_e¶
-
说明
人脸检测模型类别和class_id的对应关系
-
定义
typedef enum { E_FD_FACE = 0, } Label_FD_Face_e;
-
成员
成员名称 描述 E_FD_FACE 人脸类别(class_id=0)
3.17 Label_PCN_e¶
-
说明
人/非机动车/车辆检测模型类别和class_id的对应关系
-
定义
typedef enum { E_PCN_PERSON = 0, E_PCN_BICYCLE, E_PCN_CAR, E_PCN_MOTOCYCLE, E_PCN_BUS, E_PCN_TRUCK } Label_PCN_e;
-
成员
成员名称 描述 E_PCN_PERSON 行人类别(class_id=0) E_PCN_BICYCLE 自行车类别(class_id=1) E_PCN_CAR 轿车类别(class_id=2) E_PCN_MOTOCYCLE 摩托车类别(class_id=3) E_PCN_BUS 公交车类别(class_id=4) E_PCN_TRUCK 卡车类别(class_id=5)
3.18 Label_PCD_e¶
-
说明
定义人宠物检测模型类别和class_id的对应关系
-
定义
typedef enum { E_PCD_PERSON, E_PCD_CAT, E_PCD_DOG } Label_PCD_e;
-
成员
成员名称 描述 E_PCN_PERSON 行人类别(class_id=0) E_PCN_CAT 猫类别(class_id=1) E_PCN_DOG 狗类别(class_id=2)
3.19 Label_FSD_e¶
-
说明
定义火焰烟雾检测模型类别和class_id的对应关系
-
定义
typedef enum { E_FSD_FIRE, E_FSD_SMOKE } Label_FSD_e;
-
成员
成员名称 描述 E_FSD_FIRE 火焰类别(class_id=0) E_FSD_SMOKE 烟雾类别(class_id=1)
3.20 Label_SD_e¶
-
说明
定义人+车+宠物+人头+人脸检测模型类别和class_id的对应关系
-
定义
typedef enum { E_SD_PERSON = 0, E_SD_BICYCLE, E_SD_CAR, E_SD_MOTOCYCLE, E_SD_BUS, E_SD_TRUCK, E_SD_CAT, E_SD_DOG, E_SD_HEAD, E_SD_FACE, } LABEL_SD_e;
-
成员
成员名称 描述 E_SD_PERSON 行人类别(class_id=0) E_SD_BICYCLE 自行车类别(class_id=1) E_SD_CAR 轿车类别(class_id=2) E_SD_MOTOCYCLE 摩托车类别(class_id=3) E_SD_BUS 公交车类别(class_id=4) E_SD_TRUCK 卡车类别(class_id=5) E_SD_CAT 猫类别(class_id=6) E_SD_DOG 狗类别(class_id=7) E_SD_HEAD 人头类别(class_id=8) E_SD_FACE 人脸类别(class_id=9)
3.21 Label_SPD_e¶
-
说明
定义人+人头+人脸检测模型类别和class_id的对应关系
-
定义
typedef enum { E_SPD_PERSON = 0, E_SPD_HEAD, E_SPD_FACE } LABEL_SPD_e;
-
成员
成员名称 描述 E_SPD_PERSON 行人类别(class_id=0) E_SPD_HEAD 人头类别(class_id=1) E_SPD_FACE 人脸类别(class_id=2)
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 | 无效的算法输出数据维度 |