本文使用的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(進階選項)”。

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

3. 選擇“Yes”。

4. 選擇“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 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目錄的內容:
這是basic_pipelines(直譯為「基礎_管線」)目錄的內容,就是Hailo影像物件偵測的Python範例程式。
這是resources(資源)目錄的內容,包含已訓練好的AI視覺偵測模型檔,以及測試物件偵測用的範例影片檔。
啟用Hailo AI的Python虛擬環境
Hailo AI的範例都在Python虛擬環境中執行。請先在hailo-rpi5-examples路徑執行底下命令,啟用Python虛擬環境:
source setup_env.sh
此命令的執行結果如下:
然後在虛擬環境中安裝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。
執行結果如下,它將開啟一個視窗播放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攝影機的串流視訊。

python basic_pipelines/detection.py -i resources/example.mp4 -f
照您一樣的做法,我的fps就是上不了30fps,且一直會drop frames。請問你是用sd card開機嗎?
謝謝
1. 請確認你有啟用PCI3e 3.0,在終端機輸入底下命令,從speed欄位可看到傳輸速率:
lspci -vv | grep LnkSta
2. 請使用5V/5A電源,確保電力充足。
3. 請替樹莓派加上主動式散熱,就是帶有風扇的那一種,以防系統因過熱而自動降頻。