99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

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

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

探討如何將機(jī)器學(xué)習(xí)應(yīng)用到物聯(lián)網(wǎng)中

設(shè)計(jì)idea ? 來源:互聯(lián)網(wǎng) ? 作者:佚名 ? 2018-05-23 09:24 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本項(xiàng)目探討如何將機(jī)器學(xué)習(xí)(Machine learning)應(yīng)用到物聯(lián)網(wǎng)IoT,Internet of Things)中。我們將使用 Android Things 作為我們的物聯(lián)網(wǎng)平臺(tái),并且采用 Google TensorFlow 作為我們的機(jī)器學(xué)習(xí)引擎。如今,機(jī)器學(xué)習(xí)與物聯(lián)網(wǎng)都是技術(shù)話題中的大熱門。

下面是維基百科上對(duì)機(jī)器學(xué)習(xí)的一個(gè)簡單定義

機(jī)器學(xué)習(xí)是計(jì)算機(jī)科學(xué)中的一個(gè)領(lǐng)域,它使計(jì)算機(jī)系統(tǒng)能夠利用數(shù)據(jù)進(jìn)行 “學(xué)習(xí)”(即逐步提高特定任務(wù)的性能),而不需要進(jìn)行顯式編程(Explicitly programmed)。

換句話說,在進(jìn)行訓(xùn)練步驟以后,系統(tǒng)就可以預(yù)測結(jié)果(即使這不是專門為這些結(jié)果進(jìn)行編程的)。另一方面,我們都了解物聯(lián)網(wǎng)以及連接設(shè)備的概念。最有前途的話題之一便是如何將機(jī)器學(xué)習(xí)應(yīng)用于物聯(lián)網(wǎng)之中,以構(gòu)建能夠 “學(xué)習(xí)” 的專家系統(tǒng)。此外,該系統(tǒng)會(huì)運(yùn)用這些知識(shí)來控制和管理實(shí)物。

下面列舉一些應(yīng)用到機(jī)器學(xué)習(xí),以及物聯(lián)網(wǎng)能產(chǎn)生重要價(jià)值的領(lǐng)域:

  • 預(yù)測維護(hù)(Predictive maintenance)中的工業(yè)物聯(lián)網(wǎng)(IIoT,Industrial IoT)。

  • 在消費(fèi)者物聯(lián)網(wǎng)(Consumer IoT)中,機(jī)器學(xué)習(xí)可以使設(shè)備變得更加智能化,從而適應(yīng)我們的習(xí)慣。

在本教程中,我們將探索如何使用 Android Things 和 TensorFlow 將機(jī)器學(xué)習(xí)應(yīng)用到物聯(lián)網(wǎng)中。這一 Android Things 物聯(lián)網(wǎng)項(xiàng)目背后的基本思想就是,探索如何構(gòu)建一個(gè)能夠識(shí)別一些基本形狀(比如箭頭)并被控制的機(jī)器人小車(Robot car)。我們已經(jīng)介紹過如何使用 Android Things 構(gòu)建機(jī)器人小車,我建議您在開始此項(xiàng)目之前先閱讀那篇教程。

本次機(jī)器學(xué)習(xí)和物聯(lián)網(wǎng)項(xiàng)目主要涵蓋以下主題:

  • 如何使用 Docker 配置 TensorFlow 環(huán)境

  • 如何訓(xùn)練 TensorFlow 系統(tǒng)

  • 如何集成 TensorFlow 與 Android Things

  • 如何使用 TensorFlow 輸出結(jié)果來控制機(jī)器人小車

本項(xiàng)目衍生自 Android Things TensorFlow 圖像分類器。

我們開始吧!

如何在 Tensorflow 中創(chuàng)建一個(gè)圖像分類器

在開始之前,我們有必要先安裝并配置好 TensorFlow 環(huán)境。我并非機(jī)器學(xué)習(xí)專家,所以我需要找一些速成的東西并準(zhǔn)備好使用,以便我們可以構(gòu)建 TensorFlow 圖像分類器。因此,我們可以使用 Docker 來運(yùn)行一個(gè)搭載了 TensorFlow 的映像。照著以下步驟進(jìn)行:

1. 克隆 TensorFlow 倉庫:

gitclonehttps://github.com/tensorflow/tensorflow.git
cd/tensorflow
gitcheckoutv1.5.0

