TensorFlow Lite源码解析

潘衡
2023-12-01

        TensorFlow Lite是专门针对移动和嵌入式设备的特性重新实现的TensorFlow版本。相比普通的TensorFlow,它的功能更加精简,不支持模型的训练,不支持分布式运行,也没有太多跨平台逻辑,支持的op也比较有限。TensorFlow Lite使用运行于移动端,有些设备甚至是资源非常有限,因此在内存和解析方面必须尽可能减少开销。TensorFlow导出的模型使用的是Protocol Buffer协议,因此有必要将它转换到性能更优的FlatBuffer格式。

        可以通过多个Delegate使用多个加速器做加速的,只要我们在Interpreter实例化之后以及调用Interpreter.Invoke()之前依次初始化不同类型的Delegate,例如GPU、NNAPI等的Delegate,并且使用interpreter->ModifyGraphWithDelegate(delegate)对这些Delegate一一注册便可以。

TFLite进行推理主要分为以下几步:

1. 加载模型文件。

2. 创建一个类Interpreter的实例。在这个过程中,推理引擎会对模型进行解析、分配模型运行过程中需要的内存空间以及确定模型中各个层之间的执行顺序。

3. 通过Delegate使用加速器做加速。

4. 准备输入数据,这个需要根据模型要求的输入格式做对应的处理;

5. 调用Interpreter.Invoke()进行推理;

6. 获取推理结果。

预训练模型:

  • inception v3:用于目标检测
  • MobileNets:专门针对移动端的模型,具有低延迟,高速度,
 类似资料: