当前位置:   article > 正文

[BPU部署教程] 万字长文!通透解读模型部署端到端大流程——以终为始,以行为知

bpu

去年6月份拿到开发板到现在,转眼已经过去大半年了,这个博客11月初就在写,断断续续写到现在。C++部署需要考虑的问题很多,如果只给个简单部署教程的话,就算整理出来,感觉帮助也不大,各位开发时候我遇到的坑,你们也会重新踩一遍。这段时间我一直在思考作为开发者需要的是什么,应该如何安全的使用一套工具,要以何种方式呈现出来,要如何将一件事情清晰的说清楚。草稿改改变变,最后决定以大流程的形式,从量化到C++部署,进行一遍完整的梳理,整理一套流程,让各位安全、稳定地操作BPU。

BPU部署有几个经典大坑,这些坑说白了就是流程不规范各位多少都会遇见,下面这两个比较常见的问题都会在后续的详解中梳理清楚。

  • 量化后的模型在BPU上得不到与Pytoch一样的结果。这种问题多数是因为模型推理的前后处理没做好检查,但凡一步不对都没法得到正确的结果。
  • 量化后的模型Python能推理出来,部署到C++就推理不出来了。大部分是数据没做对齐导致的,就这个问题卡了我好久,最后问了一圈人才发现是输入的图像是1x256x256x3,需要做对齐为1x256x256x4才能跑出正确结果。

之前写教程时候一直以Python为主,是因为其代码简洁,方便各位理解流程及原理。但这一段时间总会有人问我怎么用C++落地,文档不易理解总是部署失败。在开发社区里有人提供了一个Cpp的教程,《动手实践之一个文件实现分割、检测cpp代码部署》,但Demo不足以了解整个部署的流程与思想,因此我后面也规范了下C++部署模型的流程。值得注意的是,官方API以C语言分割为主,因此我也将相关函数用C++二次包装,这样可以更好的使用相关的API,轻松带各位理解BPU的C++部署方式。特别地,我参考《Effective C++》设计了一套开源库WDR,让各位不需要在C++部署上花费太多精力,这个在后面细说。

既然是大流程,想带给各位的就是“知其然,知其所以然,知何由以知其所以然”。所以本博客作为BPU部署教程三部曲中的最后一部,目的是将部署流程刻在心里,真正成为自己算法落地的一项有效工具。后续相关BPU教程主要以调优或者与一些设备联动为主。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/849491
推荐阅读
相关标签