2. 創(chuàng)建一個(gè)目錄(/tf-data),該目錄將保存我們?cè)陧?xiàng)目中需要用到的所有文件。

3. 運(yùn)行 Docker:

dockerrun-it\--volume/tf-data:/tf-data\--volume/tensorflow:/tensorflow\
--workdir/tensorflowtensorflow/tensorflow:1.5.0bash

使用這些命令,我們就可以運(yùn)行一個(gè)交互式 TensorFlow 環(huán)境并增加(Mount)一些我們將在項(xiàng)目中使用到的目錄。

如何訓(xùn)練 TensorFlow

在 Android Things 系統(tǒng)能夠識(shí)別圖像之前,我們有必要先訓(xùn)練 TensorFlow 引擎,以構(gòu)建其模型。以此為由,收集一些圖片是有必要的。如前所述,我們希望使用箭頭來控制 Android Things 機(jī)器人小車 —— 所以我們必須收集至少四種類型的箭頭:

  • 向上箭頭

  • 向下箭頭

  • 左箭頭

  • 右箭頭

為訓(xùn)練該系統(tǒng),我們有必要對(duì)這四種不同的圖像類別創(chuàng)建一個(gè)“知識(shí)庫”。在 /tf-data 中一個(gè)名為 images 的目錄下創(chuàng)建四個(gè)目錄,命名如下:

  • up-arrow

  • down-arrow

  • left-arrow

  • right-arrow

現(xiàn)在是時(shí)候去搜集圖像資源了。我使用的是 Google 圖片搜索,您也可以使用其他方法進(jìn)行搜集。為了簡化圖片下載過程,您應(yīng)該安裝 Chrome 插件,它能夠一鍵下載所有圖片??蓜e忘了,您下載的圖像越多,其訓(xùn)練過程(Training process)越好(即使創(chuàng)建模型的時(shí)間可能會(huì)有所增加)。

打開瀏覽器,開始查找以下四類圖像:

每個(gè)類別我分別下載了 80 張圖。我并不關(guān)心圖片的擴(kuò)展。

一旦所有類別都有其圖像,請(qǐng)按照以下步驟操作(在 Docker 界面中):

python/tensorflow/examples/image_retraining/retrain.py\
--bottleneck_dir=tf_files/bottlenecks\
--how_many_training_steps=4000\
--output_graph=/tf-data/retrained_graph.pb\
--output_labels=/tf-data/retrained_labels.txt\
--image_dir=/tf-data/images

這操作可能需要花費(fèi)一些時(shí)間,所以要耐心等待。最后,在你的文件夾 /tf-data 中應(yīng)有兩個(gè)文件:

  1. retrained_graph.pb

  2. retrained_labels.txt

第一個(gè)文件包含我們的模型,這是 TensorFlow 訓(xùn)練過程的結(jié)果。而第二個(gè)文件則包含了與我們的四個(gè)圖像類別相關(guān)的標(biāo)簽。

如何測試 Tensorflow 模型

如果你想測試模型,以檢查一切是否正常,你可以使用以下命令:

pythonscripts.label_image\
--graph=/tf-data/retrained-graph.pb\
--image=/tf-data/images/[category]/[image_name.jpg]

優(yōu)化模型

在能夠使用這個(gè) TensorFlow 模型到 Android Things 項(xiàng)目中之前,我們有必要優(yōu)化它:

python/tensorflow/python/tools/optimize_for_inference.py\--input=/tf-data/retrained_graph.pb\--output=/tf-data/opt_graph.pb\--input_names="Mul"\--output_names="final_result"

這就是我們的模型。我們將使用此模型將機(jī)器學(xué)習(xí)應(yīng)用于物聯(lián)網(wǎng)(即集成 Android Things 與 TensorFlow)。其目標(biāo)是為 Android Things 應(yīng)用提供智能識(shí)別箭頭圖像,并作出相應(yīng)反應(yīng),從而控制機(jī)器人小車的方向。

如果您想了解更多關(guān)于 TensorFlow 的細(xì)節(jié),以及如何生成模型,請(qǐng)查看官方文檔和這個(gè)教程

如何使用 Android Things 和 TensorFlow 將機(jī)器學(xué)習(xí)應(yīng)用到物聯(lián)網(wǎng)中

