tensorflow 幾個android demo源碼環(huán)境搭建

tensorflow 幾個android demo源碼環(huán)境搭建

說明

tensorflow上有幾個example,本文重點(diǎn)關(guān)注其在android上的應(yīng)用狭归,源碼在gitHub上有,這個apk是什么樣子熄诡,大家可以通過點(diǎn)擊這里進(jìn)行下載吮成。

系統(tǒng)要求

  1. 如果需要獨(dú)立的庫,需要分開構(gòu)建tensorflow的源碼
  2. 物體追蹤以及YUV轉(zhuǎn)RGB在libtensorflow_demo.so
  3. android5.0 ( API21 )及以上

幾個例子的說明

這個apk安裝完成后會有3個圖標(biāo)办成,啟動不同的Activity對應(yīng)不同的demo,每個demo都可以通過音量鍵來開啟和關(guān)閉后臺信息搂漠。

  • TF Classify:

    啟動頁面為/src/org/tensorflow/demo/ClassifierActivity.java,其作用是啟動相機(jī)迂卢,自動識別出相機(jī)預(yù)覽框中的物體。

  • TF Detect

    啟動頁面為/src/org/tensorflow/demo/DetectorActivity.java桐汤,使用深度神經(jīng)網(wǎng)絡(luò)模型進(jìn)行運(yùn)行物體檢測而克。

  • TF Stylize
    啟動頁面為src/org/tensorflow/demo/StylizeActivity.java,實(shí)時將相機(jī)的預(yù)覽界面處理成特定畫風(fēng)。

新版本apk的下載

最新版本的apk資源怔毛,可以訪問https://ci.tensorflow.org/view/Nightly/job/nightly-android/ 员萍,點(diǎn)擊view節(jié)點(diǎn)下面的output,點(diǎn)擊tensorflow_demo.apk進(jìn)行下載拣度。

好了碎绎,以上是一些基本的介紹,現(xiàn)在我們開始下載demo的源碼抗果,進(jìn)行編譯筋帖。

1. 安裝tensorflow

關(guān)于tensorflow的安裝,可以直接前往官方文檔地址https://www.tensorflow.org/install/ 冤馏,也可以參照我之前寫的博客 http://www.reibang.com/p/5b4e961f010f 日麸,此處不再贅述。

2. 安裝構(gòu)建工具bazel

bazel的安裝宿接,比較簡單赘淮,可以直接參考官方文檔https://bazel.build/versions/master/docs/install.html ,但值得注意的是睦霎,bazel目前還不支持在window上構(gòu)建Android,官方說的是后期可以支持gradle走诞。

博主用的是ubuntu副女,比較方便,簡單提一下蚣旱。

  1. 需要ubuntu14.04及以上
  2. 需要JDK 8碑幅,如果沒安裝請運(yùn)行
sudo apt-get install openjdk-8-jdk
  1. 添加APT庫
echo "deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list`

curl https://bazel.build/bazel-release.pub.gpg | sudo apt-key add -
  1. 安裝bazel
sudo apt-get update && sudo apt-get install bazel

如果只是要更新戴陡,則運(yùn)行

sudo apt-get upgrade bazel

3. 下載源碼

好了,終于到了下載源碼部分了沟涨,首先恤批,新建一個文件夾,比如AI裹赴,然后進(jìn)入到AI文件夾喜庞,使用git下載代碼。

git clone --recurse-submodules https://github.com/tensorflow/tensorflow.git

注意--recurse-submodules參數(shù)是用來防止后面出現(xiàn)的protobuf錯誤的棋返。

4. 配置本地環(huán)境

載好源碼后延都,會出現(xiàn)一個tensorflow的文件夾,這里面放著所有tensorflow的源碼睛竣,但是我們要關(guān)注的源碼位于..\AI\tensorflow\tensorflow\examples\android目錄下晰房。

1. 修改WORKSPACE文件

因?yàn)楸镜丨h(huán)境的不同,因此我們需要先修改/tensorflow目錄下的WORKSPACE文件,找到如下一段代碼射沟,對應(yīng)配置好你的sdk版本以及位置殊者,還有ndk的版本和位置,并且去掉注釋:

  # Uncomment and update the paths in these entries to build the Android demo.
  #android_sdk_repository(
  #    name = "androidsdk",
  #    api_level = 23,
  #    # Ensure that you have the build_tools_version below installed in the 
  #    # SDK manager as it updates periodically.
  #    build_tools_version = "25.0.2",
  #    # Replace with path to Android SDK on your system
  #    path = "<PATH_TO_SDK>",
  #)
  #
  # Android NDK r12b is recommended (higher may cause issues with Bazel)
  #android_ndk_repository(
  #    name="androidndk",
  #    path="<PATH_TO_NDK>",
  #    # This needs to be 14 or higher to compile TensorFlow. 
  #    # Note that the NDK version is not the API level.
  #    api_level=14)

