91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

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

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

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

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

掃碼添加小助手

加入工程師交流群

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

如果智能手機(jī)通過(guò)網(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)存利用率,需要對(duì)服務(wù)器端的模型進(jìn)行量化處理并支持低精度算法。TensorFlow版本增加了對(duì)Android、iOS和Raspberry Pi硬件平臺(tái)的支持,允許它在這些設(shè)備上執(zhí)行圖像分類(lèi)等操作。這樣就可以創(chuàng)建在智能手機(jī)上工作并且不需要云端每時(shí)每刻都支持的機(jī)器學(xué)習(xí)模型,帶來(lái)了新的APP。

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

看花識(shí)名APP

使用AlexNet模型、Flowers數(shù)據(jù)以及Android平臺(tái)構(gòu)建了“看花識(shí)名”APP。TensorFlow模型對(duì)五種類(lèi)型的花數(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開(kāi)發(fā)。如下圖所示:

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

本章采用AlexNet模型對(duì)Flowers數(shù)據(jù)進(jìn)行訓(xùn)練。AlexNet在2012取得了ImageNet最好成績(jī),top 5準(zhǔn)確率達(dá)到80.2%。這對(duì)于傳統(tǒng)的機(jī)器學(xué)習(xí)分類(lèi)算法而言,已經(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)過(guò)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

對(duì)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中常用的方法是對(duì)模型文件進(jìn)行量化處理,本文對(duì)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ì)通過(guò)量化計(jì)算轉(zhuǎn)換為8位整數(shù)(范圍為0到255)的運(yùn)算,浮點(diǎn)數(shù)和8位量化整數(shù)的對(duì)應(yīng)關(guān)系示例如下圖所示:

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

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

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

下載TensorFlow源代碼

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

下載安裝Android NDK

下載安裝Android SDK

