专栏感知yolov8_obb模型转换和部署

yolov8_obb模型转换和部署

J6标定问题2024-09-30
216
0

yolov8_obb模型转换和部署

1.yolov8_obb pth转换onnx

1.1将yolov8_obb pth转换onnx,并且设置opset=11

1.2将onnx模型转置,例如我的模型输出是1x9x2100转换成1x2100x9,

2.将onnx转换成地平线J5的bin文件

2.1 制作校准集

    1. 由于python的yolov8_obb预处理代码如下

    1. 我们将03_yolov5x直接拷贝一份重新命名为yolov8_obb,由于03_yolov5x预处理代码和yolov8_obb一样,所以只需要将

改成训练的尺寸就可以,我训练的尺寸是320,所以改成

    1. 将02_preprocess.sh中 --src_dir 路径改成训练图片路径,大概100张左右

2.2 获取节点量化敏感度

上一步骤的基础上需要将先执行03_build.sh,需要在yaml配置文件中加入

获取节点示例如下:

2.3 模型转换

    1. 将yaml配置文件中model_parameters参数后面加上

    1. yaml配置文件中model_parameters参数后面加上

    1. yaml配置其他参数

    1. 运行03_build.sh,上面由于Softmax运行在cpu上,我将该算子运行在BPU上,并且使用了int16量化。

2.4 转换模型结果解析

  • 使用hb_perf yolov8x_320x320_nv12.bin

Description

3. yolov8_obb c++代码的预处理和后处理

3.1 yolov8_obb预处理代码如下:

3.2 yolov8_obb 后处理代码如下:

  • 1.使用int16获取数据

  • 2.使用下面命令查看模型信息

可以看出模型从9补齐到16了。

    1. 后处理代码如下,其中输出9含义是cx,cy,width,height,(旋转框中心点x,y,宽、高),类别1置信度,类别2置信度,类别3置信度,类别4置信度,角度。

    1. 对齐输出含义就是9后面补齐7个零。

    1. 相应的后处理代码如下:

  • 上面的result是经过将旋转框置信度大于0.5的框(中心点x,y,宽、高、角度、置信度)过滤剩下框,接下来就是需要将result经过nms,得到最终的结果,nms代码有很多公开的,我就不提供了。

4.pth推理结果与bin文件推理结果进行对比

  • pth推理一个旋转框的结果如下:

  • bin文件旋转框推理结果如下:

感知
技术深度解析
评论0
0/1000