公司最近的項目TensorFlow lite,查找了一些博客,發(fā)現很多都是時間太久了,走了不少彎路,接下來我來總結一下我的整合過程,希望大家可以避免走彎路
準備工作
為編譯TensorFlow Lite的iOS版靜態(tài)庫, 需要用到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存儲庫克隆到一個文件夾中以獲取演示應用程序。(創(chuàng)建一個文件夾來放置clone 下來的TensorFlow),執(zhí)行代碼
git clone https://github.com/tensorflow/tensorflow
步驟2.下載所需的依賴項
注意
?tips: 對于國內開發(fā)者玄帕,可能直接執(zhí)行腳本,會有兩個依賴包下載失敗或者 出現問題導致即便下載依賴包步驟通過塞椎,也會缺失這兩個依賴包桨仿,所以我們直接在文件里做了修改!
文件路徑是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的根目錄下執(zhí)行)
1.這將從Web獲取庫和數據的副本并安裝它們(tensorflow/lite/downloads文件里面)
tensorflow/lite/tools/make/download_dependencies.sh
下載完成downloads里面是7個文件夾(正確應該是9個)吹零,別忘了,上面我們注釋掉了兩個包的下載拉庵,現在需要根據腳本里這兩個的下載鏈接
MODELS_URL灿椅、
QUANTIZED_MODELS_URL,
下載并解壓钞支。下載完成后茫蛹,根據注釋掉的解壓路徑,分別把兩個文件放到對應的路徑下面,缺少的文件夾自己創(chuàng)建
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/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