ソースに絡まるエスカルゴ

貧弱プログラマの外部記憶装置です。

【Raspberry Pi】Raspberry Pi AI KitとUSBカメラを使ってAIによる推論をやってみる

 昨今は何かとAIが盛り上がっています。

 そして先日、日本でもRaspberry Pi AI Kitが発売されました。これはRaspberry Pi 5にPCIe接続でAI用のモジュールを扱えるようにする拡張ボード的なものです。

 日本では以下の場所で購入できます。自分はたまたま在庫がある時に注文することができたのですが、現在はどこも入荷待ち状態となっています。

 今回はこのAI Kitの環境構築ととりあえず動かしてみたところまでの備忘録となります。


 では、始めます。


0:準備するもの
 AI Kitのみでは何もできないので、以下のものを準備する必要があります。

部品 必須/推奨 説明
AI Kit 必須 今回のメインとなるAI Kit
Raspberry Pi 5本体 必須 4GBモデルでも使えるそうですが、今回は8GBモデルを使用
Micro SDカード 必須 Raspberry Pi OS用のSDカード
USB-C電源 必須 5V4Aでも動くそうですが、今回はRaspberry Pi 5推奨電源の5V5Aのものを使用
ディスプレイ 必須 画面表示用ディスプレイ
HDMIケーブル 必須 Raspberry Pi側のmicro HDMIとディスプレイを繋ぐケーブル
マウス 必須 操作用マウス
キーボード 必須 操作用キーボード
Raspberry Pi 5用アクティブクーラー 推奨 Raspberry Pi 5の発熱を抑えるためのCPUクーラー
プラスドライバー 推奨 AI Kitの固定に使用
USBカメラ 推奨 AI Kitを使った推定に使用

 全部を1から揃えるとかなりの出費になりますが、そういうものだと思って頑張って購入してください。

 Raspberry Pi OSをSDカードに書き込んでRaspberry Pi 5を起動させる方法については、以下の過去記事を参考にしてください。

 以降はRaspberry Pi OSをMicro SDカードに書き込み済みでAI KitなしでRaspberry Pi 5を起動できている前提で進めます。


1:Raspberry Pi 5にAI Kitを取り付ける
 まずは何も繋いでいない状態のRaspberry Pi 5にAI Kitを取り付けます。

 以下の公式ページのInstallationの5からある図を見ながらAI KitをRaspberry Pi 5に取り付けます。

 ちなみにここではRaspberry Pi 5のピンヘッダ部分にAI Kit付属のピンヘッダ延長用のパーツを取り付けていますが、これがなくても自分の場合は動いたのでつけなくても構いません。

 PCIeのケーブル部分はAI Kitに薄いシールのようなもので固定されているので、それを剥がしてRaspberry Pi 5の本体のソケット部分に差し込んでください。
 ソケットは白い部分を一旦上に引き上げた状態で、AI Kitから延びるケーブルを差し込み、白い部分を元に戻して固定します。


2:ファームウェアの最新化
 AI Kitの取り付けが終わったらRaspberry Pi 5を起動させて環境構築を行っていきます。割と長いので少し大変ですが、頑張って実行してください。

 まずは各種アップデートを行います。LXTerminalを開いて以下のコマンドを実行します。

sudo apt update && sudo apt full-upgrade

 アップデートには時間がかかることがあるので終わるまでしばらく待ちます。

 アップデートが終わったら、Raspberry Piファームウェアを最新化します。以下のコマンドを実行します。

sudo rpi-eeprom-update

 実行すると以下のようにファームウェアの現在のバージョンと最新のバージョンが2つ表示されます。

$ sudo rpi-eeprom-update
BOOTLOADER: up to date
   CURRENT: 2024年  6月  5日 水曜日 15:41:49 UTC (1717602109)
    LATEST: 2024年  6月  5日 水曜日 15:41:49 UTC (1717602109)
   RELEASE: latest (/lib/firmware/raspberrypi/bootloader-2712/latest)
            Use raspi-config to change the release.

 2023年の12月以降のものであれば問題ないようですが、一応最新化をしていきます。

 以下のコマンドを実行してRaspberry Piの設定画面を開きます。

sudo raspi-config

 LXTerminalの画面が以下のように変化するので、キーボードの上下の矢印キーを使って「Advanced Options」を選択した状態で「Enter」キーを押下します。

 次の画面でも同じように矢印キーを使って「Bootloader Version」を選択した状態で「Enter」キーを押下します。

「Latest」を選択した状態で「Enter」キーを押下します。

 以下の画面になるので「はい」を選択した状態で「Enter」キーを押下します。

「了解」を選択した状態で「Enter」キーを押下します。

 最初の画面に戻るので、キーボードの「右矢印(▶)」キーを何回か押下して「Finish」を選択した状態で「Enter」キーを押下します。

 再起動を促されるので「はい」を選択した状態で「Enter」キーを押下します。

 再起動後、以下のコマンドを実行してBOOTLOADERのバージョンが最新のものになっているかを確認します。

sudo rpi-eeprom-update -a

 以下のようにCURRENTとLATESTが同じになっていればOKです。

$ sudo rpi-eeprom-update -a
BOOTLOADER: up to date
   CURRENT: 2024年  6月  5日 水曜日 15:41:49 UTC (1717602109)
    LATEST: 2024年  6月  5日 水曜日 15:41:49 UTC (1717602109)
   RELEASE: latest (/lib/firmware/raspberrypi/bootloader-2712/latest)
            Use raspi-config to change the release.


