TensorFlow Lite开发系列之C++接口解析(二)

编译

  1. 下载tensorflow源码,网址:https://github.com/tensorflow/tensorflow/tree/v2.1.0
  2. 保证系统已经安装g++, gcc, make, cmake
  3. 加压刚才下载好的 tensorflow 源码, 进入tensorflow-master/tensorflow/lite/tools/make/目录下
  4. 首先执行download_dependencies.sh文件,这里会下载一些依赖,博主下载了好几次才成功(小小心累),可能需要,如果总是下载失败的话,可以关注留言或者关注私信,联系我要这个文件
  5. 接下来根据不同的设备,执行不同的build_xxxxx.sh文件,博主是在ubuntu上运行的,这里sh build_lib.sh, 执行完毕后,在同级目录下生成 gen 目录,代表成功

API解析:

官网网址:https://tensorflow.google.cn/lite/api_docs/cc

API 功能
tflite::FlatBufferModel 读取tflite模型文件或者变量,用于映射对象
tflite::Interpreter 张量输入和输出的节点图的推理类

这是推理过程当中,常用的两个类,常用方法如下(更多API介绍):

// 基于缓冲区构建模型
BuildFromBuffer(const char *caller_owned_buffer, size_t buffer_size, ErrorReporter *error_reporter)
// 基于文件构建模型
BuildFromFile(const char *filename, ErrorReporter *error_reporter)
// 验证缓冲区的内容是否合法,然后基于缓冲区构建模型
VerifyAndBuildFromBuffer(const char *buffer, size_t buffer_size, TfLiteVerifier *extra_verifier, ErrorReporter *error_reporter)
// 验证文件的内容是否合法,然后基于该文件构建模型
VerifyAndBuildFromFile(const char *filename, TfLiteVerifier *extra_verifier, ErrorReporter *error_reporter)
AllocateTensors()  // 加载所有的tensor
Interpreter(ErrorReporter *error_reporter)  // 实例化解释器
GetInputName(int index) const  // 返回给定输入的名称
GetOutputName(int index) const  // 返回给定输出的名称
Invoke()  //  调用推理器
ResizeInputTensor(int tensor_index, const std::vector< int > & dims)  // 更改给定张量的尺寸
SetAllowFp16PrecisionForFp32(bool allow)  // 尽可能允许float16精度用于FP32计算
SetNumThreads(int num_threads)  // 设置解释器可用的线程数
UseNNAPI(bool enable)  // 启用或禁用NN API(启用时为true)
typed_input_tensor(int index)  // 将变指针返回给定输入张量的数据
typed_output_tensor(int index)  // 将指针返回给定输出张量的数据

后面我们要调用OpenCV的C++接口,安装OpenCV可以参照:https://blog.csdn.net/qq_41080854/article/details/88609795
篇幅问题,需要代码的可以可以关注留言,或者关注私信

你可能感兴趣的:(TensorFlow,Lite开发)