一旦 TensorFlow 數(shù)據(jù)模型準(zhǔn)備就緒,我們就可以進(jìn)入下一步:如何集成 Android Things 與 TensorFlow。為達(dá)成這一目的,我們可以將此任務(wù)分為兩步:

  1. 硬件部分,我們將電機(jī)和其他外圍設(shè)備(Peripheral)連接到 Android Things 板上

  2. 實(shí)現(xiàn)應(yīng)用程序

Android Things 原理圖

在深入探討如何連接外圍設(shè)備之前,我們先看看下面這個(gè) Android Things 項(xiàng)目中使用的組件列表:

  1. Android Things 板(樹莓派 3,Raspberry Pi 3)

  2. 樹莓派相機(jī)

  3. 一個(gè) LED

  4. LN298N 雙H橋(用以控制電機(jī))

  5. 帶兩個(gè)輪子的機(jī)器人小車底盤

我不在此介紹如何使用 Android Things 控制電機(jī),因?yàn)槲覀円呀?jīng)在之前的文章中介紹過這一點(diǎn)。

以下是原理圖:

1620

上圖中,相機(jī)組件并未表現(xiàn)出來。其最終的結(jié)果如下:

基于 TensorFlow 實(shí)現(xiàn) Android Things App

最后一步便是實(shí)現(xiàn) Android Things 應(yīng)用程序。為此,我們可以重用 GitHub 上名為 TensorFlow 圖像分類器示例的示例項(xiàng)目。在開始之前,先克隆 GitHub 倉庫,以便您可以修改源代碼。

該 Android Things 應(yīng)用與原來的應(yīng)用有所不同,在于:

  1. 它不使用按鈕來啟動(dòng)相機(jī)捕捉圖像

  2. 它使用不同的模型

  3. 它使用一個(gè)閃爍的 LED 進(jìn)行通知,攝像機(jī)在 LED 停止閃爍后拍攝照片

  4. 它在 TensorFlow 檢測到圖像(箭頭)時(shí)控制電機(jī)。此外,在從步驟 3 開始循環(huán)之前,先打開電機(jī) 5 秒

要處理閃爍的 LED,請(qǐng)使用以下代碼:

privateHandlerblinkingHandler=newHandler();privateRunnableblinkingLED=newRunnable(){
@Overridepublicvoidrun(){
try{
//Ifthemotorisrunningtheappdoesnotstartthecam
if(mc.getStatus())
return;
Log.d(TAG,"Blinking..");
mReadyLED.setValue(!mReadyLED.getValue());
if(currentValue<=?NUM_OF_TIMES)?{
???????currentValue++;
???????blinkingHandler.postDelayed(blinkingLED,?
???????????????????????BLINKING_INTERVAL_MS);
?????}
?????else?{
??????mReadyLED.setValue(false);
??????currentValue?=?0;
??????mBackgroundHandler.post(mBackgroundClickHandler);
?????}
???}?catch?(IOException?e)?{
?????e.printStackTrace();
???}
??}};

當(dāng) LED 停止閃爍時(shí),應(yīng)用程序?qū)⒉东@圖像。

現(xiàn)在有必要關(guān)注如何根據(jù)檢測到的圖像來控制電機(jī)。修改方法如下:

