使用Raspberry Pi 5和Hailo-8L AI進(jìn)行物體識(shí)別和距離測(cè)量
想象一下,一輛車輛以每小時(shí) 54 公里的速度巡航,大約相當(dāng)于一個(gè)物體以每秒 30 幀的速度每幀移動(dòng) 0.5 米的速度(0.5×30×3.6=54 公里/小時(shí))。安裝在車頂上的是一個(gè)緊湊的高性能視覺系統(tǒng),圍繞 Raspberry Pi 5 板和 Hailo-8L AI 加速器構(gòu)建。這種實(shí)時(shí)設(shè)置可以檢測(cè)前方物體并估計(jì)它們與車輛的距離。當(dāng)物體進(jìn)入預(yù)定義的安全區(qū)域時(shí),系統(tǒng)可以立即發(fā)出警告或啟動(dòng)緊急制動(dòng),從而增強(qiáng)態(tài)勢(shì)感知和反應(yīng)時(shí)間。
該系統(tǒng)使用 Raspberry Pi 5 上的 AI 加速器 HAT 構(gòu)建,作為生產(chǎn)級(jí) AI 平臺(tái)運(yùn)行,能夠以每秒至少 30 幀的速度運(yùn)行。專為車載安裝而設(shè)計(jì),可連續(xù)掃描道路,實(shí)時(shí)識(shí)別物體,并計(jì)算其距離。這些實(shí)時(shí)讀數(shù)顯示在終端上。如果任何物體超過預(yù)定義的接近閾值,系統(tǒng)可能會(huì)通過 GPIO 引腳觸發(fā)警報(bào)。盡管警報(bào)機(jī)制易于實(shí)現(xiàn),但在當(dāng)前版本中仍未構(gòu)建。組裝系統(tǒng)所需的組件列在物料清單表格中。圖1顯示了作者的工作原型。

圖1:作者的物體識(shí)別和距離測(cè)量系統(tǒng)原型
連接和安裝
AI加速器可以安裝在樹莓派的頂部,如圖2所示。請(qǐng)注意,由于 AI HAT 完全覆蓋主處理器,因此 Raspberry Pi 5 往往會(huì)顯著發(fā)熱。為防止過熱,強(qiáng)烈建議使用額外的冷卻方法。在該系統(tǒng)中,安裝 AI HAT 后,只有特定的固定式冷卻器才能安裝在可用的狹窄空間內(nèi)。完整的設(shè)置及其各個(gè)組件如圖 2 所示。樹莓派 5 還必須由高質(zhì)量的 5V、4A 電源適配器供電,以保持穩(wěn)定的性能。

