专栏感知地平线deeplabv3+ 参考算法如何实现resize和argmax算子的BPU加速?

地平线deeplabv3+ 参考算法如何实现resize和argmax算子的BPU加速?

chenyueyue2023-12-06
177
1

1. 前言

为了保证模型输出的精度,地平线的实例分割参考算法deeplabv3+在部署时,将模型尾部的resize和argmax放在了CPU的后处理代码中进行计算,但是这样也带来了一些问题,比如会占用比较大的CPU资源,尤其是大尺寸特征图的argmax计算。事实上,地平线J5的BPU也是支持resize和argmax算子的,本帖将介绍将resize和argmax计算融入到deeplabv3+模型中进行BPU加速的教程。

2. 代码修改流程

2.1 环境部署

首先访问地平线开发者社区的OpenExplorer算法工具链版本发布帖,获取GPU docker和OE开发包,然后参考用户手册环境部署章节完成环境的部署。

2.2 代码修改流程

Step1:

在Docker环境下,进入到/usr/loacal/lib/python3.8/dist-packages/hat/models/task_modules/deeplab/head.py目录下,修改Deeplabv3plusHead类的代码,如下所示:

Step2:

在Docker环境下,进入到/usr/loacal/lib/python3.8/dist-packages/hat/models/structures/encoder_decoder.py 目录下,修改_post_process函数的代码,如下所示:

Step3:

进入到OE开发包的ddk/samples/ai_toolchain/horizon_model_train_sample/scripts/configs/segmentation目录下,

修改config文件中的model和deploy_model字段,如下所示:

Step4:

修改config文件中的update_val_metric函数:

至此,代码修改完成。

然后,我们按照地平线的算法工具链用户手册完成deeplabv3+参考算法的训练和编译后,生成的板端部署hbm模型就可以实现resize和argmax在BPU上的加速了。

感知
+1
评论1
0/1000
  • 穆心2008
    Lv.1
    你好,大佬,为啥按照上面得方法,训练完qat的指标比float低了5个点icecream_org.svg
    2025-06-10
    0
    0