色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

盤點(diǎn)TensorFlow在智能終端中的應(yīng)用

jmiy_worldofai ? 來源:未知 ? 作者:胡薇 ? 2018-09-29 11:33 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

深度學(xué)習(xí)在圖像處理、語音識(shí)別、自然語言處理領(lǐng)域的應(yīng)用取得了巨大成功,但是它通常在功能強(qiáng)大的服務(wù)器端進(jìn)行運(yùn)算。

如果智能手機(jī)通過網(wǎng)絡(luò)遠(yuǎn)程連接服務(wù)器,也可以利用深度學(xué)習(xí)技術(shù),但這樣可能會(huì)很慢,而且只有在設(shè)備處于良好的網(wǎng)絡(luò)連接環(huán)境下才行,這就需要把深度學(xué)習(xí)模型遷移到智能終端。

由于智能終端CPU和內(nèi)存資源有限,為了提高運(yùn)算性能和內(nèi)存利用率,需要對服務(wù)器端的模型進(jìn)行量化處理并支持低精度算法TensorFlow版本增加了對AndroidiOS和Raspberry Pi硬件平臺(tái)的支持,允許它在這些設(shè)備上執(zhí)行圖像分類等操作。這樣就可以創(chuàng)建在智能手機(jī)上工作并且不需要云端每時(shí)每刻都支持的機(jī)器學(xué)習(xí)模型,帶來了新的APP。

本文主要基于看花識(shí)名APP應(yīng)用,講解TensorFlow模型如何應(yīng)用于Android系統(tǒng);在服務(wù)器端訓(xùn)練TensorFlow模型,并把模型文件遷移到智能終端;TensorFlow Android開發(fā)環(huán)境構(gòu)建以及應(yīng)用開發(fā)API。

看花識(shí)名APP

使用AlexNet模型、Flowers數(shù)據(jù)以及Android平臺(tái)構(gòu)建了“看花識(shí)名”APP。TensorFlow模型對五種類型的花數(shù)據(jù)進(jìn)行訓(xùn)練。如下圖所示:

Daisy:雛菊

Dandelion:蒲公英

Roses:玫瑰

Sunflowers:向日葵

Tulips:郁金香

在服務(wù)器上把模型訓(xùn)練好后,把模型文件遷移到Android平臺(tái),在手機(jī)上安裝APP。使用效果如下圖所示,界面上端顯示的是模型識(shí)別的置信度,界面中間是要識(shí)別的花:

TensorFlow模型如何應(yīng)用于看花識(shí)名APP中,主要包括以下幾個(gè)關(guān)鍵步驟:模型選擇和應(yīng)用、模型文件轉(zhuǎn)換以及Android開發(fā)。如下圖所示:

模型訓(xùn)練及模型文件

本章采用AlexNet模型對Flowers數(shù)據(jù)進(jìn)行訓(xùn)練。AlexNet在2012取得了ImageNet最好成績,top 5準(zhǔn)確率達(dá)到80.2%。這對于傳統(tǒng)的機(jī)器學(xué)習(xí)分類算法而言,已經(jīng)相當(dāng)出色。模型結(jié)構(gòu)如下:

