技能get樹莓派上通過Tensorflow實現對象檢測

前言


為了實現在樹莓派上實現object detection的功能,我fork了一個倉庫:https://github.com/yoyojacky/TensorFlowObjectDetectionontheRaspberryPi

並且按照倉庫的readme做了一下測試。


2

測試環境


技能get樹莓派上通過Tensorflow實現對象檢測


3

操作步驟


1. 更新系統及軟件

技能get樹莓派上通過Tensorflow實現對象檢測


如果遭遇報錯:

技能get樹莓派上通過Tensorflow實現對象檢測

執行這條命令:

技能get樹莓派上通過Tensorflow實現對象檢測


2. 創建TF 的目錄

技能get樹莓派上通過Tensorflow實現對象檢測


實際上官方已經支持樹莓派了,https://www.tensorflow.org/install/install_raspbian這裡有。我是直接這裡下載的:https://github.com/lhelontra/tensorflowonarm/

releases

技能get樹莓派上通過Tensorflow實現對象檢測

然後安裝:


技能get樹莓派上通過Tensorflow實現對象檢測

然後發現…官方都是騙人的...

技能get樹莓派上通過Tensorflow實現對象檢測

PiaPia的打臉啊!我~不想吐槽了。。。

技能get樹莓派上通過Tensorflow實現對象檢測

技能get樹莓派上通過Tensorflow實現對象檢測

還好1.13.1 還能支持,暫時先用著。

技能get樹莓派上通過Tensorflow實現對象檢測

接下來要安裝atlasbasedev

技能get樹莓派上通過Tensorflow實現對象檢測

技能get樹莓派上通過Tensorflow實現對象檢測

繼續安裝依賴:


技能get樹莓派上通過Tensorflow實現對象檢測

技能get樹莓派上通過Tensorflow實現對象檢測


3. 安裝openCV

安裝openCV要先安裝一些依賴,而且記得要用aptget update更新。

技能get樹莓派上通過Tensorflow實現對象檢測


安裝opencvpython

技能get樹莓派上通過Tensorflow實現對象檢測

技能get樹莓派上通過Tensorflow實現對象檢測


4. 編譯安裝protobuf


這個是最耗費時間的一步應該說,我估計需要很久時間才可以搞定。

先安裝編譯需要的工具:

技能get樹莓派上通過Tensorflow實現對象檢測

技能get樹莓派上通過Tensorflow實現對象檢測

技能get樹莓派上通過Tensorflow實現對象檢測

下載最新的源碼,編譯安裝。


技能get樹莓派上通過Tensorflow實現對象檢測

技能get樹莓派上通過Tensorflow實現對象檢測

解壓並進入源碼目錄進行預編譯,編譯和安裝

技能get樹莓派上通過Tensorflow實現對象檢測

技能get樹莓派上通過Tensorflow實現對象檢測


技能get樹莓派上通過Tensorflow實現對象檢測

讓4個CPU都跑滿。。。

技能get樹莓派上通過Tensorflow實現對象檢測

算算時間。現在是16:43

突然想看看溫度,然後發現溫度真的很感人。。。

技能get樹莓派上通過Tensorflow實現對象檢測

技能get樹莓派上通過Tensorflow實現對象檢測

編譯完溫度降到54度了

技能get樹莓派上通過Tensorflow實現對象檢測

安裝完成。

接下來是調整一下環境變量。

技能get樹莓派上通過Tensorflow實現對象檢測

技能get樹莓派上通過Tensorflow實現對象檢測

接著繼續:

技能get樹莓派上通過Tensorflow實現對象檢測

技能get樹莓派上通過Tensorflow實現對象檢測


技能get樹莓派上通過Tensorflow實現對象檢測

然後定義protobuf的變量環境:

技能get樹莓派上通過Tensorflow實現對象檢測

技能get樹莓派上通過Tensorflow實現對象檢測

技能get樹莓派上通過Tensorflow實現對象檢測

好了,protobuf已經安裝完成了,測試一下。

技能get樹莓派上通過Tensorflow實現對象檢測

技能get樹莓派上通過Tensorflow實現對象檢測

