编译iOS的TensorFlow Lite Benchmark应用

本文记录了在MacBook上编译TensorFlow Lite iOS Benchmark的过程。包括在Venv环境下编译,从源码构建TF - 2.4.0,为iOS构建TensorFlow Lite,在Xcode里编译等步骤。还提及后续计划,如弄清iOS程序结构、在真机上运行并启用相关Delegate。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

田海立@CSDN 2020-12-26

TensorFlow Lite可以运行在Android/iOS/Linux等系统上,也可以通过各自系统上支持的TFLite Delegate(NNAPI / CoreML / GPU / xnnpack / Hexagon)利用AI硬件加速器进行计算。TFLite有其Benchmark工具,过去笔者关注重点在Android/Linux系统上,遇到iOS都是直接略过,今天在MacBook 上编译了一下iOS的Benchmark,本文记录之。

笔者电脑上可能之前已经安装了些程序,并不是全新的系统,所以如果你遇到还未安装的软件,需要自己安装一下。

 

1. Venv环境下编译

创建venv

HailiTIANdeMacBook-Pro:~ hailitian$ virtualenv --system-site-packages -p python3 venv_tf-2.4.0/
HailiTIANdeMacBook-Pro:~ hailitian$ cd venv_tf-2.4.0/
HailiTIANdeMacBook-Pro:venv_tf-2.4.0 hailitian$ source bin/activate
(venv_tf-2.4.0) HailiTIANdeMacBook-Pro:venv_tf-2.4.0 hailitian$

 退出venv

(venv_tf-2.4.0) HailiTIANdeMacBook-Pro:venv_tf-2.4.0 hailitian$ deactivate

2. Build TF-2.4.0 from source for MacOS

2.1 安装依赖

(venv_tf-2.4.0) HailiTIANdeMacBook-Pro:venv_tf-2.4.0 hailitian$ pip install -U --user pip numpy wheel
(venv_tf-2.4.0) HailiTIANdeMacBook-Pro:venv_tf-2.4.0 hailitian$ pip install -U --user keras_preprocessing --no-deps
(venv_tf-2.4.0) HailiTIANdeMacBook-Pro:venv_tf-2.4.0 hailitian$ brew install bazel

2.2 获取Source

(venv_tf-2.4.0) HailiTIANdeMacBook-Pro:venv_tf-2.4.0 hailitian$ git clone https://github.com/tensorflow/tensorflow.git
(venv_tf-2.4.0) HailiTIANdeMacBook-Pro:venv_tf-2.4.0 hailitian$ cd tensorflow/
(venv_tf-2.4.0) HailiTIANdeMacBook-Pro:tensorflow hailitian$ git checkout v2.4.0

2.3 配置

(venv_tf-2.4.0) HailiTIANdeMacBook-Pro:tensorflow hailitian$ ./configure
AndroidNDK: /Users/hailitian/Android/sdk/ndk/21.3.6528147
AndroidSDK: /Users/hailitian/Android/sdk
Do you wish to build TensorFlow with iOS support? [y/N]: y

 

3.Build TensorFlow Lite for iOS

3.0 Install Xcode

从App Store安装

3.1 Build TensorFlowLiteC framework

(非必选,可略过)

bazel build --config=ios_fat -c opt \
  //tensorflow/lite/ios:TensorFlowLiteC_framework

3.2 TFLite iOS Benchmark App

$ cd tensorflow/lite/tools/benchmark/ios
$ ./build_benchmark_framework.sh

 

4. Xcode里编译

用Xcode打开tensorflow/lite/tools/benchmark/ios/TFLiteBenchmark/TFLiteBenchmark.xcodeproj,下载并把mobilenet_v1_1.0_224.tflite放到tensorflow/lite/tools/benchmark/ios/TFLiteBenchmark/TFLiteBenchmark/benchmark_data/下。

为模拟器iphone11编译TFLiteBenchmark。

编译成功之后,运行

 

5. 后续计划

作为TFLite很熟悉的笔者来说,TFLite的核心以及Benchmark不在话下,上面这些工作没怎么费劲给编好了。下一步要在iOS系统真实评估就需要:

  • 弄清iOS程序的结构:如何配置模型、执行参数等;
  • 运行在真机上:并enable CoreML Delegate & GPU Delegate

 


参考资源

