賦予樹莓派(Raspberry Pi 5)AI超能力(二):安裝Hailo AI加速器的程式開發套件

本文使用的Raspberry Pi 5開發板Raspberry Pi AI Kit人工智慧套件| PCIe 擴充套件,由台灣樹莓派Sosorry先生贊助提供,特此感謝!

使用libcamera確認樹莓派攝影機能運作

測試Hailo AI加速器之前,首先確認攝影機可以正常運作。我在樹莓派5安裝1.3版的500萬畫素攝影機,以及最新版Raspberry Pi OS(基於Debian 12 Bookworm)。

早期樹莓派系統內建的攝影工具軟體是:

  • raspistill:用於擷取靜態影像,或定時擷取連續影像。
  • raspivid:擷取和串流即時視訊。

新版樹莓派OS內建開源的libcamera程式框架,名稱中的“lib”代表“library”(程式庫);各種相機模組在此框架下,都能透過統一的API介面操控。

先在終端機執行下列指令更新系統、驅動程式及程式庫:

sudo apt update && apt  full-upgrade -y

接著執行底下命令,偵測連接到樹莓派的全部攝影機:

libcamera-hello --list-cameras

執行結果像這樣:

Available cameras
   -----------------
   0 : ov5647 [2592x1944 10-bit GBRG]  (/base/axi/pcie@1000120000/rp1/i2c@88000/ov5647@36)
   Modes: 'SGBRG10_CSI2P' : 640x480 [58.92 fps - (16, 0)/2560x1920 crop]
   1296x972 [46.34  fps - (0, 0)/2592x1944 crop]
   1920x1080 [32.81  fps - (348, 434)/1928x1080 crop]
   2592x1944 [15.63  fps - (0, 0)/2592x1944 crop]
 

以上內容大致是:找到一個(索引編號0)採用OV5647感測元件的相機模組,並列舉它支援的拍攝模式,每種模式都有特定的解析度、影格速率和裁切,例如,它可以拍攝58.92 fps、640×480視訊,或15.63 fps、2592×1944視訊。

即時預覽相機畫面的命令是“libcamera-hello”,參數t代表毫秒時間,執行底下命令會開啟一個視窗,顯示相機畫面5秒鐘(參數-t 0則代表持續執行,直到按下Ctrl+C鍵中止)。

libcamera-hello -t 5000

拍攝照片的命令是“libcamera-still”,底下命令擷取640×480大小的靜態影像,以“test.jpg”檔名存入當前的目錄。若省略–width(寬)和–height(高)參數,它將以最高畫質拍攝。

libcamera-still --width 640 --height 480  -o test.jpg

啟用PCIe Gen 3.0介面

為了充分發揮Hailo AI處理器每秒兆次運算(TOPS)的AI推理效能,需要搭配高速、高寬頻的資料通道,所以樹莓派5開發板的PCIe介面,必須設成Gen 3.0;預設的Gen 2.0頻寬會限制Hailo AI加速器的效能。

將PCIe的速度設為Gen 3.0,需要在終端機執行樹莓派設置工具:

sudo raspi-config

依照底下步驟操作:

1. 選擇“Advanced Options(進階選項)”。

Advanced Options(進階選項)

2. 選擇”PCIe Speed(PCIe速度)”。

PCIe Speed(PCIe速度)

3. 選擇“Yes”。

Yes

4. 選擇“OK”後,即可關閉設定工具。

OK

5. 重新啟動系統。

補充說明,樹莓派官方文件的PCIe Gen 3.0單元有提醒,Raspberry Pi 5僅支援 PCIe Gen 2.0 (5GT/秒),尚未通過 Gen 3.0 (10GT/s) 認證,啟用Gen 3.0可能會導致運作不穩定。聽起來很矛盾,但實際以Gen 3.0速度執行Hailo AI應用,尚未發現問題。

安裝Hailo驅動軟體和程式開發套件

在終端機執行這個命令:

sudo apt install hailo-all

將會在樹莓派安裝下列軟體元件:

  • Hailo驅動程式
  • HailoRT執行環境(runtime):提供簡化開發Hailo應用程式的C/C++/Python API。
  • Hailo TAPPAS核心套件:TAPPAS是一套Hailo的完整應用範例,提供預先開發好的GStreamer元素(主要用於處理串流媒體的跨平台、開源程式框架),以及預先訓練完成的AI任務,可簡化Hailo的軟體開發流程。
  • rpicam-apps Hailo:這是樹莓派公司將Hailo AI加速器與其攝影機程式整合,進行AI後製處理(如:物件偵測)的官方範例程式。

