NVIDIA Jetson Nano學習筆記(五):即時影像分類系統(PiCamera+OpenCV+TensorFlow Lite+Firebase)

本文章假設讀者已完成TF Runtime的安裝,並且已經自行裝上Pi Camera、設定好Firebase的RealTime Database及Storage。

(1)尚未安裝TF Runtime的讀者可以參考:
NVIDIA Jetson Nano學習筆記(四):安裝與執行Tensorflow Lite Model官方範例

(2)尚未設定好Firebase的RealTime Database及Storage的讀者可以參考:

Learning Firebase(1):Create Your First Project
Learning Firebase(2):CRUD Our Database with Python
Learning Firebase(3):Upload Image to Firebase with Python

程式碼:

程式碼其實與官方範例差不多

但是,新增以下功能:

  1. 使用OpenCV讀取PiCamera鏡頭,並透過Pillow與NumPy將OpenCV格式轉換成Tensorflow Lite能讀取的格式
  2. 目前只記錄Score > 0.7的辨識成果(label、Score、Time、fileName、image_url),用pandas輸出成CSV檔案(附加模式,避免覆蓋掉先前的辨識成果),供後續資料分析
  3. 用指定檔名保存辨識圖片(辨識出來的名稱與隨機數字作為檔名)
  4. 將辨識成果(label、Score、Time、fileName、image_url)以及辨識圖片上傳至Firebase Storage,供後續React Native APP串接使用
註:image_url為上傳至Firebase Storage的公開存取路徑,所有人都能存取

目前已知BUG

  1. 暫時無法將辨識出的內容加到保存的圖片中(cv2.putText)
  2. 還沒處理UnKnown標籤

參考資料:

1. Firebase Storage的操作(發現Cloud Storage和Firebase Storage的指令一樣)

1.1 Firebase Storage範例程式碼

1.2 Firebase Storage上傳

1.2 Firebase公開Object權限

https://cloud.google.com/storage/docs/uploading-objects#storage-upload-object-code-sample

Written by

Machine Learning / Deep Learning / Python / Flutter cakeresume.com/yanwei-liu

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store