TensorFlow官网(tensorflow.org)无法访问,但是google.cn可以访问;github也可以访问。有这两个就可以了

  1. TensorFlow Build from source: https://tensorflow.google.cn/install/source
  2. Build TensorFlow Lite for iOShttps://tensorflow.google.cn/lite/guide/build_ios
  3. TFLite Benchmarkhttps://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/tools/benchmark/ios/

 

<think>我们参考了用户提供的引用内容,特别是引用[1]和[3]中关于TensorFlowLite部署的流程。用户明确希望了解如何使用TensorFlowLite将模型部署到移动端(Android/iOS)。根据引用内容,部署流程主要包括三个步骤:模型转换、模型优化和移动端集成。我们将按照以下结构组织回答:1.模型转换:将TensorFlow模型转换为TensorFlowLite格式(.tflite)2.模型优化:使用量化等技术优化模型,以减小模型体积和提升推理速度3.移动端集成:分别介绍Android和iOS平台集成TFLite模型的方法4.性能监控与调试:简要介绍如何监控模型在移动端的性能注意:引用[3]提供了一个转换代码示例,我们将引用该代码并解释。同时,我们将生成相关问题。</think>### TensorFlow Lite移动端部署指南 以下流程基于引用内容[1][2][3],完整实现TensorFlow模型到移动端(Android/iOS)的部署: #### 1. **模型转换**(核心步骤) 将训练好的模型转换为`.tflite`格式: ```python import tensorflow as tf # 转换SavedModel格式(推荐) converter = tf.lite.TFLiteConverter.from_saved_model('./your_model_dir') converter.target_spec.supported_ops = [ tf.lite.OpsSet.TFLITE_BUILTINS, # 基础算子 tf.lite.OpsSet.SELECT_TF_OPS # 扩展算子支持[^3] ] tflite_model = converter.convert() # 保存为.tflite文件 with open("model.tflite", "wb") as f: f.write(tflite_model) ``` **关键参数**: - **量化压缩**:添加`converter.optimizations = [tf.lite.Optimize.DEFAULT]`可减小模型体积50-75%[^1] - **输入输出设置**:`converter.input_shape = [1, 224, 224, 3]` 指定输入维度 --- #### 2. **模型优化** | 优化技术 | 效果 | 适用场景 | |-------------------|-------------------------------|----------------------| | 动态范围量化 | 体积减小4倍,精度损失<1% | 通用模型[^1] | | 全整数量化 | 体积减小10倍,需校准数据集 | 实时推理(CPU/TPU) | | 剪枝+量化 | 体积减小20倍 | 超轻量级应用[^2] | --- #### 3. **移动端集成** **Android集成**(Java/Kotlin): ```java // 步骤1:将model.tflite放入assets文件夹 // 步骤2:添加依赖 implementation 'org.tensorflow:tensorflow-lite:2.9.0' // 步骤3:加载模型并推理 try (Interpreter interpreter = new Interpreter(loadModelFile(assetManager))) { float[][] input = preprocess(image); // 输入预处理 float[][] output = new float[1][10]; // 输出缓冲区 interpreter.run(input, output); // 执行推理 } ``` **iOS集成**(Swift): ```swift // 步骤1:导入TensorFlowLite框架 // 步骤2:加载模型 let modelPath = Bundle.main.path(forResource: "model", ofType: "tflite") var interpreter: Interpreter! interpreter = try Interpreter(modelPath: modelPath) // 步骤3:推理 try interpreter.allocateTensors() try interpreter.copy(inputData, toInputAt: 0) try interpreter.invoke() let output = try interpreter.output(at: 0) ``` --- #### 4. **性能监控与调试** - **基准测试**:使用[TFLite Benchmark Tool](https://www.tensorflow.org/lite/performance/measurement)评估延迟和内存 - **性能优化**: - 启用GPU代理:`Interpreter.Options().setUseGpu(true)`(Android) - 使用NNAPI:`interpreter.setUseNNAPI(true)`(支持高通DSP) - **日志分析**:通过Android Studio Logcat或Xcode控制台查看TFLite日志 --- ### 常见问题解决 1. **算子不支持**: - 检查转换时是否启用`SELECT_TF_OPS` - 使用[TFLite Op Compatibility](https://www.tensorflow.org/lite/guide/ops_compatibility)工具 2. **输入输出异常**: - 验证移动端预处理与训练时一致(如RGB/BGR顺序) - 使用`interpreter.getInputTensor(0).shape()`检查维度 > 部署完成后,建议通过TensorBoard Lite分析推理性能[^1],或使用Firebase Performance Monitoring进行实时监控[^2]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值