「Raspberry Pi AI HAT+」は2024年10月24日に登場した後付けAI処理モジュールで、Raspberry Pi 5に最大26TOPSのAI処理能力を追加できます。そんなRaspberry Pi AI HAT+が開発チームから送られてきたので、実際にRaspberry Pi 5に装着してオブジェクト認識機能を備えたAIカメラを作ってみました。

AI HAT+ - Raspberry Pi Documentation

https://www.raspberrypi.com/documentation/accessories/ai-hat-plus.html

AI software - Raspberry Pi Documentation

https://www.raspberrypi.com/documentation/computers/ai.html

hailo-rpi5-examples/doc/basic-pipelines.md at main · hailo-ai/hailo-rpi5-examples · GitHub

https://github.com/hailo-ai/hailo-rpi5-examples/blob/main/doc/basic-pipelines.md

・目次

◆1:Raspberry Pi AI HAT+の外観チェック

◆2:Raspberry Pi 5にRaspberry Pi AI HAT+を装着

◆3:AIカメラの実行環境を構築

◆4:Raspberry Pi公式AIカメラデモを実行

◆5:HailoのAIカメラデモを実行

◆1:Raspberry Pi AI HAT+の外観チェック

Raspberry Pi AI HAT+のパッケージはこんな感じ。Raspberry Pi AI HAT+にはAI処理性能が13TOPSのモデルと26TOPSのモデルが存在しており、今回は26TOPSモデルがRaspberry Pi開発チームから送られてきました。



パッケージの中にはRaspberry Pi AI HAT+本体とGPIOスタッキングヘッダー、スペーサー、ネジが入っていました。



これがRaspberry Pi AI HAT+です。



裏面はこんな感じ。



中央にはHailo製のAIアクセラレータ「Hailo-8」が搭載されています。なお、13TOPSモデルの場合は「Hailo-8L」が搭載されます。



◆2:Raspberry Pi 5にRaspberry Pi AI HAT+を装着

AIカメラを作るために、「Raspberry Pi AI HAT+」「Raspberry Pi 5」「Raspberry Pi Camera Module 3」を用意しました。なお、Raspberry Pi AI HAT+を装着する際はRaspberry Pi 5に公式空冷クーラーの「Raspberry Pi Active Cooler」を取り付けることが推奨されています。



最初に、Raspberry Pi 5を起動してソフトウェアやファームウェアをアップデートします。



まず、ソフトウェアを最新状態にアップデート。

sudo apt update
sudo apt upgrade

続いて、EEPROMのファームウェアをアップデートします。現時点のバージョンと配信中の最新バージョンを確認するために以下のコマンドを実行します。

sudo rpi-eeprom-update

実行結果は以下の通り。ファームウェアが2023年12月6日以前のバージョンだった場合、ドキュメントに従って設定を変更する必要があります。今回は2024年4月17日のバージョンがインストール済みだったので、そのままアップデートを続行します。

*** UPDATE AVAILABLE ***

BOOTLOADER: update available

CURRENT: Wed 17 Apr 12:54:23 UTC 2024 (1713358463)

LATEST: Mon 23 Sep 13:02:56 UTC 2024 (1727096576)

RELEASE: default (/lib/firmware/raspberrypi/bootloader-2712/default)

Use raspi-config to change the release.


以下のコマンドでファームウェアをアップデートして再起動します。

sudo rpi-eeprom-update -a
sudo reboot

無事に起動したら、Raspberry Pi 5をシャットダウンしてRaspberry Pi AI HAT+の取り付け作業に移ります。まず、Raspberry Pi 5にスペーサーとGPIOスタッキングヘッダーを取り付けます。ネジはプラスチック製だったのでねじ込み過ぎに注意。



続いて、Raspberry Pi AI HAT+をリボンケーブルで接続。



4カ所ネジ止めします。



次に、Raspberry Pi Camera Module 3を接続。



最後にカメラを固定すれば準備完了です。今回は簡易的に空き箱に貼り付けて固定しました。



◆3:AIカメラの実行環境を構築

・PCIe Gen 3.0への切り替え

Raspberry Pi 5は標準状態ではPCIe Gen 2.0で動作するようになっていますが、PCIe Gen 3.0に切り替えることも可能。Raspberry Pi AI HAT+を使う際はPCIe Gen 3.0に切り替えることが推奨されています。

PCIe Gen 3.0で動作させるには、「/boot/firmware/config.txt」に以下の行を追加すればOK。

dtparam=pciex1_gen=3

設定ファイルを書き換えたら再起動します。

sudo reboot

・必要なパッケージをインストール

AIアクセラレータのドライバ類をインストールするために、以下のコマンドを実行してから再起動します。

sudo apt install hailo-all
sudo reboot

・正しくインストールできたか確認

Raspberry Pi AI HAT+の装着やソフトウェアのインストールが正しく完了しているか確認するために、以下のコマンドを実行します。