@OverridepublicvoidonImageAvailable(ImageReaderreader){
finalBitmapbitmap;
try(Imageimage=reader.acquireNextImage()){
bitmap=mImagePreprocessor.preprocessImage(image);
}
finalListresults=
mTensorFlowClassifier.doRecognize(bitmap);
Log.d(TAG,
"GotthefollowingresultsfromTensorflow:"+results);
//Checktheresult
if(results==null||results.size()==0){
Log.d(TAG,"Nocommand..");
blinkingHandler.post(blinkingLED);
return;
}
Classifier.Recognitionrec=results.get(0);
Floatconfidence=rec.getConfidence();
Log.d(TAG,"Confidence"+confidence.floatValue());
if(confidence.floatValue()

在這種方法中,當(dāng) TensorFlow 返回匹配捕獲圖像的可能標(biāo)簽后,應(yīng)用程序會(huì)將結(jié)果與可能的方向進(jìn)行比較,從而控制電機(jī)。

最后,是時(shí)候使用在剛開始時(shí)創(chuàng)建的模型了??截?assets 文件夾下的 opt_graph.pb 與 reatrained_labels.txt 文件,并替換現(xiàn)有文件。

打開 Helper.java 并修改以下幾行:

publicstaticfinalintIMAGE_SIZE=299;privatestaticfinalintIMAGE_MEAN=128;privatestaticfinalfloatIMAGE_STD=128;privatestaticfinalStringLABELS_FILE="retrained_labels.txt";publicstaticfinalStringMODEL_FILE="file:///android_asset/opt_graph.pb";publicstaticfinalStringINPUT_NAME="Mul";publicstaticfinalStringOUTPUT_OPERATION="output";publicstaticfinalStringOUTPUT_NAME="final_result";

運(yùn)行應(yīng)用程序,試試向相機(jī)展示箭頭,并檢查結(jié)果。機(jī)器人小車必須按照所示的箭頭進(jìn)行移動(dòng)。

小結(jié)

在本教程的最后,我們介紹了如何運(yùn)用 Android Things 與 TensorFlow 將機(jī)器學(xué)習(xí)應(yīng)用到物聯(lián)網(wǎng)中。我們可以使用圖像控制機(jī)器人小車,并根據(jù)顯示的圖像移動(dòng)機(jī)器人小車。

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

    關(guān)注

    66

    文章

    8503

    瀏覽量

    134598
  • IOT
    IOT
    +關(guān)注

    關(guān)注

    187

    文章

    4305

    瀏覽量

    201798
  • tensorflow
    +關(guān)注

    關(guān)注

    13

    文章

    330

    瀏覽量

    61176
  • Android Things
    +關(guān)注

    關(guān)注

    0

    文章

    10

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    FPGA在機(jī)器學(xué)習(xí)的具體應(yīng)用

    ,越來越多地被應(yīng)用于機(jī)器學(xué)習(xí)任務(wù)。本文探討 FPGA 在機(jī)器
    的頭像 發(fā)表于 07-16 15:34 ?268次閱讀

    如何將大模型應(yīng)用到效能評(píng)估系統(tǒng)

    行業(yè)芯事行業(yè)資訊
    北京華盛恒輝科技
    發(fā)布于 :2025年06月17日 10:14:07

    如何將人工智能應(yīng)用到效能評(píng)估

    行業(yè)芯事行業(yè)資訊
    北京華盛恒輝科技
    發(fā)布于 :2025年06月17日 10:13:04

    如何將數(shù)字孿生技術(shù)應(yīng)用到兵棋推演

    行業(yè)芯事行業(yè)資訊
    北京華盛恒輝科技
    發(fā)布于 :2025年06月16日 12:03:00

    Nordic nRF54 系列芯片:開啟 AI 與聯(lián)網(wǎng)新時(shí)代?

    在科技飛速發(fā)展的今天,芯片技術(shù)的創(chuàng)新始終是推動(dòng)行業(yè)進(jìn)步的關(guān)鍵力量。Nordic 公司的 nRF54 系列芯片,正以其卓越的性能和獨(dú)特的設(shè)計(jì),為 AI 機(jī)器學(xué)習(xí)聯(lián)網(wǎng)應(yīng)用帶來前所未有的
    發(fā)表于 04-01 00:18

    宇樹科技在聯(lián)網(wǎng)方面

    。 人工智能算法優(yōu)化:宇樹科技不斷優(yōu)化其機(jī)器人的人工智能算法,使其能夠在聯(lián)網(wǎng)環(huán)境更好地進(jìn)行智能決策。通過機(jī)器
    發(fā)表于 02-04 06:48

    聯(lián)網(wǎng)就業(yè)有哪些高薪崗位?

    系統(tǒng)的數(shù)據(jù)安全和隱私保護(hù),這一崗位的需求也在逐年上升。  隨著聯(lián)網(wǎng)行業(yè)的蓬勃發(fā)展,這些高薪崗位持續(xù)吸引著大量求職者。然而,高薪并不是唾手可得的,對(duì)于求職者而言,還需要具備扎實(shí)的技術(shù)功底、豐富的實(shí)踐經(jīng)驗(yàn)和持續(xù)
    發(fā)表于 01-10 16:47

    安科瑞EIOT能源聯(lián)網(wǎng)平臺(tái)如何應(yīng)用到連鎖門店

    先進(jìn)的集團(tuán)能源管理系統(tǒng),進(jìn)而實(shí)現(xiàn)節(jié)能減排,優(yōu)化運(yùn)營成本,提高整體效率。 以某大型連鎖便利店為例,全國6000家門店,面臨的能源改造困難有: 1.門店過于分散,改造的人力和差旅成本極高; 2.聯(lián)網(wǎng)系統(tǒng)調(diào)試難度大,需要技術(shù)人員; 3.數(shù)據(jù)的穩(wěn)定性
    的頭像 發(fā)表于 12-31 14:24 ?564次閱讀
    安科瑞EIOT能源<b class='flag-5'>物</b><b class='flag-5'>聯(lián)網(wǎng)</b>平臺(tái)如何<b class='flag-5'>應(yīng)用到</b>連鎖門店<b class='flag-5'>中</b>

    zeta在機(jī)器學(xué)習(xí)的應(yīng)用 zeta的優(yōu)缺點(diǎn)分析

    探討ZETA在機(jī)器學(xué)習(xí)的應(yīng)用以及ZETA的優(yōu)缺點(diǎn)時(shí),需要明確的是,ZETA一詞在不同領(lǐng)域可能有不同的含義和應(yīng)用。以下是根據(jù)不同領(lǐng)域的ZETA進(jìn)行的分析: 一、ZETA在
    的頭像 發(fā)表于 12-20 09:11 ?1124次閱讀

    聯(lián)網(wǎng)學(xué)習(xí)路線來啦!

    聯(lián)網(wǎng)學(xué)習(xí)路線來啦! 聯(lián)網(wǎng)方向作為目前一個(gè)熱門的技術(shù)發(fā)展方向,有大量的人才需求,小白的學(xué)習(xí)入門
    發(fā)表于 11-11 16:03

    socket在聯(lián)網(wǎng)的應(yīng)用案例

    至關(guān)重要的角色。 1. 引言 聯(lián)網(wǎng)(IoT)技術(shù)的發(fā)展,使得各種設(shè)備能夠相互連接并交換數(shù)據(jù),從而實(shí)現(xiàn)智能化管理和控制。在這個(gè)過程,Socket作為網(wǎng)絡(luò)通信的基本接口,為設(shè)備之間的數(shù)據(jù)傳輸提供了可能。本文
    的頭像 發(fā)表于 11-04 09:17 ?953次閱讀

    什么是聯(lián)網(wǎng)技術(shù)?

    什么是聯(lián)網(wǎng)技術(shù)? 聯(lián)網(wǎng)技術(shù)(Internet of Things, IoT)是一種通過信息傳感設(shè)備,按約定的協(xié)議,任何物體與網(wǎng)絡(luò)相連
    發(fā)表于 08-19 14:08

    如何將TRIZ的“最終理想解”應(yīng)用到機(jī)器人電機(jī)控制設(shè)計(jì)?

    的是產(chǎn)品或技術(shù)系統(tǒng)的理想化狀態(tài),即低成本、高功能、高可靠性、無污染等特性的完美結(jié)合。 在機(jī)器人電機(jī)控制設(shè)計(jì),工程師們常常面臨諸多挑戰(zhàn),如如何在提高控制精度的同時(shí)降低能耗和噪音,如何在有限的資源下實(shí)現(xiàn)最優(yōu)的系統(tǒng)
    的頭像 發(fā)表于 08-13 10:19 ?854次閱讀

    如何將人工智能應(yīng)用到效能評(píng)估工具中去解決

    智慧華盛恒輝人工智能應(yīng)用到效能評(píng)估工具,可以通過以下幾個(gè)步驟來實(shí)現(xiàn),以提升評(píng)估的準(zhǔn)確性、效率和實(shí)用性: 智慧華盛恒輝一、明確評(píng)估目標(biāo)與指標(biāo) 確定效能評(píng)估的目標(biāo):首先,需要明確效能評(píng)估的具體目標(biāo)
    的頭像 發(fā)表于 07-24 10:34 ?701次閱讀

    天拓四方:聯(lián)網(wǎng)數(shù)據(jù)采集網(wǎng)關(guān)的幾大特點(diǎn)探討

    技術(shù)的深入應(yīng)用提供了堅(jiān)實(shí)的基礎(chǔ)。本文詳細(xì)探討聯(lián)網(wǎng)數(shù)據(jù)采集網(wǎng)關(guān)的幾大特點(diǎn)。 一、多樣化的通信接口與協(xié)議支持
    的頭像 發(fā)表于 07-17 17:11 ?605次閱讀