本文采用TensorFlow官方Slim(https://github.com/tensorflow/models/tree/master/slim)AlexNet模型進(jìn)行訓(xùn)練。

首先下載Flowers數(shù)據(jù),并轉(zhuǎn)換為TFRecord格式:

DATA_DIR=/tmp/data/flowers python download_and_convert_data.py --dataset_name=flowers --dataset_dir="${DATA_DIR}"

執(zhí)行模型訓(xùn)練,經(jīng)過36618次迭代后,模型精度達(dá)到85%

TRAIN_DIR=/tmp/data/train python train_image_classifier.py --train_dir=${TRAIN_DIR} --dataset_dir=${DATASET_DIR} --dataset_name=flowers --dataset_split_name=train --model_name=alexnet_v2 --preprocessing_name=vgg

生成Inference Graph的PB文件

python export_inference_graph.py --alsologtostderr --model_name=alexnet_v2 --dataset_name=flowers --dataset_dir=${DATASET_DIR} --output_file=alexnet_v2_inf_graph.pb

結(jié)合CheckPoint文件和Inference GraphPB文件,生成Freeze Graph的PB文件

python freeze_graph.py --input_graph=alexnet_v2_inf_graph.pb --input_checkpoint= ${TRAIN_DIR}/model.ckpt-36618 --input_binary=true --output_graph=frozen_alexnet_v2.pb --output_node_names=alexnet_v2/fc8/squeezed

對Freeze Graph的PB文件進(jìn)行數(shù)據(jù)量化處理,減少模型文件的大小,生成的quantized_alexnet_v2_graph.pb為智能終端中應(yīng)用的模型文件

bazel-bin/tensorflow/tools/graph_transforms/transform_graph --in_graph=frozen_alexnet_v2.pb --outputs="alexnet_v2/fc8/squeezed" --out_graph=quantized_alexnet_v2_graph.pb --transforms='add_default_attributes strip_unused_nodes(type=float, shape="1,224,224,3") remove_nodes(op=Identity, op=CheckNumerics) fold_constants(ignore_errors=true) fold_batch_norms fold_old_batch_norms quantize_weights quantize_nodes strip_unused_nodes sort_by_execution_order'

為了減少智能終端上模型文件的大小,TensorFlow中常用的方法是對模型文件進(jìn)行量化處理,本文對AlexNet CheckPoint文件進(jìn)行Freeze和Quantized處理后的文件大小變化如下圖所示:

量化操作的主要思想是在模型的Inference階段采用等價(jià)的8位整數(shù)操作代替32位的浮點(diǎn)數(shù)操作,替換的操作包括:卷積操作、矩陣相乘、激活函數(shù)、池化操作等。量化節(jié)點(diǎn)的輸入、輸出為浮點(diǎn)數(shù),但是內(nèi)部運(yùn)算會(huì)通過量化計(jì)算轉(zhuǎn)換為8位整數(shù)(范圍為0到255)的運(yùn)算,浮點(diǎn)數(shù)和8位量化整數(shù)的對應(yīng)關(guān)系示例如下圖所示:

量化Relu操作的基本思想如下圖所示:

TensorFlow Android應(yīng)用開發(fā)環(huán)境構(gòu)建

在Android系統(tǒng)上使用TensorFlow模型做Inference依賴于兩個(gè)文件libtensorflow_inference.so和libandroid_tensorflow_inference_java.jar。這兩個(gè)文件可以通過下載TensorFlow源代碼后,采用bazel編譯出來,如下所示:

下載TensorFlow源代碼

git clone --recurse-submoduleshttps://github.com/tensorflow/tensorflow.git

下載安裝Android NDK

下載安裝Android SDK

配置tensorflow/WORKSPACE中android開發(fā)工具路徑

android_sdk_repository(name = "androidsdk", api_level = 23, build_tools_version = "25.0.2", path = "/opt/android",) android_ndk_repository(name="androidndk", path="/opt/android/android-ndk-r12b", api_level=14)

編譯libtensorflow_inference.so

bazel build -c opt //tensorflow/contrib/android:libtensorflow_inference.so --crosstool_top=//external:android/crosstool --host_crosstool_top= @bazel_tools//tools/cpp:toolchain --cpu=armeabi-v7a

編譯libandroid_tensorflow_inference_java.jar

bazel build //tensorflow/contrib/android:android_tensorflow_inference_java

TensorFlow提供了Android開發(fā)的示例框架,下面基于AlexNet模型的看花識(shí)名APP做一些相應(yīng)源碼的修改,并編譯生成Android的安裝包:

基于AlexNet模型,修改Inference的輸入、輸出的Tensor名稱

private static final String INPUT_NAME = "input"; private static final String OUTPUT_NAME = "alexnet_v2/fc8/squeezed";

放置quantized_alexnet_v2_graph.pb和對應(yīng)的labels.txt文件到assets目錄下,并修改Android文件路徑

private static final String MODEL_FILE = "file:///android_asset/quantized_alexnet_v2_graph.pb"; private static final String LABEL_FILE = "file:///android_asset/labels.txt";

編譯生成安裝包

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

拷貝tensorflow_demo.apk到手機(jī)上,并執(zhí)行安裝,太陽花識(shí)別效果如下圖所示:

(點(diǎn)擊放大圖像)

TensorFlow移動(dòng)端應(yīng)用開發(fā)API

在Android系統(tǒng)中執(zhí)行TensorFlow Inference操作,需要調(diào)用libandroid_tensorflow_inference_java.jar中的JNI接口,主要接口如下:

構(gòu)建TensorFlow Inference對象,構(gòu)建該對象時(shí)候會(huì)加載TensorFlow動(dòng)態(tài)鏈接庫libtensorflow_inference.so到系統(tǒng)中;參數(shù)assetManager為android asset管理器;參數(shù)modelFilename為TensorFlow模型文件在android_asset中的路徑。

TensorFlowInferenceInterface inferenceInterface = new TensorFlowInferenceInterface(assetManager, modelFilename);

向TensorFlow圖中加載輸入數(shù)據(jù),本App中輸入數(shù)據(jù)為攝像頭截取到的圖片;參數(shù)inputName為TensorFlow Inference中的輸入數(shù)據(jù)Tensor的名稱;參數(shù)floatValues為輸入圖片的像素?cái)?shù)據(jù),進(jìn)行預(yù)處理后的浮點(diǎn)值;[1,inputSize,inputSize,3]為裁剪后圖片的大小,比如1張224*224*3的RGB圖片。