hailortcli fw-control identify

以下のようにファームウェアのバージョンやAIアクセラレータの名前が出力されればOK。ドキュメントだとシリアルナンバーや製品名も表示されていましたが、今回は「」と表示されました。

Executing on device: 0000:01:00.0

Identifying board

Control Protocol Version: 2

Firmware Version: 4.18.0 (release,app,extended context switch buffer)

Logger Version: 0

Board Name: Hailo-8

Device Architecture: HAILO8

Serial Number:

Part Number:

Product Name:


また、以下のコマンドでカーネルのログ内のAIアクセラレータ関連のイベントを確認できます。

dmesg | grep -i hailo

今回の結果はこんな感じでした。

[ 3.884998] hailo: Init module. driver version 4.18.0

[ 3.885122] hailo 0000:01:00.0: Probing on: 1e60:2864...

[ 3.885127] hailo 0000:01:00.0: Probing: Allocate memory for device xtension, 11632

[ 3.885144] hailo 0000:01:00.0: enabling device (0000 -> 0002)

[ 3.885150] hailo 0000:01:00.0: Probing: Device enabled

[ 3.885168] hailo 0000:01:00.0: Probing: mapped bar 0 - 0000000b494ee36 16384

[ 3.885175] hailo 0000:01:00.0: Probing: mapped bar 2 - 00000000f43891e 4096

[ 3.885181] hailo 0000:01:00.0: Probing: mapped bar 4 - 00000001f13937c 16384

[ 3.885185] hailo 0000:01:00.0: Probing: Force setting ax_desc_page_size to 4096 (recommended value is 16384)

[ 3.885195] hailo 0000:01:00.0: Probing: Enabled 64 bit dma

[ 3.885198] hailo 0000:01:00.0: Probing: Using userspace allocated dma buffers

[ 3.885201] hailo 0000:01:00.0: Disabling ASPM L0s

[ 3.885206] hailo 0000:01:00.0: Successfully disabled ASPM L0s

[ 4.171121] hailo 0000:01:00.0: Firmware was loaded successfully

[ 4.184529] hailo 0000:01:00.0: Probing: Added board 1e60-2864, /dev/hailo0


カメラモジュールを認識できているか否かは、以下のコマンドで確認できます。

rpicam-hello -t 10s

「カメラの映像を表示するウィンドウ」が10秒間表示されればOKです。



◆4:Raspberry Pi公式AIカメラデモを実行

続いて、Raspberry Pi開発チームが公開しているAIカメラのデモを実行してみます。まず、以下のコマンドでデモが含まれるリポジトリの最新コミットをクローンします。

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

クローンが完了したら、以下のコマンドを実行すれば「物体の種類を識別するカメラAI」が起動します。

rpicam-hello -t 0 --post-process-file ~/rpicam-apps/assets/hailo_yolov6_inference.json --lores-width 640 --lores-height 640

実行結果はこんな感じ。カメラに写る人間やノートPCを正しく認識できています。



しかし、ターミナルには「このAIモデルはHailo-8L向けに作成されたものだが、このデバイスにはHailo-8が搭載されている。これでは最適なパフォーマンスを発揮できない」という旨のエラーメッセージが表示されていました。



◆5:HailoのAIカメラデモを実行

記事作成時点ではRaspberry Pi開発チームの公式デモには「Hailo-8L向けのAIモデル」しか用意されていないため、Hailoが用意している別のデモを使ってみることにします。

デモに含まれている「hailo-rpi5-examples/basic_pipelines/detection_pipeline.py」のソースコードを確認すると、「Hailo-8を搭載していたら『yolov8m.hef』を読み込み、Hailo-8Lを搭載していたら『yolov8s_h8l.hef』を読み込む」というコードが含まれていることが分かります。つまり、このデモを実行すれば26TOPSの処理性能を備えたHailo-8の実力を十分に発揮できるというわけです。



まず、リポジトリをクローンし、必要なパッケージをインストールしてからインストールスクリプトを実行します。

git clone https://github.com/hailo-ai/hailo-rpi5-examples.git
cd hailo-rpi5-examples
sudo apt install meson
./install.sh

インストール完了後に以下のコマンドを実行すると、Hailoのデモに含まれているオブジェクト認識カメラAIを起動できます。

source setup_env.sh
python basic_pipelines/detection.py -i rpi

実行結果はこんな感じ。人間とスマートフォンを正しく認識できました。



コマンドに「-f」オプションを付けると画面内に秒間フレームレートを表示できます。

python basic_pipelines/detection.py -i rpi -f

秒間フレームレートは平均30.04FPSでした。



オブジェクト認識カメラAIが動作する様子を動画に記録したものが以下。Raspberry Pi AI HAT+を使えば、こんな感じでAI機能を体験したり開発したりできるというわけです。

Raspberry Pi 5に「Raspberry Pi AI HAT+」を装着してAIカメラ化してみた - YouTube