電子趣味の部屋

電子系のガジェットやアプリ開発等の趣味の話題を書いてます

Raspberry Pi AI HAT+ のセットアップメモ

Hailo 8 AIアクセラレーターを搭載したRaspberry Pi 5用のHAT+を入手しました。

Piromoniで購入しましたが、国内のショップではスイッチサイエンスで購入できます。
今回は推論性能が26TOPSのHailo-8を搭載したものを購入しましたが、13TOPSのHailo-8Lを搭載した下位バージョンもあります。

Hailo 8は学習済みのモデルを処理するアクセラレータです。学習作業を高速化することはできません。
学習済みのモデルはHailoのオリジナルフォーマットのHEFファイルを使用しますが、Dataflow Compilerを使用して汎用のonnx形式のファイルを変換できるようです。(詳しくはまだ調べてません)

セットアップ手順

公式ドキュメント
AI software - Raspberry Pi Documentation

セットアップ時の手順のメモを書きます。
今回は既に使用していたRaspberry Pi 5 8GBにCamera Module 3を装着したものを使用してので、OSやカメラのセットアップは省略します。
自分用のメモが主な目的なので詳細は省きますが参考にしてください。

パッケージを最新化して再起動
sudo apt update && sudo apt full-upgrade
sudo reboot
実行しているファームウェアの確認
sudo rpi-eeprom-update

2023 年 12 月 6 日より前の日付が表示されている場合はraspi-configで設定を行う

sudo raspi-config

Advanced Options>Bootloader VersionでLatestを選択

ファームウェアを最新バージョンに更新して再起動
sudo rpi-eeprom-update -a
sudo reboot
PCIe Gen 3.0の有効化

「/boot/firmware/config.txt」へ以下の行を追加

dtparam=pciex1_gen=3

再起動

sudo reboot
AIアクセラレータに必要なドライバやソフトウェアをインストールして再起動
sudo apt install hailo-all
sudo reboot
インストールの確認
hailortcli fw-control identify

Firmware VersionやBoard Nameが表示されればOK
Serial Number、Part Number、Product Nameが<N/A>になっているが大丈夫そう。

カメラモジュールが認識されているか確認
rpicam-hello -t 10s

カメラの画像が10秒表示されていればOK

デモで動作確認

ファイルを取得

cd
git clone --depth 1 https://github.com/raspberrypi/rpicam-apps.git ~/rpicam-apps

公式ドキュメント通りだと動作しなかったため、--post-process-fileに別の場所にあるjsonファイルを指定しました。

rpicam-hello -t 0 --post-process-file /usr/share/rpi-camera-assets/hailo_yolov6_inference.json --lores-width 640 --lores-height 640

色々試してみる

Hailoが用意しているサンプルを試します。

ファイルを取得
cd
git clone https://github.com/hailo-ai/hailo-rpi5-examples.git
必要なファイルをインストール
cd hailo-rpi5-examples
sudo apt install meson
./install.sh
サンプルはvenv環境で実行するため、仮想環境を起動
source setup_env.sh
物体検出のサンプル
python basic_pipelines/detection.py --input resources/detection0.mp4 -f


30fpsの動画に対して、30fpsで表示されているので、ほぼリアルタイムで処理されてます。
CPU負荷は25%程度でした。

セグメンテーションのサンプル
python basic_pipelines/instance_segmentation.py --input resources/detection0.mp4 -f


こちらも30fpsの動画に対して、30fpsで表示されているので、ほぼリアルタイムで処理されてます。
CPU負荷は35%程度でした。

骨格検出のサンプル
python basic_pipelines/pose_estimation.py --input resources/detection0.mp4 -f


こちらも30fpsの動画に対して、30fpsで表示されているので、ほぼリアルタイムで処理されてます。
CPU負荷は30%程度でした。

仮想環境を終了
deactivate

最後に

26TOPSの処理速度はRyzen 7 8845HSの16TOPSを超えてしまいます。
価格とRaspberry Pi 5で使用できることを考えると、手軽に遊べる環境が欲しい人にはお勧めできると思います。