inferenceInterface.feed(inputName, floatValues, 1, inputSize, inputSize, 3);

執(zhí)行模型推理; outputNames為TensorFlow Inference模型中要運(yùn)算Tensor的名稱,本APP中為分類的Logist值。

inferenceInterface.run(outputNames);

獲取模型Inference的運(yùn)算結(jié)果,其中outputName為Tensor名稱,參數(shù)outputs存儲(chǔ)Tensor的運(yùn)算結(jié)果。本APP中,outputs為計(jì)算得到的Logist浮點(diǎn)數(shù)組。

inferenceInterface.fetch(outputName, outputs);

總結(jié)

本文基于看花識(shí)名APP,講解了TensorFlow在Android智能終端中的應(yīng)用技術(shù)。首先回顧了AlexNet模型結(jié)構(gòu),基于AlexNet的slim模型對Flowers數(shù)據(jù)進(jìn)行訓(xùn)練;對訓(xùn)練后的CheckPoint數(shù)據(jù),進(jìn)行Freeze和Quantized處理,生成智能終端要用的Inference模型。然后介紹了TensorFlow Android應(yīng)用開發(fā)環(huán)境的構(gòu)建,編譯生成TensorFlow在Android上的動(dòng)態(tài)鏈接庫以及java開發(fā)包;文章最后介紹了Inference API的使用方式。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 智能終端
    +關(guān)注

    關(guān)注

    6

    文章

    939

    瀏覽量

    35323
  • 深度學(xué)習(xí)
    +關(guān)注

    關(guān)注

    73

    文章

    5557

    瀏覽量

    122658
  • tensorflow
    +關(guān)注

    關(guān)注

    13

    文章

    330

    瀏覽量

    61104

原文標(biāo)題:深度學(xué)習(xí)利器:TensorFlow在智能終端中的應(yīng)用

