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/modelstensorflow/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/camera
 pod 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脚本,重复这种操作直到把所有的下载依赖都注释完。

注释后的内容如下。红的框内都是我下载完成后注释掉的:

猜你喜欢

转载自blog.csdn.net/juluwangriyue/article/details/115011597