参考文档
- https://github.com/tensorflow/models Tensorflow官方预训练模型下载地址
- http://blog.csdn.net/michael_yt/article/details/74737489 Tensorflow 模型持久化
- http://blog.csdn.net/czq7511/article/details/72452985 tensorflow使用freeze_graph.py将模型文件和权重数据整合在一起并去除无关的Op
- https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/lite/g3doc/models.md Tensorflow Lite预训练模型下载
- https://github.com/ShuangXieIrene/mobilenet-v2 Tensorflow Mobilenet V2预训练模型下载
- https://github.com/ethereon/caffe-tensorflow caffe模型转tensorflow模型
- https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/lite/g3doc/apis.md Tensorflow Lite C++ API文档
本文档将介绍Tensorflow在Arm-Linux平台上的几种部署方法:
- Tensorflow原生
- Tensorflow-mobile
- Tensorflow-lite
模型持久化
在一般的训练情况下,因为训练过程会耗费很长的时间,为了防止出现不可预知的错误导致的训练进度数据丢失,在Tensorflow训练过程中会使用模型持久化(ckpt格式数据)来暂时存储训练的中间结果。
如下图所示:
- ckpt.data:存储模型中所有变量的内容
- ckpt.meta:存储整个计算图的结构
当我们只需要使用模型来进行前向预测的部署时就需要固定模型(freeze_graph)到pb模型文件,这样使用单一pb文件后比较方便在终端部署和测试。
在运行固定模型的相关脚本之前需要先安装Tensorflow的训练环境,具体的脚本位置为:
python -m tensorflow/python/tools/freeze_graph -h
# 通过-h选项了解freeze_graph的具体使用方法
Tensorflow-lite
Tensorflow-lite为了兼容android和ios两种移动操作系统向两个系统提供了统一的 C++ API接口,并且还为android提供了更上层的java接口。在这里Arm-Linux平台直接采用C++ API来进行部署。