Skip to main content

Hailo8を搭載したRaspberry Pi 5でのマルチストリーム推論のベンチマーク

はじめに

YOLOv8(You Only Look Once version 8)は、リアルタイム姿勢推定と物体検出モデルの人気の高いYOLOシリーズです。速度、精度、柔軟性において複数の進歩を導入することで、前身の強みを基盤として構築されています。Hailo8は推論速度を加速するために使用され、26 TOPSのAI性能を特徴としています。

このwikiでは、hailo8を搭載したRaspberry Pi 5でのYOLOv8m物体検出のベンチマークを紹介します。すべてのテストは同じモデル(YOLOv8m)を使用し、int8に量子化され、入力サイズは640x640解像度、バッチサイズは8に設定されています。

ハードウェアの準備

reComputer AI R2130

RPi5にAIキットをインストール

こちらを参照してください

ソフトウェアの準備

システムの更新

sudo date -s "$(wget -qSO- --max-redirect=0 google.com 2>&1 | grep Date: | cut -d' ' -f5-8)Z"
sudo apt update
sudo apt full-upgrade

Hailo公式ウェブサイトでhailoソフトウェアをダウンロード

注意: 公式のHailoアカウントが必要で、ログインしていることを確認してください。 このリンクをクリックして、以下の必要なライブラリをダウンロードしてください:

pir

respberrypi5にhailort_4.19.0_arm64.debをインストール

sudo dpkg -i hailort_4.19.0_arm64.deb 

sudo reboot

Install dkms

sudo apt-get install dkms

hailort-pcie-driver_4.19.0_all.debのインストール

sudo dpkg -i hailort-pcie-driver_4.19.0_all.deb 
sudo reboot

Python仮想環境の作成とアクティベート

python -m venv hailo_env
source hailo_env/bin/activate

Install hailort-4.19.0-cp311-cp311-linux_aarch64.whl

pip install hailort-4.19.0-cp311-cp311-linux_aarch64.whl 

Check if the software is installed

hailortcli fw-control identify

結果は以下のように表示されます:

ain@pi5-hailo:~ $ hailortcli fw-control identify
Executing on device: 0000:01:00.0
Identifying board
Control Protocol Version: 2
Firmware Version: 4.19.0 (release,app,extended context switch buffer)
Logger Version: 0
Board Name: Hailo-8
Device Architecture: HAILO8
Serial Number: HLLWM2B225100548
Part Number: HM218B1C2FAE
Product Name: HAILO-8 AI ACC M.2 M KEY MODULE EXT TEMP

PCIeをgen2/gen3に設定する(gen3はgen2より高速)

以下のテキストを/boot/firmware/config.txtに追加してください

#Enable the PCIe external connector

dtparam=pciex1

#Force Gen 3.0 speeds

dtparam=pciex1_gen=3

note

gen2を使用したい場合は、dtparam=pciex1_gen=3をコメントアウトしてください

Tappsのインストール

必要なライブラリのインストール

sudo apt-get install -y rsync ffmpeg x11-utils python3-dev python3-pip python3-setuptools python3-virtualenv python-gi-dev libgirepository1.0-dev gcc-12 g++-12 cmake git libzmq3-dev

sudo apt-get install -y libopencv-dev python3-opencv

sudo apt-get install -y libcairo2-dev libgirepository1.0-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-bad1.0-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-qt5 gstreamer1.0-pulseaudio gcc-12 g++-12 python-gi-dev

sudo apt install python3-gi python3-gi-cairo gir1.2-gtk-3.0

hailo_pci force_desc_page_size を設定する

sudo nano /etc/modprobe.d/hailo_pci.conf

そして、以下の内容を入力します。

options hailo_pci force_desc_page_size=4096

最後に、Ctrl+Xを押し、Yを入力し、Enterを押してファイルを保存します

その後、Raspberry Pi 5を再起動します

sudo reboot

Tappsをダウンロード

git clone --depth 1 https://github.com/hailo-ai/tappas.git

hailortをtappsにダウンロード

cd tappas
mkdir hailort
git clone https://github.com/hailo-ai/hailort.git hailort/sources

common.pyを変更する

nano downloader/common.py

以下のように内容を変更し、common.pyにRaspberryPI5 = 'rpi5'を追加します:

class Platform(Enum):
X86 = 'x86'
ARM = 'arm'
IMX8 = 'imx8'
Rockchip = 'rockchip'
RaspberryPI = 'rpi'
RaspberryPI5 = 'rpi5'

ANY = 'any'

def __str__(self):
return self.value

Install tappas

./install.sh --skip-hailort --target-platform rpi5

バッチサイズを8に変更

cd ./apps/h8/gstreamer/general/multistream_detection/
nano multi_stream_detection.sh

以下のように14行目に readonly DEFAULT_BATCH_SIZE=8 を追加します:

readonly DEFAULT_NETWORK_NAME="yolov5"
readonly DEFAULT_BATCH_SIZE=8
readonly MAX_NUM_OF_DEVICES=4

以下のように19行目に batch_size=$DEFAULT_BATCH_SIZE を追加してください:

network_name=$DEFAULT_NETWORK_NAME
batch_size=$DEFAULT_BATCH_SIZE
num_of_src=12

154行目に batch-size=$batch_size を以下のように追加してください:

queue name=hailo_pre_infer_q_0 leaky=no max-size-buffers=30 max-size-bytes=0 max-size-time=0 ! \
hailonet hef-path=$hef_path batch-size=$batch_size device-count=$device_count scheduling-algorithm=0 nms-score-threshold=0.3 nms-iou-threshold=0.45 output-format-type=HAILO_FORMAT_TYPE_FLOAT32 ! \
queue name=hailo_postprocess0 leaky=no max-size-buffers=30 max-size-bytes=0 max-size-time=0 ! \

最後に Ctrl+X を押して Y を入力し、ファイルを保存します。

マルチストリーム推論の実行

sudo chmod +x multi_stream_detection.sh
./multi_stream_detection.sh --network yolov8 --num-of-sources 8 --show-fps

結果

すべての結果は、モデル入力サイズ640x640、バッチサイズ8、ビデオ解像度1280x760(720p)での推論に基づいています。

チャンネル数PCIE Gen2 性能PCIE Gen3 性能
1チャンネルストリーム39.82FPS76.99FPS
2チャンネルストリーム19.86FPS38.21FPS
4チャンネルストリーム8.45FPS16.94FPS
8チャンネルストリーム3.85FPS8.15FPS
12チャンネルストリーム2.94FPS5.43FPS

技術サポート & 製品ディスカッション

私たちの製品をお選びいただき、ありがとうございます!私たちは、お客様の製品体験が可能な限りスムーズになるよう、さまざまなサポートを提供しています。異なる好みやニーズに対応するため、複数のコミュニケーションチャンネルをご用意しています。

Loading Comments...