3:AI Kit用のライブラリなどのインストール
 ファームウェアの最新化が終わったら次はAI Kit用を使うためのライブラリなどをインストールします。

 以下のコマンドを実行します。このコマンドで様々なものを一気にインストールするため、それなりに時間がかかるので気長に待ちます。

sudo apt install hailo-all

 インストールが完了したらRaspberry Piを再起動させます。コマンドで再起動させる場合は以下のコマンドを実行します。

sudo reboot now

 再起動後、以下のコマンドで再びRaspberry Piの設定画面を開きます。

sudo raspi-config

 LXTerminalの画面が以下のように変化するので、キーボードの上下の矢印キーを使って「Advanced Options」を選択した状態で「Enter」キーを押下します。

 「PCIe Speed」を選択した状態で「Enter」キーを押下します。

 キーボードの左右の矢印キーを使って「はい」を選択した状態で「Enter」キーを押下します。

「了解」を選択した状態で「Enter」キーを押下します。

 最初の画面に戻るので、キーボードの「右矢印(▶)」キーを何回か押下して「Finish」を選択した状態で「Enter」キーを押下します。

 再起動を促されるので「はい」を選択した状態で「Enter」キーを押下します。

 再起動後、AI Kitをちゃんと認識できているかを以下のコマンドで確認します。

hailortcli fw-control identify

 ちゃんと認識できていると、以下のようにAI Kitの情報が表示されます。

$ 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: XXXXX
Part Number: XXXXX
Product Name: HAILO-8L AI ACC M.2 B+M KEY MODULE EXT TMP

 
 Serial NumberやPart Numberは恐らく個別のものになっているはずです。

 これでひとまずAI Kitを認識できるところまでできました。


4:USBカメラでAI Kitを使うためのサンプルをGithubからクローンする
 Raspberry Pi公式のAI KitサンプルではRaspberry Pi独自のカメラモジュールを使っているため、USBカメラには対応していません。
 Raspberry Piカメラモジュールは値段がそれなりにするのと汎用性も低いため、USBカメラを使いたい人も多いと思います。

 なので今回はUSBカメラを使える方法をやっていきます。

 使用するリポジトリは以下のものになります。

 まずはLXTerminalを開いて、以下のコマンドを実行してリポジトリをクローンします。

git clone https://github.com/hailo-ai/hailo-rpi5-examples.git

 クローンしたリポジトリディレクトリに移動します。

cd hailo-rpi5-examples

 移動後、以下のコマンドを実行して環境変数の読み込みと、python用の仮想環境を起動させます。(※このコマンドはLXTerminalを立ち上げる度、pythonを実行する前に1度実行する必要があるので注意してください)

source setup_env.sh

 必要なpythonのライブラリをまとめてインストールします。かなり量が多いので終わるまで気長に待ちます。

pip install -r requirements.txt

 次に以下のコマンドで推論モデルなどのリソースのダウンロードをします。こちらも時間がかかるので気長に待ちます。

./download_resources.sh

 これでようやく動かすための環境構築が完了となります。


5:推論のサンプルを動かしてみる
 4のリソースのダウンロードで「resources」というディレクトリが作成され、その中に「detection0.mp4」というサンプル動画が存在しています。
 そのサンプル動画を読み込んで推論させてみます。

 まずはクローンしたリポジトリディレクトリに移動します。

cd hailo-rpi5-examples

 移動後、以下のコマンドを実行します。

python basic_pipelines/detection.py --input resources/detection0.mp4

 初回は実行までに数十秒ほど時間がかかりますが、実行されると推論した結果の枠が表示された状態で動画再生が始まります。


6:USBカメラを使って推論をしてみる
 次にUSBカメラの映像を推論してみます。

 Raspberry Pi本体にUSBカメラを接続し、同じようにリポジトリフォルダに移動します。

cd hailo-rpi5-examples

 そして以下のコマンドを実行します。

python basic_pipelines/detection.py --input /dev/video0

 実行すると、動画の時と同じようにUSBカメラからの映像に推論結果の枠が表示された状態で映し出されます。

 つまり以下のようなコマンドを実行することで動画ファイルやUSBカメラの推論を行うことができるということになります。

python basic_pipelines/detection.py --input [動画ファイルパス] # 動画を推論する場合
python basic_pipelines/detection.py --input [USBデバイス] # USBカメラからの映像を推論する場合

 また、以下のhelpコマンドを実行することで、より詳しいオプションを見ることができます。

python basic_pipelines/detection.py --help


7:その他のサンプルについて
 detection.py以外にも「pose_estimation.py」と「instance_segmentation.py」というサンプルコードがあります。

 pose_estimation.pyの方は以下のコマンドで実行できます。

python basic_pipelines/pose_estimation.py --input resources/detection0.mp4

 実行すると人と認識した部分においてポーズを推定します。

 instance_segmentation.pyの方は以下のコマンドで実行できます。

python basic_pipelines/instance_segmentation.py --input resources/detection0.mp4

 実行すると推定部分が色で塗りつぶされます。

 これらもdetection.pyの時と同じように/dev/video0などを引数とすることで、USBカメラの映像を推定させることもできます。
 またhelpコマンドもあるのでどんなオプションがあるかも確認できます。


 以上がAI Kitの環境構築とUSBカメラを使ってAIによる推論をやってみた内容になります。

 環境構築が色々と面倒ですが、ちゃんと推論が動いているのを確認できたので良かったです。
 処理速度もかなり速く、どのサンプルを実行してもおよそ30fps程度で実行できており、USBカメラからの映像も少し注意していないと遅延に気づかないレベルだったので割と驚きました。

 まだサンプルを動かした程度ですが、Raspberry PiでAIを扱えるだけでも色々面白いことができそうなので楽しみです。


・参考資料