使用TensorFlow Lite Micro流程记录(带源码)

0 关于tflite micro

请添加图片描述

关于tflite micro在这里接不做过多介绍了,可以查看相关论文:TensorFlow Lite Micro: Embedded Machine Learning on TinyML Systems

我非常喜欢tflite micro,占用资源很少,是一个用来学习推理框架的好工程。

1 克隆仓库

在tensorflow的git里面,看到git已经迁移至一个单独的仓库

As of June 25, 2021, the TFLM codebase has moved to a stand-alone github repository.

于是执行命令:
git clone https://github.com/tensorflow/tflite-micro.git

2 编译静态库

求助了ChatGPT 4.0:

「在这个 https://github.com/tensorflow/tflite-micro , 怎么编译静态库?」

在TensorFlow Lite Micro的GitHub仓库中,你可以使用以下步骤来编译静态库:

首先,你需要克隆仓库:
git clone https://github.com/tensorflow/tflite-micro.git

进入克隆下来的仓库目录:
cd tflite-micro

使用make命令编译静态库:
make -f tensorflow/lite/micro/tools/make/Makefile TARGET=<TARGET> TARGET_ARCH=<ARCH> microlite

在上述命令中,<TARGET>应替换为你的目标平台(如linux),<ARCH>应替换为你的目标架构(如x86_64)。这将在tensorflow/lite/micro/tools/make/gen/<TARGET>_<ARCH>/lib/目录下生成一个名为libtensorflow-microlite.a的静态库。

请注意,你可能需要根据你的具体需求和环境来修改这些步骤。例如,你可能需要安装额外的依赖库,或者修改makefile来包含你需要的特性。

真是太棒了,于是我执行指令:

make -f tensorflow/lite/micro/tools/make/Makefile TARGET=linux TARGET_ARCH=x86_64 microlite

在 make/download/ 目录下,分别下载了flatbuffers、gemmlowp、kissfft、pigweed、ruy(如果你“网络不佳”,这里可能要花些精力)。

编译完成后,得到了静态库文件——
ar: creating gen/linux_x86_64_default/lib/libtensorflow-microlite.a

3 模型转换

以lenet5模型为例:

  1. 先把tflite模型转换为cpp文件:
    xxd -i lenet5.tflite > lenet5.cpp
  2. 包一下模型接口
    在lenet5.cpp的文件最后加入了这几行代码
    unsigned char * get_model_pointer()
    {
         
        return lenet5_tflite;
    }
    
    unsigned int get_model_size()
    {
         
        return lenet5_tflite_len;
    }
    
  3. 增加函数头文件
    #ifndef __MODEL_INTERFACE_H__
    #define __MODEL_INTERFACE_H__
    
    unsigned char * get_model_pointer();
    unsigned int get_model_size();
    
    
### TensorFlow Lite Micro 使用指南 #### 1. 平台支持情况 TensorFlow Lite Micro 已经能够在多个微控制器平台上运行,其中包括乐鑫 ESP32 和 Arduino BLE 33 Nano Sense 这样的设备[^1][^2]。 #### 2. 开发环境搭建 为了开始使用 TensorFlow Lite Micro,在本地计算机上设置开发环境是必要的。通常这涉及到安装特定版本的 Python、下载并编译 TensorFlow 源码以及获取目标硬件的支持库。对于某些平台来说,可能还需要额外工具链来完成固件构建过程。 #### 3. 示例项目介绍 下面是一个简单的 C++ 程序片段用于展示如何加载预训练模型并在嵌入式系统中执行推理操作: ```cpp #include "tensorflow/lite/micro/all_ops_resolver.h" #include "tensorflow/lite/micro/micro_interpreter.h" // ...其他头文件... const tflite::Model* model = tflite::GetModel(g_model_data); if (model->version() != TFLITE_SCHEMA_VERSION) { return kTfLiteError; } static tflite::MicroInterpreter interpreter(model, resolver, tensor_arena, kTensorArenaSize); TfLiteStatus allocate_status = interpreter.AllocateTensors(); if (allocate_status != kTfLiteOk){ return allocate_status; } ``` 这段代码展示了初始化解释器的过程,其中 `g_model_data` 是已经转换成适合于微控制器使用的 FlatBuffer 格式的机器学习模型数据;而 `kTensorArenaSize` 则定义了一个工作缓冲区大小用来存储中间计算结果和其他临时变量。 #### 4. 资源推荐 《TinyML》这本书籍提供了非常详尽的内容帮助读者理解 TensorFlow Lite for Microcontrollers 的各个方面,从基础概念到高级技巧都有涉及[^3]。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值