配置tensorflow/WORKSPACE中android開(kāi)發(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開(kāi)發(fā)的示例框架,下面基于A(yíng)lexNet模型的看花識(shí)名APP做一些相應(yīng)源碼的修改,并編譯生成Android的安裝包:

基于A(yíng)lexNet模型,修改Inference的輸入、輸出的Tensor名稱(chēng)

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

放置quantized_alexnet_v2_graph.pb和對(duì)應(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í)行安裝,太陽(yáng)花識(shí)別效果如下圖所示:

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

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

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

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

TensorFlowInferenceInterface inferenceInterface = new TensorFlowInferenceInterface(assetManager, modelFilename);

向TensorFlow圖中加載輸入數(shù)據(jù),本App中輸入數(shù)據(jù)為攝像頭截取到的圖片;參數(shù)inputName為T(mén)ensorFlow Inference中的輸入數(shù)據(jù)Tensor的名稱(chēng);參數(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為T(mén)ensorFlow Inference模型中要運(yùn)算Tensor的名稱(chēng),本APP中為分類(lèi)的Logist值。

inferenceInterface.run(outputNames);

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

inferenceInterface.fetch(outputName, outputs);

總結(jié)

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

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

    關(guān)注

    6

    文章

    1020

    瀏覽量

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

    關(guān)注

    73

    文章

    5598

    瀏覽量

    124396
  • tensorflow
    +關(guān)注

    關(guān)注

    13

    文章

    334

    瀏覽量

    62174

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

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

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    振動(dòng)馬達(dá)智能醫(yī)療終端的應(yīng)用價(jià)值與發(fā)展趨勢(shì)

    振動(dòng)馬達(dá)作為一種體積小、響應(yīng)快、控制精度高的執(zhí)行元件,正逐步成為智能醫(yī)療終端不可或缺的關(guān)鍵部件。隨著醫(yī)療設(shè)備向智能化、便攜化、人性化方向發(fā)展,傳統(tǒng)的聲光提示方式已無(wú)法滿(mǎn)足多場(chǎng)景醫(yī)療需
    的頭像 發(fā)表于 02-06 18:46 ?95次閱讀
    振動(dòng)馬達(dá)<b class='flag-5'>在</b><b class='flag-5'>智能</b>醫(yī)療<b class='flag-5'>終端</b><b class='flag-5'>中</b>的應(yīng)用價(jià)值與發(fā)展趨勢(shì)

    如何在TensorFlow Lite Micro添加自定義操作符(1)

    相信大家部署嵌入式端的AI應(yīng)用時(shí),一定使用過(guò)TensorFlow Lite Micro,以下簡(jiǎn)稱(chēng)TFLm。TFLm 是專(zhuān)為微控制器和嵌入式設(shè)備設(shè)計(jì)的輕量級(jí)機(jī)器學(xué)習(xí)推理框架,它通過(guò)模塊化的操作符系統(tǒng)
    的頭像 發(fā)表于 12-26 10:34 ?5303次閱讀

    PDA手持終端倉(cāng)儲(chǔ)管理的6大核心功能與應(yīng)用場(chǎng)景

    關(guān)于智能倉(cāng)儲(chǔ)PDA手持終端(工業(yè)級(jí)手持機(jī))現(xiàn)代倉(cāng)儲(chǔ)管理的六大核心功能,涵蓋入庫(kù)核驗(yàn)、智能上架、防錯(cuò)揀貨、RFID快速
    的頭像 發(fā)表于 12-22 15:45 ?449次閱讀
    PDA手持<b class='flag-5'>終端</b><b class='flag-5'>在</b>倉(cāng)儲(chǔ)管理<b class='flag-5'>中</b>的6大核心功能與應(yīng)用場(chǎng)景

    RFID酒店管理的應(yīng)用

    RFID酒店管理的應(yīng)用RFID技術(shù)通過(guò)無(wú)線(xiàn)射頻識(shí)別實(shí)現(xiàn)酒店管理全流程智能化,覆蓋物品、客房、員工三大核心場(chǎng)景,顯著提升效率與安全性。一、酒店物品智能化管理資產(chǎn)追蹤與防盜:
    的頭像 發(fā)表于 11-20 16:58 ?588次閱讀
    RFID<b class='flag-5'>在</b>酒店管理<b class='flag-5'>中</b>的應(yīng)用

    人工智能AI必備的5款開(kāi)源軟件推薦!

    技術(shù)浪潮洶涌的當(dāng)下,越來(lái)越多的企業(yè)與開(kāi)發(fā)者開(kāi)始意識(shí)到:“開(kāi)源”已經(jīng)不只是一個(gè)口號(hào),而是創(chuàng)新的源泉。 從算法研究到智能應(yīng)用落地,無(wú)數(shù)項(xiàng)目的起點(diǎn),都是一個(gè)個(gè)免費(fèi)的開(kāi)源工具。今天,我們就來(lái)盤(pán)點(diǎn)五款
    的頭像 發(fā)表于 11-19 15:35 ?650次閱讀
    人工<b class='flag-5'>智能</b>AI必備的5款開(kāi)源軟件推薦!

    倉(cāng)庫(kù)盤(pán)點(diǎn)誤差大總出錯(cuò),咋整?試試智能盤(pán)點(diǎn)解決方法

    倉(cāng)庫(kù)盤(pán)點(diǎn)頻繁賬實(shí)不符?人工盤(pán)點(diǎn)誤差高、效率低,還吃掉利潤(rùn)?RFID 智能盤(pán)點(diǎn)技術(shù)幫你解決!可以2-25 米遠(yuǎn)距離批量讀寫(xiě),庫(kù)存準(zhǔn)確率飆升
    的頭像 發(fā)表于 11-05 11:56 ?389次閱讀
    倉(cāng)庫(kù)<b class='flag-5'>盤(pán)點(diǎn)</b>誤差大總出錯(cuò),咋整?試試<b class='flag-5'>智能</b><b class='flag-5'>盤(pán)點(diǎn)</b>解決方法

    新大陸智能終端pda倉(cāng)儲(chǔ)管理如何應(yīng)用

    現(xiàn)代倉(cāng)儲(chǔ)管理,效率與準(zhǔn)確性是企業(yè)降本增效的關(guān)鍵,而新大陸智能終端pda的出現(xiàn),正為倉(cāng)儲(chǔ)管理的數(shù)字化升級(jí)提供了強(qiáng)有力的支撐。作為專(zhuān)為倉(cāng)儲(chǔ)場(chǎng)景設(shè)計(jì)的
    的頭像 發(fā)表于 10-22 16:04 ?479次閱讀
    新大陸<b class='flag-5'>智能</b><b class='flag-5'>終端</b>pda<b class='flag-5'>在</b>倉(cāng)儲(chǔ)管理<b class='flag-5'>中</b>如何應(yīng)用

    2025年AI 智能終端和SoC芯片解讀(

    AI智能終端經(jīng)驗(yàn)分享
    電子發(fā)燒友網(wǎng)官方
    發(fā)布于 :2025年09月15日 16:44:48

    2025年AI 智能終端和SoC芯片解讀(上)

    AI智能終端經(jīng)驗(yàn)分享
    電子發(fā)燒友網(wǎng)官方
    發(fā)布于 :2025年09月15日 16:37:48

    精準(zhǔn)盤(pán)點(diǎn),無(wú)憂(yōu)管理——RFID智能盤(pán)點(diǎn)終端解析

    RFID智能盤(pán)點(diǎn)終端高效、精準(zhǔn),利用RFID技術(shù)實(shí)現(xiàn)快速批量識(shí)別,實(shí)時(shí)更新數(shù)據(jù),確保庫(kù)存信息準(zhǔn)確無(wú)誤。其輕便易攜設(shè)計(jì)及簡(jiǎn)潔操作界面使盤(pán)點(diǎn)工作輕松便捷。此外,該
    的頭像 發(fā)表于 07-14 14:17 ?568次閱讀

    岳冉智能手持終端掃碼功能演示 #智能手持終端

    手持終端
    yueranxinxi
    發(fā)布于 :2025年05月13日 12:00:06

    FPC標(biāo)簽在盤(pán)點(diǎn)中的應(yīng)用

    快速盤(pán)點(diǎn),提高效率傳統(tǒng)的庫(kù)存盤(pán)點(diǎn)方式需要人工逐一掃描條形碼,耗時(shí)長(zhǎng)且效率低下。而RFID手持終端可以一次性讀取多個(gè)RFID標(biāo)簽,大大提高了盤(pán)點(diǎn)速度。例如,某知名服
    的頭像 發(fā)表于 05-09 15:21 ?558次閱讀
    FPC標(biāo)簽在<b class='flag-5'>盤(pán)點(diǎn)</b>中的應(yīng)用

    用樹(shù)莓派搞深度學(xué)習(xí)?TensorFlow啟動(dòng)!

    介紹本頁(yè)面將指導(dǎo)您在搭載64位Bullseye操作系統(tǒng)的RaspberryPi4上安裝TensorFlowTensorFlow是一個(gè)專(zhuān)為深度學(xué)習(xí)開(kāi)發(fā)的大型軟件庫(kù),它消耗大量資源。您可以
    的頭像 發(fā)表于 03-25 09:33 ?1205次閱讀
    用樹(shù)莓派搞深度學(xué)習(xí)?<b class='flag-5'>TensorFlow</b>啟動(dòng)!