昨今は何かとAIが盛り上がっています。
そして先日、日本でもRaspberry Pi AI Kitが発売されました。これはRaspberry Pi 5にPCIe接続でAI用のモジュールを扱えるようにする拡張ボード的なものです。
日本では以下の場所で購入できます。自分はたまたま在庫がある時に注文することができたのですが、現在はどこも入荷待ち状態となっています。
- Raspberry Pi AI Kit — スイッチサイエンス
- Raspberry Pi AI Kit SC1438 Raspberry Pi製|電子部品・半導体通販のマルツ
- AI Kit 公式 SC1438 (Raspberry Pi Shop by KSY)
今回はこの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を扱えるだけでも色々面白いことができそうなので楽しみです。
・参考資料