您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關基于樹莓派和Tensowflow 的物體識別是怎樣的,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
我們先來實現這個項目的核心部分:用樹莓派和Tensowflow的識別現實世界的物體。
隨手把桌子上同事給的橘子拍下來,之后我們試著讓樹莓派認出它
How to build a robot that “sees” with $100 and TensorFlow 已經把要做的是事說清楚了
物體識別是近來機器學習領域的熱點之一。對于識別人臉或是區分貓狗這件事上,計算機已經胸有成竹,而在更大的圖片集中識別一個指定的物體還是人工智能領域的“圣杯”,不過近年也有很大進展
我們將造一個能自己識別物體的機器人(不需要云服務)
樹莓派(Raspberry Pi)是一款基于Linux的單板機電腦,它只有巴掌大小,卻有驚人的計算能力,你可以把它當做一臺普通電腦。
樹莓派的使命是制作一套啟發孩子的電腦,降低孩子們試錯的成本
樹莓派最新的版本是樹莓派3,較前一代樹莓派2,樹莓派3的處理器升級為了64位的博通BCM2837,并首次加入了Wi-Fi無線網絡及藍牙功能。加量不加價
TensorFlow是一個由"Google大腦"團隊的研究人員開發的機器學習庫,Google遵循Apache License 2.0將其開源。該系統可以被用于語音識別、圖片識別等多個領域
在這個項目中我們主要用到一個叫做 inception 的模型(基于ImageNet數據集)。它可以完成物體識別,我們直接使用預訓練好的模型。訓練模型可是個費時費力的工作
你把智能當黑盒使用的時候,并不需要有那么多偷懶的負罪感啦(哈哈 我還是有一點)
電氣時代來臨的時候,變革社會的除了那些發電的人,那些懂得使用電力去改造傳統行業,創造新的行業的人,也許對社會的變革更為深刻。盡管他們可能連卡諾循環都不知道,甚至不知如何將水蒸汽中的動能轉換為功,進而驅動電機發電
這個數據集包含約120萬張訓練圖像、5萬張驗證圖像和10萬張測試圖像,分為1000個不同的類別,用于機器學習中訓練圖像識別系統
我們先準備好樹莓派,我用的是安裝了 raspbian-2016-05-31 版本的樹莓派3代(使用其他版本應該也沒問題),關于樹莓派的相關配置可以參考我之前的文章: 樹莓派折騰筆記之系統安裝與配置
How to build a robot that “sees” with $100 and TensorFlow 這篇文章里,作者采用的是TensorFlow提供的makefile命令,在樹莓派中本地編譯,這一步驟花費了作者幾個小時。不過好處是一步到位。安裝完后可以直接運行: tensorflow/contrib/pi_examples/label_image/gen/bin/label_image
來識別物體
我不打算編譯安裝,除了過程費事,還需要在安裝的幾個小時里提心吊膽,深怕某個依賴問題導致前功盡棄,重新編譯。 我在手動編譯opencv的時候就曾備受折磨
我們先安裝已經適合樹莓派的Tensowflow,這種工作,肯定有人做過,github一搜果不其然: tensorflow-on-raspberry-pi 。我們開始安裝:
wget https://github.com/samjabrahams/tensorflow-on-raspberry-pi/raw/master/bin/tensorflow-0.9.0-cp27-none-linux_armv7l.whl sudo pip install tensorflow-0.9.0-cp27-none-linux_armv7l.whl #這一步會安裝其他依賴,如果太慢,可以用-i參數,使用豆瓣源
安裝過程很快,也就喝杯茶時間,過程十分流暢
Tensowflow安裝完成,我們開始加載模型,安裝過程參考這里: pi_examples
mkdir ~/tfcd /usr/local/lib/python2.7/dist-packages/tensorflow/models/image/imagenetpython classify_image.py --model_dir ~/tf/imagenet #--model_dir 指定模型數據存放的目錄
完成后我們來測試下是否正常
python /usr/local/lib/python2.7/dist-packages/tensorflow/models/image/imagenet/classify_image.py --model_dir ~/tf/imagenet
如果是如下輸出則一切就緒:
giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca (score = 0.89233)indri, indris, Indri indri, Indri brevicaudatus (score = 0.00859)lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens (score = 0.00264)custard apple (score = 0.00141)earthstar (score = 0.00107)
我們來試一下我的傘(拍于辦公室):
python /usr/local/lib/python2.7/dist-packages/tensorflow/models/image/imagenet/classify_image.py --model_dir ~/tf/imagenet --image_file /tmp/test.jpg # 圖片需是jpg格式
輸出為
程序會給出5個可能的物體,得分最高的是雨傘,識別的很準確
我們接著給它看一張橘子的圖片:
輸出為
lemon (score = 0.72036)orange (score = 0.16516)spaghetti squash (score = 0.01571)butternut squash (score = 0.00304)ocarina, sweet potato (score = 0.00298)
它認為最大的可能是檸檬,橘子和檸檬確實很相似
如果你想自己來訓練你的模型,可以參考googleblog上的這篇文章: Train your own image classifier with Inception in TensorFlow
目前物體識別的性能不高,需要等一會兒,Lukas的機器人很有趣,它每次拍下照片,開始計算的時候會說 I'm thinking
。延時得很自然,機器也確實是在“思考”
關于如何提高運算速度,以下是幾個可能
利用GPU來計算。樹莓派支持GPU運算,不過 tensorflow-on-raspberry-pi 目前沒有GPU版本的whl,linux/mac都有GPU版本的whl. 此問題詳細談論可以參考: Question on GPU
使樹莓派超頻可以加快運算速度
把tensorflow部署到小車控制器坐在的電腦上(本地電腦),實際計算在本地進行(這樣可以把tensorflow用到任何client里,不過需要聯網運行)
把tensorflow部署到云上,提供網絡服務
另一個優化是,縮小圖片尺寸,可以使用ImageMagick提供的convert指令: convert -resize 100x100 test.png dest.jpg
。 如此一來就把圖片轉化為小尺寸(100x100),能有效提高運算速度。
關于基于樹莓派和Tensowflow 的物體識別是怎樣的就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。