田海立@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也可以访问。有这两个就可以了
- TensorFlow Build from source: https://tensorflow.google.cn/install/source
- Build TensorFlow Lite for iOS:https://tensorflow.google.cn/lite/guide/build_ios
- TFLite Benchmark: https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/tools/benchmark/ios/