樹莓派買了很久,各種小程序倒騰了半天,無非是控制個電燈開關,打開個網頁,做個xmbc媒體播放器,但總是沒有找到吊炸天的應用對不?
現在的樹莓派3代,其實性能已經跟上來了,即使在上面跑神經網絡圖像識別軟件,速度也勉強能接受了。本文教你如何一步完成這個神軟件的部署。
谷歌2015年發布了tensorflow平臺,2017年繼續發布armv7版本,因此樹莓派上現在能順利跑tensorflow了。大家都知道,訓練神經網絡,非常耗費時間,要動用大量計算資源,還動不動得跑十幾天才能完成,一般人玩不起這個。谷歌慷慨的將其在圖像分類識別領域的最新訓練成果Inception-v3模型的訓練結果公布出來。這個模型在imageNet上面訓練了幾十萬張共1000個不同類型的物品的圖片,最終訓練的錯誤率為3.46%(據說人眼識別的錯誤率僅為5.1%)。也就是說對于這1000種物品的識別率,Inception-v3模型已經高于人眼。
那就讓我們在樹莓派上開始部署這個程序吧!
為了讓大家很方便的使用到這個程序,筆者將將所有準備工作都編譯到docker鏡像中去了,這樣大家可以跳過繁雜的安裝過程,同時筆者還略微修改了谷歌的代碼,使得輸出結果能翻譯成中文,便于理解。
首先您要先確定您的樹莓派操作系統(raspbian)的版本要至少為jessie,如果還沒有升級到這個版本,請先刷到這個版本。樹莓派板卡最好為pi 3,前面幾代應該也能運行(筆者沒有測試過),但CPU速度比較慢,運行時間會比較長。
部署的過程其實只有一行代碼:
在樹莓派的命令行終端上輸入以下代碼
curl -s?https://raw.githubusercontent.com/flyingtimes/image-recognition/master/one_step_install.sh|bash
這是一個腳本,會自動幫你把源代碼下載下來,如果沒有安裝docker,會自動安裝docker,并下載相關的docker鏡像。tensorflow所需的所有組件都已經在docker中預先準備好了,您只要運行程序就行了。整個過程需要下載700M左右的數據,請耐心等待。
部署完以后,將你要識別的圖像放到image_recognition文件夾里面,然后運行:
cd image-recognition/
bash imgdetect.sh [你的圖片文件名]
就可以啦。例如
bash imgdetect.sh demo01.jpg
demo01.jpg是一個橙子的圖片,程序會返回
orange(橙色)---(Matching = 0.85452)
受限于樹莓派的CPU速度,您大約需要30秒才能得到識別結果,但已經很好玩了不是?
借助這個程序,您可以往下拓展,例如利用樹莓派的攝像頭,定時拍攝一幅照片,然后用這個程序來進行圖像識別,用喇叭說出識別的結果來。這個用來給小朋友做玩具用,還是不錯的。
覺得本文有幫助的,被忘了給我點個贊。感興趣的人多的話,筆者將繼續發布《一行代碼在樹莓派上進行人臉識別》哦。
PS:
近期由于“網絡安全原因”,部分讀者反映有幾種異常情況,統一回復如下:
1)在git clone的時候等待很久,實際是因為網絡原因無法在github上抓取代碼,我把項目代碼共享到百度網盤 https://pan.baidu.com/s/1b3R65g ,大家可以隨意下載。下載后進入image-recogintion-master 運行 bash install.sh 即可。
2)有部分用戶在執行過程中,顯示“docker未安裝”,然后長時間等待。這種情況也是因為網絡不良導致無法安裝docker。建議在樹莓派上反復執行:
curl -sSL https://get.docker.com | sh? ? ?直到成功為止。
3)鏡像下載是一個比較長的過程,建議耐心等待。鏡像文件托管到dockerhub上,如果不成功,建議在網絡良好的時候執行 docker pull clarkchan/rpi-tensorflow-imagenet
4) 部分用戶在執行的時候反映“memory”問題,主要是前幾代樹莓派內存不足,無法運行程序導致的,請確認你的硬件升級到樹莓派3
PS(2018-06-03):
今天重新運行了一次,發現由于網絡原因,原來的安裝腳本有些步驟我也不能用了。順便修改了一下。改了幾個地方:
1) docker的安裝。由于官網經常失聯,安裝改為apt-get install docker-ce,不從官網直接下載了。
2)鏡像獲取的時候,改使用root權限,避免permission denied 問題。
3) 中文翻譯的功能,采用簡友 阿群1986 的方案,從百度翻譯改為愛詞霸翻譯。