圖2:安裝在樹莓派上的AI加速器
通過主動(dòng)冷卻,Raspberry Pi 5 可以安全地超頻以獲得額外的性能,但代價(jià)是功耗和發(fā)熱略有增加。冷卻器的風(fēng)扇連接器應(yīng)插入 Pi 5 板上的指定風(fēng)扇接頭。當(dāng)與 AI HAT 搭配使用時(shí),基于 YOLO 的 AI 處理的繁重工作由加速器處理,使 Pi 5 能夠?qū)W⒂谟?jì)算和控制邏輯。這種分工確保了平穩(wěn)高效的運(yùn)行,即使在每秒 30 幀的情況下也是如此。
| 物料清單 | |
| 組件 | 數(shù)量 |
| 樹莓派 5、8Gb 或 16Gb | 1 |
| 適用于 Pi 5 的 Hailo-8L AI 加速器,13 TOPS 至 26 TOPS | 1 |
| Pi 5 相機(jī) | 1 |
| Pi 5 電源適配器 | 1 |
| 高速 SD 卡,32GB 或更多 | |
| HDMI 適配器/顯示器 | 1 |
編程和代碼
首先,確保安裝了 64 位 Raspberry Pi OS Bookworm。該系統(tǒng)在 32 位 Pi作系統(tǒng)上不起作用。建議使用高質(zhì)量的相機(jī)模塊 3 或更高,以獲得最佳效果。
安裝指南
https://www.raspberrypi.com/documentation/computers/ai.html#getting-started
更新 Systembash
$ sudo apt-get update $ sudo apt-get upgrade
訪問 Raspberry Pi
作 Raspberry Pi 最方便的方法是通過 SSH 從臺(tái)式機(jī)或筆記本電腦訪問它:
$ ssh bera@192.168.x.x
出現(xiàn)提示時(shí),輸入密碼。身份驗(yàn)證后,將授予對(duì) Raspberry Pi 5 終端的訪問權(quán)限。
注意:
SSH 訪問是可選的;還支持使用顯示器、鍵盤和鼠標(biāo)進(jìn)行直接連接。
啟用 PCIe Gen 3.0 速度
默認(rèn)情況下,Raspberry Pi 5 以第 2.0 代 PCIe 速度運(yùn)行。要啟用第 3.0 代:
$ sudo raspi-config
導(dǎo)航到高級(jí)選項(xiàng)→PCIE 速度
選擇“是”以啟用第 3 代模式
選擇“完成”,并在出現(xiàn)提示時(shí)重新啟動(dòng)系統(tǒng)。
安裝 Hailo 軟件堆棧
重新啟動(dòng)后,安裝 Hailo 驅(qū)動(dòng)程序和工具:
$ sudo apt install hailo-all
此命令安裝 Hailo 內(nèi)核設(shè)備驅(qū)動(dòng)程序、固件、HailoRT、Hailo 應(yīng)用程序、庫和“rpicam-apps”。然后重新啟動(dòng)系統(tǒng):
$ sudo reboot
重新啟動(dòng)以應(yīng)用所有更改。驗(yàn)證 Hailo 安裝。重新啟動(dòng)后,運(yùn)行:
$ hailortcli fw-control identify
這可確保所有更改生效。
Executing on device: 0000:01:00.0 Identifying board Control Protocol Version: 2 Firmware Version: 4.17.0 (release,app,extended context switch buffer) Logger Version: 0 Board Name: Hailo-8 Device Architecture: HAILO8L Serial Number: HLDDLBB234500054 Part Number: HM21LB1C2LAE Product Name: HAILO-8L AI ACC M.2 B+M KEY MODULE EXT TMP
最后五行確保 Hailo-8L 板已成功安裝。在某些情況下,可能不會(huì)顯示序列號(hào)或部件號(hào),但電路板將繼續(xù)正常運(yùn)行。測(cè)試 rpicam-hello:
$> rpicam-hello -t 10s # This will run rpicam for 10 seconds and then stop $> rpicam-hello --help # This displays the help file
安裝完所有組件后,安裝“rpicam-apps”包以啟用 Hailo AI 加速器功能:
$> sudo apt update && sudo apt install rpicam-apps
現(xiàn)在可以執(zhí)行高速物體檢測(cè)示例:
$> rpicam-hello -t 0 --post-process-file / usr/share/rpi-camera-assets/hailo_yolov6_ inference.json $> rpicam-hello -t 0 --post-process-file / usr/share/rpi-camera-assets/hailo_yolov8_ inference.json $> rpicam-hello -t 0 --post-process-file / usr/share/rpi-camera-assets/hailo_yolov5_ personface.json # This command detects faces – useful for face counting $> rpicam-hello -t 0 --post-process-file / usr/share/rpi-camera-assets/hailo_yolov8_ pose.json # This command detects human poses – useful for fall detection
這些命令演示了如何將 “rpicam-hello ”與不同的 YOLO AI 模型一起使用。
安裝說明
Hailo RPi5 示例 – 安裝指南:
步驟 1:克隆存儲(chǔ)庫
$> git clone https://github.com/hailo-ai/ hailo-rpi5-examples.git
第 2 步:導(dǎo)航到目錄
$> cd hailo-rpi5-examples
該目錄包含兩個(gè)關(guān)鍵文件:“setup_env.sh”和“requirements.txt”。
由于 Hailo-8L 需要特定的 Python 包版本,因此建議使用虛擬環(huán)境以避免沖突。這允許在本地安裝必要的包版本,而不會(huì)干擾系統(tǒng)范圍的 Python 環(huán)境。下一步是按照 Hailo-8L 套件的推薦激活特殊環(huán)境。
第 3 步:激活虛擬環(huán)境
$> source setup_env.sh
激活后,終端提示符將更改為指示虛擬環(huán)境中的條目:(venv_hailo_rpi5_examples) bera@raspberrypi:~/hailo-rpi5-examples $
第 4 步:安裝所需的 Python 包
(venv_hailo_rpi5_examples) bera@raspberrypi:~/hailo-rpi5-examples $ pip install -r requirements.txt
requirements.txt文件包含 Hailo 示例所需的 Python 包列表。要查看文件內(nèi)容:
$> cat requirements.txt
預(yù)期內(nèi)容:
numpy<2.0.0 setproctitle opencv-python
要單獨(dú)安裝它們:
$> pip install numpy<2.0.0 $> pip install setproctitle $> pip install opencv-python
第 5 步:下載必要的 Hailo 模型
$> download_resources.sh
若要安裝其他 Python 資源,請(qǐng)?jiān)L問:https://github.com/hailo-ai/hailo-apps-infra
該存儲(chǔ)庫提供適用于 Raspberry Pi 5 的 Hailo 應(yīng)用程序基礎(chǔ)設(shè)施。其中某些部分對(duì)于當(dāng)前代碼是可選的。
$> git clone https://github.com/hailo-ai/ hailo-apps-infra.git $> pip install --force-reinstall -v -e . # (Optional)
'git clone' 命令下載了 Hailo 的其他 Python 實(shí)用程序。最后一個(gè) pip 命令完全是可選的;它可以運(yùn)行或跳過。在此階段,系統(tǒng)所需的所有軟件組件都應(yīng)就位。請(qǐng)注意,所有這些工具都屬于開源軟件類別。
使用“basic_pipelines”目錄中的 Python 腳本開始試驗(yàn) Hailo-8L 加速器:
現(xiàn)在,該過程可以繼續(xù)使用 Hailo-8L 加速器,嘗試一些示例 Python 腳本,并最終構(gòu)建單獨(dú)的measure_distance3.py。basic_pipelines子目錄中已經(jīng)提供了兩個(gè)示例 Python 腳本:
detection_simple.py
pose_estimation.py
這些可以接受來自預(yù)定義源的輸入,例如 MP4 文件、Raspberry Pi 相機(jī)或 USB 相機(jī)。用法示例:
$> python basic_pipelines/detection_ simple.py --input rpicam # From Pi Camera $> python basic_pipelines/pose_estimation. py --input test.mp4 # From video file $> python basic_pipelines/detection_ simple.py --input /dev/video0 # From USB camera $> python basic_pipelines/detection.py --help # Help for detection.py
要使用自定義模型:
$> python basic_pipelines/detection.py
–標(biāo)簽-json 資源/barcode-labels.json
–hef-path 資源/yolov8s-hailo8l-barcode.hef
–輸入資源/barcode.mp4
測(cè)距理論
通過將物體的已知寬度與捕獲圖像中的感知寬度進(jìn)行比較來估計(jì)距離。
根據(jù)針孔相機(jī)模型,距離相機(jī)較遠(yuǎn)的物體會(huì)顯得更小。如果相機(jī)的焦距、物體的真實(shí)寬度和觀察到的圖像寬度已知,則可以使用類似的三角形計(jì)算距離。
標(biāo)準(zhǔn)寬度和默認(rèn)寬度在代碼開頭定義。
分割模型“yolov5n_seg_h8l_mz.hef”有助于識(shí)別完整的物體,即使部分可見也是如此。分割后的圖像用于估計(jì)物體的寬度,然后將其與已知尺寸進(jìn)行比較以確定距離。
# Object width dictionary for distance
estimation (in metres)
OBJECT_WIDTHS = {
“person”: 0.4, “bicycle”: 0.5, “car”:
1.8, “motorcycle”: 0.8, “bus”: 2.5,
“truck”: 2.5, “airplane”: 36.0, “train”:
3.2, “boat”: 5.0, “traffic light”: 0.6,
“fire hydrant”: 0.3, “stop sign”: 0.75,
“cat”: 0.3, “dog”: 0.6, “horse”: 1.2,
“cow”: 1.5, “elephant”: 3.2, “bear”: 1.7,
“zebra”: 1.2, “giraffe”: 2.0,
“bench”: 1.2, “chair”: 0.6, “couch”: 2.0,
“dining table”: 1.8,
“l(fā)aptop”: 0.4, “tv”: 1.2
}
DEFAULT_OBJECT_WIDTH = 0.5 # Default
width (in meters) for unknown objects
FOCAL_LENGTH = 0.5 # Focal length in
meters (Raspberry Pi Camera Module 3 Wide
Spec)
To run the measure_distance3.py script
and capture data from different camera
sources:
$> python measure_distance3.py --input
rpicam # Capture data from Pi camera
$> python measure_distance3.py --input /
dev/video0 # Capture data from USB camera模型 yolov5n_seg_h8l_mz.hef 支持大約 80 個(gè)對(duì)象類,但在此實(shí)現(xiàn)中,重點(diǎn)僅放在上一個(gè)字典中列出的 26 個(gè)特定對(duì)象上。這些對(duì)象提供了標(biāo)準(zhǔn)物理寬度,可以估計(jì)它們與攝像機(jī)的距離。
測(cè)試
圖 3 說明了距離測(cè)量技術(shù),而圖 4 和圖 5 顯示了引腳細(xì)節(jié)和安裝。

