GK SDK 源码库: XMIPCLinuxV100R005C00SPC030 (kernel/tools/open_source excluded)
This commit is contained in:
@@ -0,0 +1,137 @@
|
||||
#ifndef __YOLOV5__
|
||||
#define __YOLOV5__
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "xmedia_svp_std.h"
|
||||
#include "xmedia_svp.h"
|
||||
#include "svp_nms.h"
|
||||
#include "xmedia_svp_quantize.h"
|
||||
#include "svp_core.h"
|
||||
#include "svp_movement.h"
|
||||
#include "svp_bytetracker.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
// sigmoid 查表法
|
||||
#define TABLE_SIZE 100000
|
||||
#define TABLE_MIN (-100.0f)
|
||||
#define TABLE_MAX (100.0f)
|
||||
#define TABLE_200 (200.0f)
|
||||
#define UNSIGNED_8_BIT_NUM 256
|
||||
#define TABLE_500 (500.0f)
|
||||
|
||||
// 每个特征中的x、y、w、h、socre长度
|
||||
#define XYWHF_LEN 5
|
||||
#define XYWH_LEN 4
|
||||
#define LAYER_MAX_NUM 10
|
||||
#define LAYER_MIN_NUM 3
|
||||
#define LAYER_NUM_FOUR 4
|
||||
|
||||
// 每层feature_map对应的anchor
|
||||
#define ANCHOR_NUM 3
|
||||
|
||||
/** 模型输入默认分辨率 */
|
||||
#define INPUT_DEFAULT_WIDE 640
|
||||
#define INPUT_DEFAULT_HIGH 360
|
||||
|
||||
/** 默认检测阈值 */
|
||||
#define DEFAULT_DETECT_THRESHOLD 0.45f
|
||||
/** 默认IOU阈值 */
|
||||
#define DEFAULT_IOU_THRESHOLD 0.5f
|
||||
/** 分类器默认阈值*/
|
||||
#define DEFAULT_CLASSIFIER_THRESHOLD 0.01f
|
||||
#define DEFAULT_BBOX_NUM 512
|
||||
|
||||
/** 模型检测类型数量 */
|
||||
#define DETECTION_MODEL_SINGLE 1
|
||||
#define DETECTION_MODEL_DOUBLE 2
|
||||
#define DETECTION_MODEL_TRIPLE 3
|
||||
#define DETECTION_MODEL_MULTI 4
|
||||
#define DETECTION_MODEL_SIX 6
|
||||
#define DETECTION_MODEL_PCNMV_FIRESMOKE 11
|
||||
#define DETECTION_MODEL_MAX 80
|
||||
|
||||
// 稳定框算法系数
|
||||
#define SVP_IOU_STABLE_THRESH_UPPER 0.85f
|
||||
#define SVP_IOU_STABLE_THRESH_MIDDLE 0.7f
|
||||
#define SVP_STABLE_HORIZONTAL_FACTOR 6
|
||||
#define SVP_STABLE_VERTICAL_FACTOR 5
|
||||
#define SVP_UNIFORM_FACTOR_A 2
|
||||
#define SVP_UNIFORM_FACTOR_B 3
|
||||
#define SVP_STABLE_HISTORY_RATIO 0.8f
|
||||
#define SVP_STABLE_CURRENT_RATIO 0.2f
|
||||
|
||||
// 目标框面积大小限制
|
||||
#define MAX_AREA_ATTR 4
|
||||
#define MINI_AREA 100
|
||||
|
||||
typedef struct {
|
||||
xmedia_svp_rect rect;
|
||||
xmedia_svp_class_type class_type;
|
||||
} svp_stable_rect;
|
||||
|
||||
typedef struct {
|
||||
svp_stable_rect stable_targets[XMEDIA_SVP_MAX_TARGET_NUM];
|
||||
xmedia_u32 num;
|
||||
} svp_stable_box;
|
||||
|
||||
typedef struct {
|
||||
xmedia_svp_point anchors[LAYER_MAX_NUM][ANCHOR_NUM]; // 锚点值
|
||||
xmedia_u8 layer_num; // 锚点层数
|
||||
} xmedia_svp_detect_anchors;
|
||||
|
||||
typedef struct {
|
||||
xmedia_u32 w; // 模型支持的图像宽度
|
||||
xmedia_u32 h; // 模型支持的图像高度
|
||||
xmedia_u32 num; // 模型的检测类别数量
|
||||
xmedia_u32 feature[LAYER_MAX_NUM]; // 每个feature_map的大小
|
||||
xmedia_u32 output_num; // npu输出所有的特征数量
|
||||
xmedia_float thres_desig; // 检测阈值的反sigmoid值
|
||||
quanlize_param quanlize[LAYER_MAX_NUM]; // 反量化需要的参数
|
||||
xmedia_npu_model model; // npu参数
|
||||
xmedia_svp_alg_type type; // 算法类型
|
||||
xmedia_float detect_threshold; // 置信度阈值,建议值0.55f
|
||||
xmedia_float classifier_threshold; // 分类器阈值,建议值0.01f
|
||||
xmedia_float iou_threshold; // iou相交比阈值,建议值0.5f
|
||||
xmedia_u32 max_target_num; // 最大目标数,最大值10
|
||||
xmedia_bool smart_venc_enable;
|
||||
xmedia_bool smart_ae_enable;
|
||||
xmedia_bool smart_venc_array[XMEDIA_SVP_MAX_VENC_CHN_NUM];
|
||||
xmedia_bool smart_ae_array[XMEDIA_SVP_MAX_VI_PIPE_NUM];
|
||||
svp_stable_box record_result; // 记录历史框,用于稳定算法
|
||||
xmedia_svp_detect_anchors anchors; // 锚点值
|
||||
xmedia_u64 cost_time; // process接口耗时
|
||||
xmedia_bool aov_flag; // 是否为aov模型
|
||||
xmedia_bool aov_only_target; // 是否仅判断有无目标
|
||||
svp_movement movement; // 静止过滤相关参数
|
||||
svp_tracklet tracklet;
|
||||
xmedia_u8 track_id_arry[SVP_ALG_MAX_TARGET_NUM * SVP_MAX_LOST_COUNT]; // 追踪id数组
|
||||
xmedia_s32 track_id_grow; // 追踪id增加
|
||||
xmedia_void *private_data; // 实例私有数据
|
||||
xmedia_float *sigmoid_table; // sigmoid查表
|
||||
xmedia_float *sigmoid_dequantize_table;
|
||||
xmedia_float *sigmoid_dequantize_table_x2;
|
||||
xmedia_float *sigmoid_dequantize_table_x6;
|
||||
xmedia_float *sigmoid_dequantize_table_x2_sq;
|
||||
svp_base_result *bbox;
|
||||
} yolov5_detect_param;
|
||||
|
||||
xmedia_void set_default_yolov5_detect_param(yolov5_detect_param *param);
|
||||
|
||||
xmedia_s32 detect_process(yolov5_detect_param *param, const xmedia_video_frame_info *input_image,
|
||||
xmedia_svp_yolov5_output *result, const xmedia_svp_detect_anchors anchors_yaml);
|
||||
xmedia_s32 detect_init(yolov5_detect_param *param, const xmedia_svp_alg_type type,
|
||||
const xmedia_svp_modules *model, xmedia_s32 layer_num);
|
||||
xmedia_s32 detect_deinit(yolov5_detect_param *param);
|
||||
|
||||
xmedia_s32 svp_get_detect_result_yolov5_bz(yolov5_detect_param *param, xmedia_svp_yolov5_output *result,
|
||||
const xmedia_svp_detect_anchors anchors_yaml);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,65 @@
|
||||
#ifndef __YOLOV8__
|
||||
#define __YOLOV8__
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "xmedia_svp.h"
|
||||
#include "xmedia_svp_std.h"
|
||||
#include "xmedia_svp_quantize.h"
|
||||
|
||||
#include "svp_nms.h"
|
||||
#include "svp_core.h"
|
||||
#include "yolov5.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define DEFAULT_KEYPOINT_LEN 0
|
||||
#define PEOPLE_KEYPOINT_LEN 17
|
||||
#define SVP_PLATE_KPS 4
|
||||
|
||||
typedef struct {
|
||||
xmedia_u32 w; // 模型支持的图像宽度
|
||||
xmedia_u32 h; // 模型支持的图像高度
|
||||
xmedia_u32 num; // 模型的检测类别数量
|
||||
xmedia_u32 feature[LAYER_MAX_NUM]; // 每个feature_map的大小
|
||||
xmedia_u32 output_num; // npu输出所有的特征数量
|
||||
xmedia_float thres_desig; // 检测阈值的反sigmoid值
|
||||
quanlize_param quanlize[LAYER_MAX_NUM]; // 反量化需要的参数
|
||||
xmedia_npu_model model; // npu参数
|
||||
xmedia_svp_alg_type type; // 算法类型
|
||||
xmedia_float detect_threshold; // 置信度阈值,建议值0.55f
|
||||
xmedia_float iou_threshold; // iou相交比阈值,建议值0.5f
|
||||
xmedia_float classifier_threshold; // 分类器阈值,建议值0.01f
|
||||
xmedia_u32 max_target_num; // 最大目标数,最大值10
|
||||
svp_stable_box record_result; // 记录历史框,用于稳定算法
|
||||
svp_movement movement; // 静止过滤相关参数
|
||||
svp_tracklet tracklet;
|
||||
xmedia_u8 track_id_arry[SVP_ALG_MAX_TARGET_NUM * SVP_MAX_LOST_COUNT]; // 追踪id数组
|
||||
xmedia_s32 track_id_grow; // 追踪id增加
|
||||
xmedia_u8 keypoint_len; // 关键点数量
|
||||
xmedia_void *private_data; // 实例私有数据
|
||||
xmedia_float *deqnt_u8_to_f32_table;
|
||||
xmedia_float *sigmoid_deqnt_table;
|
||||
svp_base_yolov8_result *bbox;
|
||||
} yolov8_detect_param;
|
||||
|
||||
xmedia_void set_default_yolov8_detect_param(yolov8_detect_param *param);
|
||||
|
||||
xmedia_s32 yolov8_init(yolov8_detect_param *param, const xmedia_svp_modules *model);
|
||||
|
||||
xmedia_s32 yolov8_uninit(yolov8_detect_param *param);
|
||||
|
||||
xmedia_s32 detect_yolov8_process(yolov8_detect_param *param, const xmedia_video_frame_info *frame_info,
|
||||
xmedia_svp_yolov8_output *result);
|
||||
|
||||
xmedia_float iouv8(svp_base_yolov8_result *box1, svp_base_yolov8_result *box2);
|
||||
xmedia_s32 svp_get_detect_result_bz(yolov5_detect_param *param, xmedia_svp_yolov8_output *result,
|
||||
const xmedia_svp_detect_anchors anchors_yaml);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user