Coral Edge TPU
和Ultralytics
的強大功能集於一處: edge-tpu-silva
。我們的edge-tpu-silva是一個Python包,它簡化了Coral TPU USB依賴項的安裝,並確保與PyCoral和Ultralytics的兼容性。該軟體包支援各種邊緣設備上的物件detection
、 segmentation
和classification
功能,以實現更高的FPS
(即時處理器速度)。
Coral USB Accelerator Exclusivity
:
Edge-tpu-silva 庫專為與 Coral USB 加速器無縫整合而建置。這種強大的硬體加速器不僅是一種要求,而且是一種策略選擇,可以釋放該程式庫在卓越的物件detection
、 segmentation
和classification
的全部潛力。
探索 Coral USB 加速器並體驗使用 edge-tpu-silva 庫自訂的邊緣運算方法。
edge-tpu-silva
包只能與python versions <3.10
相容。如果您的 python 版本不相容,請安裝特定的 python 版本。
範例:對於
Raspberry Pi
您可以按一下 有關如何使用 pyenv 安裝特定 python 版本的說明
注意:建議使用Python 3.6到3.9,點擊上面的連結了解如何安裝特定的Python版本
注意:確保您的 Raspberry Pi 是最新的。為此,請在終端機中執行以下命令。
sudo apt-get updatesudo apt-get upgrade
在終端機中執行下面的 bash 程式碼來建立並啟動名為.venv
的新虛擬環境。確保您位於想要安裝此環境的特定目錄中。
python3 -m venv .venv
source .venv/bin/activate
若要安裝edge-tpu-silva ,請在指定的 python 環境中使用下列 pip 指令:
pip install edge-tpu-silva
此表概述了系統與不同設備和作業系統的兼容性。
相容性 | 設定命令 | |
---|---|---|
樹莓派5 | ✔ | silvatpu-linux-設置 |
樹莓派4 | ✔ | silvatpu-linux-設置 |
樹莓派3 | ✔ | silvatpu-linux-設置 |
傑特森納米 | ✔ | silvatpu-linux-設置 |
視窗 | ||
macOS |
若要為您的系統配置設定工具,請在完成步驟 1 後在終端機中執行設定命令。
範例:如果您使用的是 Raspberry Pi 5,請依照步驟 1 在終端機中執行以下命令。
silvatpu-linux-setup
此命令安裝適用於 Linux 的標準 Edge TPU 運行時,以降低的時脈頻率運行設備。或者,您可以安裝最高速度的版本,但請小心功耗和設備熱量的增加。如果不確定,為了安全起見,請堅持降低頻率。若要安裝最大頻率運行時間,請將設定指令的速度指定為max
。
silvatpu-linux-setup --speed max
您不能同時安裝兩個版本的運行時,但您可以透過簡單地安裝備用運行時來進行切換,如上所示
注意:以最大時脈頻率使用 USB 加速器可能會導致其過熱。為防止燒傷,請將其放在夠不到的地方或以降低的時脈頻率運作。
注意:請確保您已透過 USB 3.0 連接埠連接
Coral USB Accelerator
usb 3.0 port (for faster speed)
。如果在安裝和設定過程中連接了 Coral USB 加速器,請中斷並重新連接以確保proper configuration.
要利用此程式庫發揮物件detection
、 segmentation
和classification
的強大功能,您需要一個與 Edge TPU 相容的 .tflite 模型。這些模型應使用Ultralytics
導出,確保與 edge-tpu-silva 庫無縫整合。
注意:請注意,YOLO 匯出期間指定的
imgsz
值應與為任何程序定義imgsz
時所使用的相同值一致。這些設定的一致性對於獲得最佳效能至關重要。
較小的模型運行速度較快,但精度可能較低,而較大的模型運行速度較慢,但精度通常較高。使用edge-tpu-silva 函式庫探索以下模型的邊緣運算功能。
下載連結 | 過程 | 基本型號 | 伊姆格斯茲 | 物件類別 |
---|---|---|---|---|
下載模型 | 偵測 | yolov8n.pt | 240 | 可可128 |
下載模型 | 分割 | yolov8n-seg.pt | 240 | 可可128 |
下載模型 | 偵測 | yolov8n.pt | 192 | 可可128 |
下載模型 | 分割 | yolov8n-seg.pt | 192 | 可可128 |
下載模型 | 分類 | yolov8n-cls.pt | 640 | 影像網 |
下載模型 | 偵測 | yolov9c.pt | 240 | 可可128 |
注意: YOLOv9 模型,尤其是 YOLOv9c.pt 版本,體積很大,這導致其 TensorFlow Lite 版本也相當大。因此,它在 Edge TPU 上的處理速度相對較慢。
若要使用process_detection
函數執行物件偵測,您可以依照下列範例操作:
from edge_tpu_silva import process_detection
# Run the object detection process
outs = process_detection ( model_path = 'path/to/your/model.tflite' , input_path = 'path/to/your/input/video.mp4' , imgsz = 192 )
for _ , _ in outs :
pass
process_detection
:使用入口點“silvatpu”若要從命令列使用process_detection
函數執行物件偵測,您可以使用使用者友善的入口點silvatpu
。這是一個範例命令:
silvatpu -p det -m path/to/model.tflite -i path/to/input/video.mp4 -z 192 -t 0.5 -v True
若要使用process_segmentation
函數執行物件分割,您可以依照下列範例操作:
from edge_tpu_silva import process_segmentation
# Run the object segmentation process
outs = process_segmentation ( model_path = 'path/to/your/model.tflite' , input_path = 'path/to/your/input/video.mp4' , imgsz = 192 )
for _ , _ in outs :
pass
process_segmentation
:使用入口點“silvatpu”若要從命令列使用process_segmentation
函數執行物件分割,您可以使用使用者友善的入口點silvatpu
。這是一個範例命令:
silvatpu -p seg -m path/to/model.tflite -i path/to/input/video.mp4 -z 192 -t 0.5 -v True
detection
、 segmentation
與classification
函數 輸入參數範圍 | 描述 | 預設值 |
---|---|---|
model_path | 物件分割模型的路徑。 | - |
input_path | 要處理的影像/影片的檔案路徑(相機(0|1|2))。 | - |
imgsz | 定義用於推理的圖像大小。 | - |
threshold | 偵測到的對象的閾值。 | 0.4 |
verbose | 顯示列印到終端。 | True |
show | 帶分段的顯示框架。 | False |
classes | 將預測過濾為一組類別 ID。 | None |
detection
、 segmentation
和classification
功能輸出每個處理函數都會產生以下輸出:
輸出參數 | 描述 |
---|---|
objs_lst | 幀中偵測到的物件清單。 |
fps | 已處理幀的每秒幀數 (fps)。 |
用法範例:
from edge_tpu_silva import process_detection
# Run the object detection process
outs = process_detection ( model_path = 'path/to/your/model.tflite' , input_path = 'path/to/your/input/video.mp4' , imgsz = 192 )
for objs_lst , fps in outs :
# Access the output parameters as needed
print ( f"Processed frame with { len ( objs_lst ) } objects. FPS: { fps } " )
print ( "List of object predictions in frame:" )
print ( objs_lst )
歡迎貢獻!如果您發現任何問題或有改進建議,請提出問題或提交拉取請求。
Python 套件索引維護者 (c) [2024] David Nyarko