RandLANet模型推理C++部署
RandLANet系列最最最最后一篇博客记录。
模型训练稳定后一般都采样C++来正式部署环境,也就是使用C++做前向推理,一个原因是使用python部署需要额外的环境安装,不方便移植,第二个就是效率上比不上C++。
使用C++版本的tensorflow部署模型时一般做以下3个步骤:
- 先将ckpt格式的模型保存成pb格式。
- 在python中测试pb模型是否正确。
- 使用编译好的tensorflow动态链接库,在C++中调用pb模型进行前向推理。
一、ckpt模型转pb模型
其中ckpt转pb模型的关键点是要知道输出节点的名字,这一步可以直接去训练代码中找到sess.run()这一句,sess.run()接收的返回即是我们做模型转换所需要的输出节点的名字,直接print
这些变量即可得到我们需要的输出节点名称。但是本文使用的randlanet在将ckpt模型转换为pb模型的过程有些特殊,在看本文之前请确保已经完全理解了randlanet的测试过程,可以参看tf1.x版RandLA-Net源码解读(5):测试。
1.1、dataset接口转换为placeholder
randlanet是使用dataset接口向网络中传输数据,而要想使用pb模型必须使用feed_dict的方式向计算图中输入数据,因此第一步需要将dataset接口转换成placeholder接口