mac上tflite编译
准备工作
为编译TensorFlow Lite的iOS版静态库, 需要用到MacOS上的终端. 如果还没达标,
那么须先安装 Xcode 8 or later and the tools using xcode-select
:
xcode-select --install
1.第一次安装,需要打开Xcode,按照提示授权信任.
2.如果你没有CocoaPods,先安装它
3.还需要安装 Homebrew installed.(可以去官网下载)
4.另外两个必要工具
automake/libtool:
brew install automake
brew install libtool
一.自己生成.a库,自己集成头文件到项目
步骤1.克隆TensorFlow源代码
1.首先,我们将计算机中的GitHub存储库克隆到一个文件夹中以获取演示应用程序。(创建一个文件夹来放置clone 下来的TensorFlow),执行代码
git clone https://github.com/tensorflow/tensorflow
步骤2.下载所需的依赖项
注意
•tips: 对于国内开发者,可能直接执行脚本,会有两个依赖包下载失败或者 出现问题导致即便下载依赖包步骤通过,也会缺失这两个依赖包,所以我们直接在文件里做了修改!
文件路径是tensorflow/lite/tools/make/download_dependencies.sh
,打开编辑如下图修改
EIGEN_URL="$(grep -o 'http.*bitbucket.org/eigen/eigen/get/.*tar\.gz' "${BZL_FILE_PATH}" | grep -v bazel-mirror | head -n1)"
GEMMLOWP_URL="$(grep -o 'https://mirror.bazel.build/github.com/google/gemmlowp/.*zip' "${BZL_FILE_PATH}" | head -n1)"
GOOGLETEST_URL="https://github.com/google/googletest/archive/release-1.8.0.tar.gz"
ABSL_URL="$(grep -o 'https://github.com/abseil/abseil-cpp/.*tar.gz' "${BZL_FILE_PATH}" | head -n1)"
NEON_2_SSE_URL="https://github.com/intel/ARM_NEON_2_x86_SSE/archive/master.zip"
FARMHASH_URL="https://mirror.bazel.build/github.com/google/farmhash/archive/816a4ae622e964763ca0862d9dbd19324a1eaf45.tar.gz"
FLATBUFFERS_URL="https://github.com/google/flatbuffers/archive/master.zip"
# 下面这两个联网下载。很有可能下载不下来, 我们就不要用脚本下载了,注释掉
# MODELS_URL="https://storage.googleapis.com/download.tensorflow.org/models/tflite/mobilenet_v1_1.0_224_ios_lite_float_2017_11_08.zip"
# QUANTIZED_MODELS_URL="https://storage.googleapis.com/download.tensorflow.org/models/tflite/mobilenet_v1_224_android_quant_2017_11_08.zip"
还有下面这块也需要注释
download_and_extract "${EIGEN_URL}" "${DOWNLOADS_DIR}/eigen"
download_and_extract "${GEMMLOWP_URL}" "${DOWNLOADS_DIR}/gemmlowp"
download_and_extract "${GOOGLETEST_URL}" "${DOWNLOADS_DIR}/googletest"
download_and_extract "${ABSL_URL}" "${DOWNLOADS_DIR}/absl"
download_and_extract "${NEON_2_SSE_URL}" "${DOWNLOADS_DIR}/neon_2_sse"
download_and_extract "${FARMHASH_URL}" "${DOWNLOADS_DIR}/farmhash"
download_and_extract "${FLATBUFFERS_URL}" "${DOWNLOADS_DIR}/flatbuffers"
# 下面这两个的意思是下载完依赖包,解压到的路径,同理,也注释掉
# download_and_extract "${MODELS_URL}" "${DOWNLOADS_DIR}/models"
# download_and_extract "${QUANTIZED_MODELS_URL}" "${DOWNLOADS_DIR}/quantized_models"
现在可以安心下载依赖包(TensorFlow的根目录下执行)
1.这将从Web获取库和数据的副本并安装它们(tensorflow/lite/downloads文件里面)
tensorflow/lite/tools/make/download_dependencies.sh
下载完成downloads里面是7个文件夹(正确应该是9个),别忘了,上面我们注释掉了两个包的下载,现在需要根据脚本里这两个的下载链接
MODELS_URL、
QUANTIZED_MODELS_URL,
下载并解压。下载完成后,根据注释掉的解压路径,分别把两个文件放到对应的路径下面,缺少的文件夹自己创建
tensorflow/lite/tools/make/downloads/models
、tensorflow/lite/tools/make/downloads/quantized_models
2.设置了所有依赖项后,您现在可以在iOS上为所有五种支持的体系结构构建库:
tensorflow/lite/tools/make/build_ios_universal_lib.sh
在引擎盖下,它使用makefile tensorflow/lite来构建库的不同版本,然后调用将lipo它们捆绑到包含armv7,armv7s,arm64,i386和x86_64体系结构的通用文件中。生成的库在 tensorflow/lite/tools/make/gen/lib/libtensorflow-lite.a
路径为:tensorflow/tensorflow/lite/tools/make/gen
如果出现错误,例如no such file or directory: 'x86_64'运行时 build_ios_universal_lib.sh:打开Xcode> Preferences> Locations,并确保在“命令行工具”下拉列表中选择了一个值
在您自己的应用程序中使用
您需要更新应用中的各种设置以链接TensorFlow Lite。您可以在示例项目中查看它们, tensorflow/lite/examples/ios/simple/simple.xcodeproj但这里是完整的纲要:
您需要将库添加 tensorflow/lite/gen/lib/libtensorflow-lite.a到链接构建阶段,并在“搜索路径”中添加tensorflow/lite/gen/lib“库搜索路径”设置。
在头文件搜索路径需要包含:
根文件夹,
tensorflow/lite/downloads
tensorflow/lite/downloads/flatbuffers/include
应通过设置C++ Language Dialect 为GNU++11(或GNU++14)和C++ Standard Libraryto 来启用C ++ 11支持(或更高版本)libc++。
一. CocoaPods 简洁方便
步骤1.克隆TensorFlow源代码
首先,我们将计算机中的GitHub存储库克隆到一个文件夹中以获取演示应用程序。
git clone https://github.com/tensorflow/tensorflow
步骤2.下载所需的依赖项
tensorflow/lite/examples/ios/download_models.sh
运行以下命令安装TensorFlow Lite pod:
cd tensorflow/lite/examples/ios/camerapod install
如果您之前安装过此pod并且该命令不起作用,请尝试
pod repo update
步骤3.构建XCode项目
项目路径在tensorflow/tensorflow/lite/examples/ios/camera
可以运行该camera 需要
mobilenet_v1_1.0_224.tflite
,mobilenet_quant_v1_224.tflite
,labels.txt
下载地址是
mobilenet_v1_1.0_224.tflite,
mobilenet_quant_v1_224.tflite,
工程可以跑起来了!
ps:旧版可以在这个路径下找到models
/tensorflow/contrib/lite/g3doc/models.md
参考:【TensorFlow学习】iOS构建TensorFlow Lite
上面是参考博客的内容,自己的实际操作:
步骤1.克隆TensorFlow源代码
从github下载不下来就从国内镜像下载(这里我指定了一个较新的版本):
git clone -b v2.4.1 https://gitee.com/mirrors/tensorflow.git
步骤2.下载所需的依赖项
不知道是网速原因还是国内原因,依赖库很难下载下来,不论是哪个依赖库。我的解决办法是download_dependencies.sh中没有给定明确依赖库url的,执行脚本时会显示url,然后将该url复制到迅雷里面下载。
然后将下载好的库解压放到downloads文件夹下的相应目录中,然后注释掉download_dependencies.sh对应库的行,然后继续执行download_dependencies.sh脚本,重复这种操作直到把所有的下载依赖都注释完。
注释后的内容如下。红的框内都是我下载完成后注释掉的:
接下来编译:
tensorflow/lite/tools/make/build_ios_universal_lib.sh
参考:https://blog.csdn.net/JyuSun/article/details/79387381
执行*.sh命令出现问题
: invalid option
Usage: /bin/bash [GNU long option] [option] .../bin/bash [GNU long option] [option] script-file ...
GNU long options:--debug--debugger--dump-po-strings--dump-strings--help--init-file--login--noediting--noprofile--norc--posix--protected--rcfile--rpm-requires--restricted--verbose--version
Shell options:-irsD or -c command or -O shopt_option (invocation only)-abefhkmnptuvxBCHP or -o option
原因,是因为脚本直接从windows系统复制过来导致的
解决方案
安装dos2unix
在mac上安装
brew install dos2unix
在centos上安装
yum install dos2unix
转换脚本:
dos2unix *.sh
- 再次执行*.sh脚本即可
最终生成路径:
tensorflow/lite/tools/make/gen/lib/tensorflow-lite.a
同时在tensorflow/lite/tools/make/gen/lib 目录下有不同架构的库可以使用。
运行TesnorFlow源码中的实例
需要安装cocoapods:
sudo gem install cocoapods
下载应用程序所需要的模型文件:
sh tensorflow/lite/examples/ios/download_models.sh
进入项目目录,安装pod:
cd tensorflow/lite/examples/ios/camera/
pod install
pod update
安装完成之后,打开工程文件:
open tflite_camera_example.xcworkspace
现在可以再iPhone上运行了。
在应用中使用本地编译好的库
你需要更新一些你的应用设置来链接 TensorFlow Lite。你可以在示例项目 tensorflow/lite/examples/ios/simple/simple.xcodeproj 查看这些设置, 但下面提供了一个完整的纲要:
添加库,你需要将库 tensorflow/lite/tools/make/gen/lib/libtensorflow-lite.a 加入你的链接构建阶段,并且在 Search Paths 的 Library Search Paths 设置中添加 tensorflow/lite/tools/make/gen/lib。
Header Search 路径需要包含:
- tensorflow/lite 的根目录
- tensorflow/lite/tools/make/downloads
- tensorflow/lite/tools/make/downloads/flatbuffers/include
设置 C++ Language Dialect 为 GNU++11 (或 GNU++14), 同时设置 C++ Standard Library 为 libc++ 来启用 C++11 支持 (或更高版本)
tensorflow/lite/examples/ios下还有其他应用程序,可以参考。
参考:TensorFlow Lite(四)在 iOS 上构建 TensorFlow Lite
mac上tflite编译相关推荐
- 在mac上反编译apk
下载链接 apktool: https://ibotpeaches.github.io/Apktool/install/ dex2jar: https://github.com/pxb1988/dex ...
- android6.0-nexus5 mac上docker 编译刷机
下载源码 hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 300g ~/android.dmg hdiuti ...
- TiDB之mac上搭建及调试技巧
此文目的 由于本人最近已经成为TiDB的粉丝,所以就开始各种研究TiDB的源码,研究源码这个事情,首先就需要在自己电脑上不断的调试及修改.TiDB本身的代码是非常容易编译和调试的,但是要把PD.TiK ...
- OpenSSL简介及在Windows、Linux、Mac系统上的编译步骤
OpenSSL介绍:OpenSSL是一个强大的安全套接字层密码库,囊括主要的密码算法.常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用. SSL是SecureSock ...
- mac+php7+mysql.so_在Mac上编译安装PHP7的开发环境
今天看到鸟哥发微博说php7 beta1测试版发布了,于是赶紧就去抢先下载,把自己的开发环境也升级到PHP7去,话不多少,下面就一起来搞起吧... 首先你得去官网下载php7 beta1的版本 这里由 ...
- 在 Mac 上为 Android 编译 WebRTC
在 Mac 上为 Android 编译 WebRTC 的基本流程和在任意平台上编译任何其它目标平台的 WebRTC 大体一致,但在 Mac 上为 Android 编译 WebRTC 不是 WebRTC ...
- 在Mac上为自己手动编译安装一套PHP7的开发环境
首先你得去官网下载php7 beta1的版本 这里由于我是在mac上安装,所以就去下载linux相关的版本,地址也直接附上了 php7 beta1 windows版的官方也有发布详情猛戳:这里 解压安 ...
- mac编译安装php环境,在Mac上编译安装PHP7的开发环境
今天看到鸟哥发微博说php7 beta1测试版发布了,于是赶紧就去抢先下载,把自己的开发环境也升级到PHP7去,话不多少,下面就一起来搞起吧... 首先你得去官网下载php7 beta1的版本 这里由 ...
- Cocos2d-js-v3.2 在 mac 上配置环境以及编译到 Andorid 的注意事项(转)
转自:http://blog.csdn.net/song_hui_xiang/article/details/42921537 准备工作: 下载cocos2d-js引擎,版本v3.2,要做的第一件事就 ...
最新文章
- 学生管理系统(C语言版)
- 【怎样写代码】向现有类型“添加”方法 -- 扩展方法(二):扩展方法的实现与调用
- 51 单片机 跑马灯2
- 统计字符串中单词个数
- Rails 开发小贴士积累
- 自带flash的浏览器_解决Flash插件已被屏蔽的问题(谷歌、火狐、IE、Edge)
- bzoj3442学习小组
- c++驱动键鼠源码_DD驱动级虚拟键鼠套装
- 实现一个行内三个div等分_css 实现等分布局
- 关于Big Sur 中获取 macOS Monterey Safari 标签的方法
- 鸟哥的Linux私房菜第零章
- Linux基础:systemctl和journalctl常用命令
- WMI服务不存在或标记为删除解决方案
- VC++使用OD反汇编引擎(非BC做DLL或LIB包装)
- 从行业共生到产业共生——2021 MWC上海展观察
- 什么是DOM(个人理解)
- 2021哈工大软件构造Lab3
- flume+kafka+hdfs详解
- Adobe Flash Lite
- ceph mon 故障登记