AI算法sdk

文章目录

  • SDK
    • 1. 加载模型文件(.cfg):模型文件的内容包括一些模型的信息和tensorRT量化后的模型引擎。
    • 2. 初始化hrgEngine
    • 3. 推理引擎 RunDetEngineInner
    • 4. 释放引擎 UninitialObjDetEngine

SDK

本文介绍了SDK的流程,和主要的类

  • 主要关注的点是:
    • input的图片处理,归一化
    • .cfg模型中模型信息和tensorRT Engine的提取
    • 对模型输出结果进行还原及NMS等操作。

1. 加载模型文件(.cfg):模型文件的内容包括一些模型的信息和tensorRT量化后的模型引擎。

char* hrg_model_path1

  • 可以加加载多个模型文件(.cfg)有的算法需要多种模型。例如,poseC3D的模型需要yolov7-pose输出的来作为他的输入。
    这时候就可以创建多个hrgEngine

2. 初始化hrgEngine

    ret = InitialObjDetEngine(&hrgEngine1, initParam1);  
    ret = InitialObjDetEngine(&hrgEngine2, initParam2);
  • InitialObjDetEngine:会根据你的版本号例如8.4.4.2来走不同的算法分支。首先通过加载.cfg文件中的pre info的信息,来得到模型的class name, input/output name, input/output shape等等信息,用于下一个阶段的引擎反序列化。然后为不同的算法模型预先开辟模型输入的内存空间,模型engine和其输出的内存空间。然后初始化trtModel。

3. 推理引擎 RunDetEngineInner

为模型的输出开辟了内存空间之后,我们就可以开始对tensorRT序列化的引擎进行反序列化得到图片的输出了。

  • 图片预处理:resize -> hwc -> chw -> bgr2rgb -> ./255
  • 进行推理:hrg_objdet_inner_engine->runNNInfer();
            ret = trtDetEngine.runTrtInfer(
                yolo_params.input_image_buffer,
                yolo_params.input_image_len, 
                yolo_params.input_names[0], 
                yolo_params.outputs_buffer, 
                yolo_params.outputs_buffer_len, 
                yolo_params.output_names);
  • 得到模型网络feature map输出后的后处理:根据不同的模型,把网络的输出还原成框框,骨骼点,预测的类别等诸多对应的信息。

4. 释放引擎 UninitialObjDetEngine

  • 释放trt engine
  • 释放input_image_buffer, outputs_buffer

你可能感兴趣的:(人工智能,算法)