下圖譯自Hailo TAPPAS GitHub首頁,從中可見HailoRT和TAPPAS的關係。

Hailo軟體架構

Hailo相關軟體安裝完成後,請重新開機,然後在終端機輸入底下命令,確認系統有偵測到Hailo AI晶片:

hailortcli fw-control identify

它應該會傳回類似底下的訊息,包含韌體版本、晶片的架構、序號、名稱…等。

Executing on device: 0001:01:00.0
   Identifying board
   Control Protocol Version: 2
   Firmware Version: 4.20.0  (release,app,extended context switch buffer)
   Logger Version: 0
   Board Name: Hailo-8
   Device Architecture: HAILO8L
   Serial Number: HLDDLBB〇〇〇〇〇〇〇〇 
   Part Number: HM21〇〇〇〇〇〇〇〇 
   Product Name: HAILO-8L AI ACC M.2 B+M  KEY MODULE EXT TMP

安裝Hailo AI的Python範例程式

Hailo Raspberry Pi 5 Examples是Hailo官方提供的範例,展示AI套件在樹莓派5上的功能,支援 Hailo8 (26 TOPS) 和Hailo8L (13 TOPS) AI加速器。這些範例也能在搭載Hailo8/8L AI加速器的x86_64 Ubuntu電腦上執行。

先在終端機輸入底下命令,複製(clone)此範例到本機:

git clone https://github.com/hailo-ai/hailo-rpi5-examples.git

複製完畢後,切換到hailo-rpi5-examples目錄,並執行其中的install.sh程式檔,安裝Python虛擬環境。

cd hailo-rpi5-examples
   ./install.sh

這是執行安裝虛擬環境之後,hailo-rpi5-examples目錄的內容:

ailo-rpi5-examples目錄

這是basic_pipelines(直譯為「基礎_管線」)目錄的內容,就是Hailo影像物件偵測的Python範例程式。

basic_pipelines目錄

這是resources(資源)目錄的內容,包含已訓練好的AI視覺偵測模型檔,以及測試物件偵測用的範例影片檔。

resources目錄

啟用Hailo AI的Python虛擬環境

Hailo AI的範例都在Python虛擬環境中執行。請先在hailo-rpi5-examples路徑執行底下命令,啟用Python虛擬環境:

source setup_env.sh

此命令的執行結果如下:

啟用Hailo AI的Python虛擬環境

然後在虛擬環境中安裝Hailo AI範例所需的Python程式套件:

pip install -r requirements.txt

執行底下的命令,detection.py將偵測“example.mp4”影片中的物體並顯示fps(每秒影格數)。

python basic_pipelines/detection.py -i  resources/example.mp4 -f

這個命令中的“-i resources/example.mp4”和“-f”參數都能省略,detection.py預設會讀取example.mp4檔但不顯示fps。

detection.py命令

執行結果如下,它將開啟一個視窗播放example.mp4檔,即時透過AI後製加工,用方框包圍偵測到的物件,並在方框上方標示物件類型名稱和置信度(也就是屬於該類型物件的可能性百分比值),例如:人(Person 87%)、手提包(Handbag 44%)、腳踏車(Bicycle 91%)…等。

物件偵測結果

HD(1280 x 720)畫質影片,Hailo 13 TPOS AI加速器的物件偵測的速率達到近30 fps,相當不錯。

“–input"參數值改成”rpi”,將能讀取樹莓派攝影機的串流視訊:

python basic_pipelines/detection.py -i  rpi -f

“–input"參數值改成”usb”,將能讀取USB攝影機的串流視訊。

Posts created 529

2 thoughts on “賦予樹莓派(Raspberry Pi 5)AI超能力(二):安裝Hailo AI加速器的程式開發套件

  1. python basic_pipelines/detection.py -i resources/example.mp4 -f

    照您一樣的做法,我的fps就是上不了30fps,且一直會drop frames。請問你是用sd card開機嗎?
    謝謝

    1. 1. 請確認你有啟用PCI3e 3.0,在終端機輸入底下命令,從speed欄位可看到傳輸速率:

      lspci -vv | grep LnkSta

      2. 請使用5V/5A電源,確保電力充足。
      3. 請替樹莓派加上主動式散熱,就是帶有風扇的那一種,以防系統因過熱而自動降頻。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Related Posts

Begin typing your search term above and press enter to search. Press ESC to cancel.

Back To Top