圖3:距離測(cè)量技術(shù)
為系統(tǒng)供電并運(yùn)行腳本。物體及其距離將實(shí)時(shí)顯示。

圖 4:Raspberry Pi 的引腳細(xì)節(jié)
Raspberry Pi 5 與 Hailo-8L AI HAT 配對(duì),由 5V、4A 電源供電,非常適合需要實(shí)時(shí)物體檢測(cè)和距離估計(jì)的嵌入式或固定應(yīng)用。

圖 5:相機(jī)和 Raspberry Pi 的安裝
這個(gè)項(xiàng)目可以在哪里使用?
該系統(tǒng)可用于多種目的,例如:
汽車儀表盤監(jiān)控
該系統(tǒng)安裝在擋風(fēng)玻璃上,可以檢測(cè)前方車輛和行人,估計(jì)距離,并在發(fā)生潛在碰撞或不安全的跟車距離時(shí)向駕駛員發(fā)出警報(bào)。它還可以集成語音合成器,例如 espeak-ng,通過揚(yáng)聲器發(fā)出語音建議。
帶咨詢的倒檔監(jiān)控
它安裝在汽車后部,可以在停車過程中檢測(cè)附近的物體或人,并提供視覺/音頻警報(bào),甚至觸發(fā)自動(dòng)制動(dòng)機(jī)制。
智能門禁監(jiān)控
該系統(tǒng)位于入口處,可以檢測(cè)接近的個(gè)人,對(duì)他們進(jìn)行分類(例如送貨員、已知訪客或陌生人),并估計(jì)他們的距離以實(shí)現(xiàn)自動(dòng)作,包括門鈴激活、照明或門解鎖。
建筑物中的占用率和人群分析
它可用于監(jiān)控大廳、走廊或等候區(qū)的人員密度和間距。當(dāng)人們彼此距離太近或該區(qū)域變得過度擁擠時(shí),該系統(tǒng)可以觸發(fā)通風(fēng)系統(tǒng)或人群控制警報(bào)。
倉庫安全系統(tǒng)
它可以檢測(cè)移動(dòng)的叉車或人員,并估計(jì)它們與限制區(qū)域的接近程度。這可以幫助在附近接近時(shí)觸發(fā)警報(bào)或減慢自動(dòng)化機(jī)械的速度,從而提高工作場(chǎng)所的安全性。
用于室內(nèi)導(dǎo)航的機(jī)器人視覺
它用于 AGV(自動(dòng)導(dǎo)引車)或室內(nèi)機(jī)器人,以識(shí)別障礙物并測(cè)量距離,從而在室內(nèi)環(huán)境中實(shí)現(xiàn)更安全、更高效的導(dǎo)航。
學(xué)區(qū)或大門監(jiān)控
該系統(tǒng)監(jiān)控學(xué)校大門附近兒童或監(jiān)護(hù)人的存在和移動(dòng),并根據(jù)檢測(cè)到的行為和距離生成警報(bào)或自動(dòng)執(zhí)行大門作。
收費(fèi)站或橋梁的交通監(jiān)控
該系統(tǒng)識(shí)別車輛類型并測(cè)量距離,以實(shí)現(xiàn)自動(dòng)收費(fèi)、檢測(cè)超載或分析交通密度。
校車閘機(jī)監(jiān)控
它可以幫助觀察進(jìn)來的交通和兒童在校車門周圍的移動(dòng),確保更安全的進(jìn)出條件。












評(píng)論