前言:Google 開源的深度學(xué)習(xí)框架 tensorflow 成為2016年最受歡迎的深度學(xué)習(xí)框架之一。tensorflow 除了支持 pc 端外,還較好的支持了 iOS督笆,android 移動(dòng)端平臺(tái)。
下面我們開始學(xué)習(xí)如何編譯 tensorflow 在iOS平臺(tái)上運(yùn)行。
我的運(yùn)行環(huán)境
- macOS High Sierra Version: 10.13.3
- Xcode Version: 9.2
以下文章為參考 tensorflow 的官方使用文檔 編譯 iOS 平臺(tái)上的 tensorflow 庫天通。
- tensorflow 的倉庫 repo 位于 Github 上,我們作為開發(fā)者要在其基礎(chǔ)上做開發(fā)熄驼,首先就需要 fork 一份 repo 到自己的 Github 賬戶下像寒。
一、安裝所需工具
工欲善其事必先利其器瓜贾,在開始編譯工作之前诺祸,需要準(zhǔn)備一些編譯所必須的工具:
- 安裝 命令行工具 (command-line tools):
xcode-select --install
2、安裝 Homebrew:
Homebrew: Mac os x 上包管理工具祭芦,具體使用方法可參考Doc筷笨。
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install automake
brew install libtool
4实束、另外還要下載模型數(shù)據(jù)包 graphs :
mkdir -p ~/graphs
curl -o ~/graphs/inception.zip \
https://storage.googleapis.com/download.tensorflow.org/models/inception5h.zip \
&& unzip ~/graphs/inception.zip -d ~/graphs/inception
二奥秆、克隆 TensorFlow 的源碼
git clone https://github.com/tensorflow/tensorflow
三、編譯 TensorFlow 的iOS 靜態(tài)庫
1咸灿、在 TensorFlow 的 tensorflow/contrib/makefile/ 目錄下构订,有很多可使用的編譯腳本,其中build_all_ios.sh
腳本專門用來一鍵編譯TensorFlow iOS靜態(tài)庫
2避矢、執(zhí)行 build_all_ios.sh
腳本進(jìn)行編譯:
tensorflow/contrib/makefile/build_all_ios.sh
-
這步編譯非常耗時(shí)悼瘾,我花了大概 100分鐘左右才編譯完成囊榜。build_all_ios.sh.jpg
四堰氓、下載工程所需要的數(shù)據(jù)模型
參考TensorFlow iOS Examples 文檔 加載 iOS demo 工程所需要的數(shù)據(jù)模型
在tensorflow文件夾的根目錄下挤渐,下載Inception v1,并將標(biāo)簽和圖形文件提取到數(shù)據(jù)文件夾中双絮,包括簡單的和相機(jī)的例子浴麻,需要操作的命令如下:
mkdir -p ~/graphs
curl -o ~/graphs/inception5h.zip \
https://storage.googleapis.com/download.tensorflow.org/models/inception5h.zip \
&& unzip ~/graphs/inception5h.zip -d ~/graphs/inception5h
cp ~/graphs/inception5h/* tensorflow/examples/ios/benchmark/data/
cp ~/graphs/inception5h/* tensorflow/examples/ios/camera/data/
cp ~/graphs/inception5h/* tensorflow/examples/ios/simple/data/
具體操作:先進(jìn)入 tensorflow 的根目錄,然后依次執(zhí)行上面的命令囤攀。四软免、工程中 Cocoapods 的安裝
1、將目錄更改為其中一個(gè)示例抚岗,下載TensorFlow-experimental pod或杠,并打開Xcode工作區(qū)。觀察:安裝pod可以花很長時(shí)間宣蔚,因?yàn)樗艽?~450MB)向抢。例如,如果你想運(yùn)行一個(gè)簡單的示例胚委,那么:
cd tensorflow/examples/ios/simple
pod install
open tf_simple_example.xcworkspace # obs, not the .xcodeproj directory
2挟鸠、但是我在執(zhí)行 pod install 的時(shí)候遇到了問題,TensorFlow-experimental
無法被安裝:
Analyzing dependencies
[!] Unable to find a specification for `TensorFlow-experimental`
隨后我在Stackoverflow:The pod TensorFlow-experimental is not found的問題上找到了解決方法亩冬。
然后艘希,我重新安裝和更新了最新版本的CocoaPods,問題解決硅急,如圖:
最后再一次執(zhí)行 pod install覆享,安裝 TensorFlow-experimental
成功:
五、真機(jī)測試
打開工程 tf_camera_example.xcworkspace 营袜,連上真機(jī)運(yùn)行撒顿,開始通過手機(jī)攝像頭,測試機(jī)器識(shí)別物體的概率:
-
蘋果識(shí)別率高達(dá)85%荚板,水瓶 83%凤壁,電腦62%吩屹,鍵盤 74% IMG_1581.jpgIMG_1580.jpgIMG_1576.jpgIMG_1577.jpg
總結(jié):
- 編譯過程:
還是比較繁瑣的,我嚴(yán)格按照官方文檔的說明拧抖,一步一步進(jìn)行安裝煤搜,避免了一些不必要的坑,安裝過程還是比較流暢的唧席。 - 遇到的坑:
在一些細(xì)節(jié)的安裝路徑上沒有太注意擦盾,寫錯(cuò)路徑導(dǎo)致某些依賴庫安裝失敗。遇到 Cocoapods 無法安裝 TensorFlow-experimental 在這上面花了些時(shí)間袱吆。 - 花費(fèi)的時(shí)間:
除了上面遇到坑所花費(fèi)的時(shí)間厌衙,編譯的過程和下載的過程中距淫,等待的時(shí)間比較多绞绒,因?yàn)橐螺d的依賴庫、文件和工具大部分都是外網(wǎng)榕暇,所以下載速度堪憂蓬衡,建議用VPN下載節(jié)約時(shí)間。 - 學(xué)到的知識(shí):
初步學(xué)習(xí)到了 TensorFlow 在 iOS 上安裝的整個(gè)過程彤枢,了解了 TensorFlow 源碼的主要文件結(jié)構(gòu)狰晚,使用了示例工程進(jìn)行測試。
本文參考資料:
- TensorFlow 的官方使用文檔
- Minmin.Sun Blog: tensorflow 在 iOS 平臺(tái)上的應(yīng)用
- iOS 開發(fā)迎來機(jī)器學(xué)習(xí)的春天--- TensorFlow
本文作者:Harveyhhw 轉(zhuǎn)載請注明缴啡。