Raspberry Pi AI キットを入手したので、早速、使ってみたいと思います。
ハードウェアのセットアップからインストール、デモの実行までやってみたいと思います。
なお、Raspberry Pi 5 のセットアップは、スキップしますので、情報が必要な方は、こちらの記事を参考にしてください。
Raspberry Pi AI キットについて
今回もスイッチサイエンスさんから購入しました。
いつサイトを確認しても売り切れだったので、入荷情報を貰うように登録して、メールが来たら確認するというのを3回ほど繰り返し、3回目で購入できました。
一応、Amazonでも販売されていましたが、現時点では、倍以上の値段でした。
Raspberry Pi Ai キット は、Raspberry Pi M.2 HAT+ に M.2 フォーマットのHailo 8L AI アクセラレータをバンドルした商品で、Raspberry Pi 5 (4GB/8GB) 上で優れた推論性能(最大13TOPS)を発揮できるというものです。
難しい単語が多く… 何が書いてあるのかあまり分かりません。
ホストであるRaspberry Pi 5が最新のRaspberry Pi OS上で動作している場合、Hailoモジュールが自動的に検出され、NPU(Neural Processing Unit)がAIタスクに使用できるようになります。Raspberry Pi OSに組み込まれている rpicam-apps カメラアプリケーションはAIモジュールをネイティブサポートしているため、NPUを自動的に使用して互換性のある後処理タスクを実行します。
Raspberry Pi AI キットの取り付け
届いた「Raspberry Pi AI キット」を開封してみます。
本体は、「Hailo 8L AI アクセラレーター」が「M.2 HAT+」ボードに装着された状態で梱包されています。取り出していますが、当然、静電気シールド袋に入っていました。
他にGPIOピンヘッダー、ネジやスペーサーなどが小袋に入っていました。
PCIe ケーブルも装着された状態になっているので、反対側を「Raspberry Pi 5」に繋ぎます。
GPIOピンヘッダーも装着します。
4ヵ所のスペーサーとネジで固定すれば完成です。
反対側:
ケースの作成とカメラの接続
ケースをデザインしてみました。
3Dプリンタで印刷して、収納してみました。
こちらはフタです。
透明のフィラメントを使って作りました。すりガラスのようで綺麗に出来ました。
収納して、カメラを取り付けて完成です。
カメラは、「Raspberry Pi カメラモジュール V3」です。
スイッチサイエンスさんから購入しました。(1年以上前に)
注意が必要なのは、ケーブルが「Raspberry Pi 4B」の時と変わっています。
「Raspberry Pi 5」側のコネクタが細くなっているFPCケーブルが必要でした。
上側のケーブルがRaspberry Pi 5とRaspberry Pi Zeroで使います。
他のRaspberry Pi シリーズは下側のケーブルを使います。
Raspberry Pi AI キットのセットアップ
キーボード、ディスプレイ、電源を繋いで「Raspberry Pi 5」を起動します。
ファームウェアの更新
まず、Raspberry Pi が最新のソフトウェアを実行していることを確認します。
$ sudo apt update && sudo apt full-upgrade
次に、Raspberry Pi ファームウェアが最新であることを確認します。
$ sudo apt rpi-eeprom-update
「CURRENT
」の日時と「LATEST
」の日時が同じであれば最新です。
「CURRENT
」が2023年12月6日より前の日付の場合は、次のコマンドで設定を変更します。
なお、最新の場合は、スキップしてください。
$ sudo raspi-config
「Raspberry Pi Configration Software
」のメニューから「Advanced Options
」を選択し、「Bootloader Version
」を選択します。次に「Latest
」を選択して、終了します。
ファームウェアを最新バージョンに更新するには、次のコマンドを実行します。
$ sudo rpi-eeprom-update -a
再起動してファームウェアの更新は完了です。
PCIe 速度をGen3モードに設定する
$ sudo raspi-config
「Raspberry Pi Configration Software
」のメニューから「Advanced Options
」を選択し、「PCIe Speed
」を選択します。次に「Would you like PCIe Gen 3 to be enabled?
」と聞かれるので「YES
」を選択して、終了「Finish
」します。
再起動します。
AI キット用ソフトウェアのインストール
AIキットのソフトウェアをインストールするには、次のコマンドを実行します。
$ sudo apt install -y heilo-all
以下のソフトウェアがインストールされます。
- Hailo カーネルデバイスドライバーとファームウェア
- HailoRT ミドルウェア ソフトウェア
- Hailo Tappas コア後処理ライブラリ
- Hailo
rpicam-apps
後処理ソフトウェアのデモステージ
インストールが完了したら再起動します。
$ sudo reboot
すべてが正しく実行されていることを確認するために、次のコマンドを実行します。
$ hailortcli fw-control identify
次のように表示されました。
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: HAILO8L
Serial Number: HLDDLBB243302167
Part Number: HM21LB1C2LAE
Product Name: HAILO-8L AI ACC M.2 B+M KEY MODULE EXT TMP
さらに、「dmesg | grep -i heilo
」でカーネルログを確認してみます。
$ dmesg | grep -i hailo
[ 3.596147] hailo: Init module. driver version 4.18.0
[ 3.596556] hailo 0000:01:00.0: Probing on: 1e60:2864...
[ 3.596564] hailo 0000:01:00.0: Probing: Allocate memory for device extension, 11632
[ 3.596584] hailo 0000:01:00.0: enabling device (0000 -> 0002)
[ 3.596591] hailo 0000:01:00.0: Probing: Device enabled
[ 3.596618] hailo 0000:01:00.0: Probing: mapped bar 0 - 000000007de448a3 16384
[ 3.596624] hailo 0000:01:00.0: Probing: mapped bar 2 - 000000002663ef53 4096
[ 3.596629] hailo 0000:01:00.0: Probing: mapped bar 4 - 00000000425b32c6 16384
[ 3.596632] hailo 0000:01:00.0: Probing: Force setting max_desc_page_size to 4096 (recommended value is 16384)
[ 3.596642] hailo 0000:01:00.0: Probing: Enabled 64 bit dma
[ 3.596645] hailo 0000:01:00.0: Probing: Using userspace allocated vdma buffers
[ 3.596649] hailo 0000:01:00.0: Disabling ASPM L0s
[ 3.596653] hailo 0000:01:00.0: Successfully disabled ASPM L0s
[ 3.824275] hailo 0000:01:00.0: Firmware was loaded successfully
[ 3.836411] hailo 0000:01:00.0: Probing: Added board 1e60-2864, /dev/hailo0
最後にカメラの動作確認を行います。
$ rpicam-hello --vflip --hflip -t 10s
これによりカメラが起動し、プレビューウィンドウが10秒間表示されます。
なお、上下左右が反転していたので、「--vflip
」と「--hflip
」オプションを追加しています。
デモを動かしてみる
「rpicam-apps」のダウンロード
「rpicam-apps
」は、後処理フレームワークを実装しています。AI キットの機能の一部をデモするための後処理ファイルが含まれています。
今回は、「rpicam-hello
」を使用します。これは、デフォルトでプレビューウィンドを表示します。
ただし、「rpicam-vid
」や「rpicam-still
」など、他の「rpicam-apps
」を代わりに使用することもできます。(コマンドのオプションを追加または変更が必要な場合があります。)
デモに必要な後処理用のJSONファイルをダウンロードします。これらのファイルは、実行する後処理を決定し、各処理の動作を設定しています。例えば、物体検出デモでフィルタリングの強度を調整することができます。
後処理 JSONファイルのコレクションをダウンロードするには、「rpicam-apps」リポジトリをクローンします。
$ git clone https://github.com/raspberrypi/rpicam-apps.git ~/rpicam-apps
物体検出
このデモでは、ニューラルネットワークによって検出された物体の周囲に境界ボックスが表示されます。Paspberry Pi でデモを試すには、次のコマンドを実行します。
$ rpicam-hello --vflip --hflip -t 0 --post-process-file ~/rpicam-apps/assets/hailo_yolov6_inference.json --lores-width 640 --lores-height 640
幾つか試してみました。
キーボードとマウスを検出しました。後ろのカメラは検出しないですね。
写真ですが、犬と猫は検出しました。
先程のは、Yolov6 モデルを使用した物体検出ですが、他のモデルも試してみます。
Yolov8 モデル:
$ rpicam-hello --vflip --hflip -t 0 --post-process-file ~/rpicam-apps/assets/hailo_yolov8_inference.json --lores-width 640 --lores-height 640
確率が上がりました。
YoloX モデル:
$ rpicam-hello --vflip --hflip -t 0 --post-process-file ~/rpicam-apps/assets/hailo_yolox_inference.json --lores-width 640 --lores-height 640
Yolov5 人物および顔モデル:
$ rpicam-hello --vflip --hflip -t 0 --post-process-file ~/rpicam-apps/assets/hailo_yolov5_personface.json --lores-width 640 --lores-height 640
人と顔を認識しています。右上の小さな写真も認識しています。
画像セグメンテーション
このデモは、物体検出を実行し、ビューファインダー画像にカラーマスクを描画してオブジェクトをセグメント化します。
Paspberry Pi でデモを試すには、次のコマンドを実行します。
$ rpicam-hello --vflip --hflip -t 0 --post-process-file ~/rpicam-apps/assets/hailo_yolov5_segmentation.json --lores-width 640 --lores-height 640 --framerate 20
姿勢推定
このデモでは、17 点の人間の姿勢推定を実行し、検出された点を結ぶ線を描画します。Raspberry Pi でデモを試すには、次のコマンドを実行します。
$ rpicam-hello --vflip --hflip -t 0 --post-process-file ~/rpicam-apps/assets/hailo_yolov8_pose.json --lores-width 640 --lores-height 640
コメント
I do agree with all the ideas you have presented in your post. They are really convincing and will definitely work. Still, the posts are very short for newbies. Could you please extend them a bit from next time? Thanks for the post.
Thank you. I will try to make the articles easier to understand for beginners.