比如我的就修改成了:

android_sdk_repository(
    name = "androidsdk",
    # 設(shè)置成你安裝sdk的最高版本验夯,對應(yīng)修改manifest.xml以及gradle的target
    api_level = 23,
    # Ensure that you have the build_tools_version below installed in the 
    # SDK manager as it updates periodically.
    build_tools_version = "25.0.3",
    # Replace with path to Android SDK on your system
    path = "/home/cxq/android-sdk-linux",
)

# 推薦使用r12版本猖吴,更高的版本可能會造成bazel出錯
android_ndk_repository(
    name="androidndk",
    path="/home/cxq/android-sdk-linux/ndk-bundle",
    # This needs to be 14 or higher to compile TensorFlow. 
    # Note that the NDK version is not the API level.
    api_level=14)

注意

  1. api_level需要設(shè)置成你本地sdk最高的版本,推薦23及以上簿姨,在android:build.gradle 以及AndroidManifest.xml也對應(yīng)修改targetSdkVersion
  2. ndk的版本距误,推薦使用r12,否則bazel編譯的時候會報(bào)錯扁位。

2. 構(gòu)建

進(jìn)入到AI/tensorflow目錄下准潭,輸入以下命令:

bazel build -c opt //tensorflow/examples/android:tensorflow_demo

如果有報(bào)protocol buffers的相關(guān)錯誤,運(yùn)行git submodule update --init命令域仇,并且確保WORKSPACE文件配置對了

3. 安裝apk

開啟手機(jī)的調(diào)試模式刑然,運(yùn)行:

adb install -r bazel-bin/tensorflow/examples/android/tensorflow_demo.apk

4. 使用Android Studio

可以在Android Studio中直接打開tensorflow/examples/android,但是需要配置好你的gradle暇务、sdk泼掠、ndk

  1. gradle必須要在3.3以上版本
  2. build_tool_version需要指定在25以上
  3. 配置好你的ndk
  4. 很重要:在android:build.gradle 中配置好你的bazel路徑,默認(rèn)的是如下的:
def bazelLocation = '/usr/local/bin/bazel'

但是在該路徑下并沒有bazel垦细,因此會報(bào)如下錯誤:

Error:Execution failed for task ':buildNativeBazel'.
A problem occurred starting process 'command '/usr/local/bin/bazel''

此時只需要把路徑改成你的bazel路徑就好择镇,比如我的是:

def bazelLocation = '/usr/bin/bazel'

這樣配置完畢后,就能直接在AS中使用run去運(yùn)行了括改。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末腻豌,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌吝梅,老刑警劉巖虱疏,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異苏携,居然都是意外死亡做瞪,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進(jìn)店門右冻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來装蓬,“玉大人,你說我怎么就攤上這事国旷∶铮” “怎么了?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵跪但,是天一觀的道長履羞。 經(jīng)常有香客問我,道長屡久,這世上最難降的妖魔是什么忆首? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮被环,結(jié)果婚禮上糙及,老公的妹妹穿的比我還像新娘。我一直安慰自己筛欢,他們只是感情好浸锨,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著版姑,像睡著了一般柱搜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上剥险,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天聪蘸,我揣著相機(jī)與錄音,去河邊找鬼表制。 笑死健爬,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的么介。 我是一名探鬼主播娜遵,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼壤短!你這毒婦竟也來了魔熏?” 一聲冷哼從身側(cè)響起衷咽,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤鸽扁,失蹤者是張志新(化名)和其女友劉穎蒜绽,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體桶现,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡躲雅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了骡和。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片相赁。...
    茶點(diǎn)故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖慰于,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤撤师,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布海洼,位于F島的核電站,受9級特大地震影響休里,放射性物質(zhì)發(fā)生泄漏蛆挫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一妙黍、第九天 我趴在偏房一處隱蔽的房頂上張望悴侵。 院中可真熱鬧,春花似錦拭嫁、人聲如沸可免。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽浇借。三九已至,卻和暖如春驮宴,著一層夾襖步出監(jiān)牢的瞬間逮刨,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工堵泽, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留修己,地道東北人。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓迎罗,卻偏偏與公主長得像睬愤,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子纹安,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內(nèi)容