前言
為了實現在樹莓派上實現object detection的功能,我fork了一個倉庫:https://github.com/yoyojacky/TensorFlowObjectDetectionontheRaspberryPi
並且按照倉庫的readme做了一下測試。
2
測試環境
3
操作步驟
1. 更新系統及軟件
如果遭遇報錯:
執行這條命令:
2. 創建TF 的目錄
實際上官方已經支持樹莓派了,https://www.tensorflow.org/install/install_raspbian這裡有。我是直接這裡下載的:https://github.com/lhelontra/tensorflowonarm/
releases
然後安裝:
然後發現…官方都是騙人的...
PiaPia的打臉啊!我~不想吐槽了。。。
還好1.13.1 還能支持,暫時先用著。
接下來要安裝atlasbasedev
繼續安裝依賴:
3. 安裝openCV
安裝openCV要先安裝一些依賴,而且記得要用aptget update更新。
安裝opencvpython
4. 編譯安裝protobuf
這個是最耗費時間的一步應該說,我估計需要很久時間才可以搞定。
先安裝編譯需要的工具:
下載最新的源碼,編譯安裝。
解壓並進入源碼目錄進行預編譯,編譯和安裝
讓4個CPU都跑滿。。。
算算時間。現在是16:43
突然想看看溫度,然後發現溫度真的很感人。。。
編譯完溫度降到54度了
安裝完成。
接下來是調整一下環境變量。
接著繼續:
然後定義protobuf的變量環境:
好了,protobuf已經安裝完成了,測試一下。
接下來重啟一下系統:
5. 設置tensorflow目錄結構及python路徑變量
下載Tensorflow模型:
需要改動.bashrc,讓每次登陸的時候都能夠初始化變量。文檔末尾加這段話:
保存後退出,然後關閉終端重啟打開終端,測試變量看在不在,如果不在繼續重複上面
的操作,如果ok 了,就繼續下面的操作。現在,我們需要使用Protoc來編譯Object
Detection API使用的Protocol Buffer(.proto)文件。.proto文件位於/ research /
object_detection / protos中,但我們需要從/ research目錄來執行命令。
此命令將所有“name”.proto文件轉換為“name_pb2”.py文件。接下來,進入
object_detection目錄:
我採用別的方法,目標是一樣的。
現在模型位於object_detection目錄中,可以使用了。
6. 檢測物體開始
好的,現在一切都設置為在Pi上執行對象檢測!此存儲庫中的Python腳本
Object_detection_picamera.py可檢測來自Picamera或USB網絡攝像頭的實時源中
的對象。基本上,腳本設置模型和標籤貼圖的路徑,將模型加載到內存中,初始化
Picamera,然後開始在Picamera的每個視頻幀上執行對象檢測。
如果您使用的是Picamera,請確保在Raspberry Pi配置菜單中啟用它。
通過發出以下命令將Object_detection_picamera.py文件下載到object_detection目錄:
然後接上攝像頭,讓我們測試一下。
發現報錯:
安裝一個包試試看:
繼續嘗試:
提示我import .cv2 失敗,缺少libqt4test.so, 我查了一下安裝了libqtgui4 的包,還是不行,我就重新通過apt安裝了python3opencv的包。
繼續安裝一個軟件包:
這些都搞定了就開始測試吧:
因為我是遠程終端測試,沒有圖形環境,所以我用了DISPLAY=:0.0 指定了顯示的桌面
環境,直接在終端執行命令,然後顯示在屏幕上,效果非常不錯哦。不過要確認一下,
你所在的工作目錄是:
~/tensorflow1/models/research/object_detection/
執行的命令是:
我測試樹莓派4B的4GB版本,在沒有做任何優化的情況下可以達到2幀每秒…..真是慢啊
不過識別還是不錯的,就是對象檢測已經成型,可以檢測到物體,並且提供可信度的信
息。
後面就可以通過這些做一些擴展性的應用了。
英國疫情越來越嚴重,趁著樹莓派價格還如此優惠的時候,創客精神走一波—生命在於折騰!!!
閱讀更多 電子芯吧客 的文章