文章出處:【微信號(hào):worldofai,微信公眾號(hào):worldofai】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 0人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    工業(yè)級智能手持終端:倉庫盤點(diǎn)與出入庫管理的得力助手

    在當(dāng)今快節(jié)奏的商業(yè)環(huán)境,倉庫管理的效率和準(zhǔn)確性對于企業(yè)的運(yùn)營至關(guān)重要。工業(yè)級智能手持終端的出現(xiàn),為倉庫盤點(diǎn)與出入庫管理帶來了革命性的變化。工業(yè)級
    的頭像 發(fā)表于 01-08 16:09 ?368次閱讀
    工業(yè)級<b class='flag-5'>智能</b>手持<b class='flag-5'>終端</b>:倉庫<b class='flag-5'>盤點(diǎn)</b>與出入庫管理的得力助手

    頂堅(jiān)PDA智能手持終端工業(yè)巡檢與維護(hù)的創(chuàng)新應(yīng)用

    隨著工業(yè)4.0時(shí)代的到來,智能制造已成為工業(yè)發(fā)展的必然趨勢。工業(yè)巡檢與維護(hù)領(lǐng)域,PDA智能手持終端以其高效、便攜、智能化的特點(diǎn),正在逐步取
    的頭像 發(fā)表于 12-05 10:25 ?519次閱讀
    頂堅(jiān)PDA<b class='flag-5'>智能</b>手持<b class='flag-5'>終端</b><b class='flag-5'>在</b>工業(yè)巡檢與維護(hù)<b class='flag-5'>中</b>的創(chuàng)新應(yīng)用

    重磅盤點(diǎn) | 自連智能終端明星產(chǎn)品系列

    無論工業(yè)、醫(yī)療、城市還是教育領(lǐng)域,當(dāng)前各行各業(yè)都迎來了智慧升級的快速發(fā)展。作為深耕物聯(lián)網(wǎng)10年的通信老兵,自連自主研發(fā)的智能終端產(chǎn)品系列,不同場景中發(fā)揮著應(yīng)有的重要作用。今天,小編
    的頭像 發(fā)表于 10-24 17:25 ?490次閱讀

    智能AI終端故障診斷具體是如何工作的?

    梯云物聯(lián)的智能AI終端故障診斷扮演著至關(guān)重要的角色。這一系統(tǒng)通過集成先進(jìn)的物聯(lián)網(wǎng)技術(shù)、大數(shù)據(jù)分析和人工智能算法,實(shí)現(xiàn)了電梯維保與急修的精
    的頭像 發(fā)表于 10-17 11:46 ?582次閱讀

    快速部署Tensorflow和TFLITE模型Jacinto7 Soc

    電子發(fā)燒友網(wǎng)站提供《快速部署Tensorflow和TFLITE模型Jacinto7 Soc.pdf》資料免費(fèi)下載
    發(fā)表于 09-27 11:41 ?0次下載
    快速部署<b class='flag-5'>Tensorflow</b>和TFLITE模型<b class='flag-5'>在</b>Jacinto7 Soc

    第四章: PC 交叉編譯 aarch64 的 tensorflow 開發(fā)環(huán)境并測試

    本文介紹了 PC 端交叉編譯 aarch64 平臺(tái)的 tensorflow 庫而非 tensorflow lite 的心酸過程。
    的頭像 發(fā)表于 08-25 11:38 ?2431次閱讀
    第四章:<b class='flag-5'>在</b> PC 交叉編譯 aarch64 的 <b class='flag-5'>tensorflow</b> 開發(fā)環(huán)境并測試

    如何在Tensorflow實(shí)現(xiàn)反卷積

    TensorFlow實(shí)現(xiàn)反卷積(也稱為轉(zhuǎn)置卷積或分?jǐn)?shù)步長卷積)是一個(gè)涉及多個(gè)概念和步驟的過程。反卷積在深度學(xué)習(xí)領(lǐng)域,特別是圖像分割、圖像超分辨率、以及生成模型(如生成對抗網(wǎng)絡(luò)GA
    的頭像 發(fā)表于 07-14 10:46 ?1105次閱讀

    TensorFlow是什么?TensorFlow怎么用?

    TensorFlow是由Google開發(fā)的一個(gè)開源深度學(xué)習(xí)框架,它允許開發(fā)者方便地構(gòu)建、訓(xùn)練和部署各種復(fù)雜的機(jī)器學(xué)習(xí)模型。TensorFlow憑借其高效的計(jì)算性能、靈活的架構(gòu)以及豐富的工具和庫,在學(xué)
    的頭像 發(fā)表于 07-12 16:38 ?1282次閱讀

    tensorflow和pytorch哪個(gè)更簡單?

    PyTorch更簡單。選擇TensorFlow還是PyTorch取決于您的具體需求和偏好。如果您需要一個(gè)易于使用、靈活且具有強(qiáng)大社區(qū)支持的框架,PyTorch可能是一個(gè)更好的選擇。如果您需要一個(gè)
    的頭像 發(fā)表于 07-05 09:45 ?1410次閱讀

    tensorflow和pytorch哪個(gè)好

    tensorflow和pytorch都是非常不錯(cuò)的強(qiáng)大的框架,TensorFlow還是PyTorch哪個(gè)更好取決于您的具體需求,以下是關(guān)于這兩個(gè)框架的一些關(guān)鍵點(diǎn): TensorFlow : 發(fā)布時(shí)間
    的頭像 發(fā)表于 07-05 09:42 ?1168次閱讀

    tensorflow簡單的模型訓(xùn)練

    本文中,我們將詳細(xì)介紹如何使用TensorFlow進(jìn)行簡單的模型訓(xùn)練。TensorFlow是一個(gè)開源的機(jī)器學(xué)習(xí)庫,廣泛用于各種機(jī)器學(xué)習(xí)任務(wù),包括圖像識(shí)別、自然語言處理等。我們將從安裝
    的頭像 發(fā)表于 07-05 09:38 ?1270次閱讀

    keras模型轉(zhuǎn)tensorflow session

    在這篇文章,我們將討論如何將Keras模型轉(zhuǎn)換為TensorFlow session。 Keras和TensorFlow簡介 Keras是一個(gè)高級神經(jīng)網(wǎng)絡(luò)API,它提供了一種簡單、快速的方式來構(gòu)建
    的頭像 發(fā)表于 07-05 09:36 ?840次閱讀

    TensorFlow的定義和使用方法

    TensorFlow是一個(gè)由谷歌人工智能團(tuán)隊(duì)谷歌大腦(Google Brain)開發(fā)和維護(hù)的開源機(jī)器學(xué)習(xí)庫。它基于數(shù)據(jù)流編程(dataflow programming)的概念,將復(fù)雜的數(shù)學(xué)運(yùn)算表示為
    的頭像 發(fā)表于 07-02 14:14 ?1406次閱讀

    TensorFlow與PyTorch深度學(xué)習(xí)框架的比較與選擇

    深度學(xué)習(xí)作為人工智能領(lǐng)域的一個(gè)重要分支,在過去十年取得了顯著的進(jìn)展。構(gòu)建和訓(xùn)練深度學(xué)習(xí)模型的過程,深度學(xué)習(xí)框架扮演著至關(guān)重要的角色。Tenso
    的頭像 發(fā)表于 07-02 14:04 ?1613次閱讀
    主站蜘蛛池模板: 国产精品伦理一二三区伦理 | 国内精品久久久久久久999下 | 亚洲激情一区 | 嫩草影院在线观看网站成人 | 十九岁在线观看免费完整版电影 | 亚洲女人网 | 色网址在线观看 | 久久久GOGO无码啪啪艺术 | 天天综合亚洲综合网站 | 国产色婷婷精品人妻蜜桃成熟 | 青草精品国产福利在线视频 | 0855午夜福利伦理电影 | 欧美激情视频一区 | 99视频在线看观免费 | 蜜桃传媒在线观看入口 | 99热视频这里只有久久精品 | 手机在线成人精品视频网 | 亚洲国产在线观看免费视频 | chinese东北老年tv视频 | 伦理 电影在线观看 | 亚洲精品久久YY5099 | 不用播放器的黄 | 黑人操日本女人 | 99久久免费精品 | 伊人久久精品午夜 | 失禁 调教 刺激 哭喊男男 | MMM日本兽交 | 男人的天堂黄色 | 优优色影院 | 日本视频久久 | 神马影院午夜理论二 | AV亚洲精品少妇毛片无码 | 亚洲精品无码葡京AV天堂 | 亲胸揉胸膜下刺激视频在线观看 | 国产免费高清mv视频在线观看 | 大稥焦伊人一本dao 大香伊人中文字幕精品 | 一级毛片全部免 | 青青伊人影院 | 中文字幕在线观看亚洲视频 | 轻点灬大ji巴太粗太双性高h | 涩涩视频在线看 |

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品