目标检测预训练模型基于新数据进行微调(训练)之后,得到一个权重文件。
在日常工业、车载等需求环境下,需要在嵌入式移动端的软件系统中调用该模型文件进行推断测试,软件系统追求性能经常使用C/C++进行编码实现,而目标检测模型训练经常使用python的pytorch、TensorFlow框架,我们需要在嵌入式软件系统中使用该模型,需要用C /C++编写一条模型部署工具链。
一、部署模型之前可以进行转换,将常用的深度学习框架转换为ONNX model,方便进行部署
二、现在主流的的嵌入式端开发平台,分别基于ARM、DSP、FPGA和GPU硬件
三、下面介绍两种部署形式:①在纯CPU下面调用该模型(可以在自己win、Linux电脑上玩一下),②在nvidia NX/TX2 下面部署该模型(需要提前买一块)。
①在纯CPU部署该模型时,可以使用opencv中的DNN库,它支持直接调用pytorch、TensorFlow、darknet训练的进行推断(当然也要注意opencv的版本),调用接口部分函数如下所示:
②因为NVIDIA TX2/NX具有体积小,运算速度快等优点所以被经常使用,在该嵌入式板上可以使用TensorRT进行部署
部署可以进行参数权重的量化操作进行加速,例如将float32 转int8,
注意C++部署前置知识有:交叉编译、远程链接与文件传输(例如xshell、xftp)、Linux操作命令等