接下來重啟一下系統:

技能get樹莓派上通過Tensorflow實現對象檢測


5. 設置tensorflow目錄結構及python路徑變量

技能get樹莓派上通過Tensorflow實現對象檢測

下載Tensorflow模型:

技能get樹莓派上通過Tensorflow實現對象檢測

技能get樹莓派上通過Tensorflow實現對象檢測

需要改動.bashrc,讓每次登陸的時候都能夠初始化變量。文檔末尾加這段話:

技能get樹莓派上通過Tensorflow實現對象檢測

保存後退出,然後關閉終端重啟打開終端,測試變量看在不在,如果不在繼續重複上面

的操作,如果ok 了,就繼續下面的操作。現在,我們需要使用Protoc來編譯Object

Detection API使用的Protocol Buffer(.proto)文件。.proto文件位於/ research /

object_detection / protos中,但我們需要從/ research目錄來執行命令。


技能get樹莓派上通過Tensorflow實現對象檢測

此命令將所有“name”.proto文件轉換為“name_pb2”.py文件。接下來,進入

object_detection目錄:


技能get樹莓派上通過Tensorflow實現對象檢測

技能get樹莓派上通過Tensorflow實現對象檢測

我採用別的方法,目標是一樣的。

現在模型位於object_detection目錄中,可以使用了。


6. 檢測物體開始

好的,現在一切都設置為在Pi上執行對象檢測!此存儲庫中的Python腳本

Object_detection_picamera.py可檢測來自Picamera或USB網絡攝像頭的實時源中

的對象。基本上,腳本設置模型和標籤貼圖的路徑,將模型加載到內存中,初始化

Picamera,然後開始在Picamera的每個視頻幀上執行對象檢測。


如果您使用的是Picamera,請確保在Raspberry Pi配置菜單中啟用它。

技能get樹莓派上通過Tensorflow實現對象檢測

通過發出以下命令將Object_detection_picamera.py文件下載到object_detection目錄:

技能get樹莓派上通過Tensorflow實現對象檢測

技能get樹莓派上通過Tensorflow實現對象檢測

然後接上攝像頭,讓我們測試一下。

發現報錯:

技能get樹莓派上通過Tensorflow實現對象檢測

安裝一個包試試看:

技能get樹莓派上通過Tensorflow實現對象檢測

技能get樹莓派上通過Tensorflow實現對象檢測

繼續嘗試:

提示我import .cv2 失敗,缺少libqt4test.so, 我查了一下安裝了libqtgui4 的包,還是不行,我就重新通過apt安裝了python3opencv的包。


技能get樹莓派上通過Tensorflow實現對象檢測

技能get樹莓派上通過Tensorflow實現對象檢測

技能get樹莓派上通過Tensorflow實現對象檢測

繼續安裝一個軟件包:

技能get樹莓派上通過Tensorflow實現對象檢測

技能get樹莓派上通過Tensorflow實現對象檢測

這些都搞定了就開始測試吧:

因為我是遠程終端測試,沒有圖形環境,所以我用了DISPLAY=:0.0 指定了顯示的桌面

環境,直接在終端執行命令,然後顯示在屏幕上,效果非常不錯哦。不過要確認一下,

你所在的工作目錄是:

~/tensorflow1/models/research/object_detection/

執行的命令是:

技能get樹莓派上通過Tensorflow實現對象檢測

技能get樹莓派上通過Tensorflow實現對象檢測

技能get樹莓派上通過Tensorflow實現對象檢測

技能get樹莓派上通過Tensorflow實現對象檢測

技能get樹莓派上通過Tensorflow實現對象檢測

我測試樹莓派4B的4GB版本,在沒有做任何優化的情況下可以達到2幀每秒…..真是慢啊

技能get樹莓派上通過Tensorflow實現對象檢測

不過識別還是不錯的,就是對象檢測已經成型,可以檢測到物體,並且提供可信度的信

息。

後面就可以通過這些做一些擴展性的應用了。


英國疫情越來越嚴重,趁著樹莓派價格還如此優惠的時候,創客精神走一波—生命在於折騰!!!


分享到:


相關文章: