1. Raspberry Pi AIカメラの特徴
Raspberry Pi AIカメラは、Raspberry Piによって提供されるコンパクトなカメラモジュールで、Sony IMX500 インテリジェントビジョンセンサーをベースにしています。
こちらから購入可能です。
https://www.raspberrypi.com/products/ai-camera/
IMX500は、12メガピクセルのCMOSイメージセンサーと、さまざまな一般的なニューラルネットワークモデル向けのオンボード推論アクセラレーションを組み合わせており、ユーザーは別途アクセラレーターを用意することなく、高度なビジョンベースのAIアプリケーションを開発することが可能です。
(https://datasheets.raspberrypi.com/camera/ai-camera-product-brief.pdf)
- 解像度: 12メガピクセルの高解像度で鮮明な映像をキャプチャ可能。
- フレームレート: 高速なフレームレートで、リアルタイムのAI処理に最適。
- AI機能: 顔認識や物体検出、動作検知など、様々なAIタスクをカメラ自体で処理可能。
- 接続性: Raspberry Piと簡単に接続し、Pythonなどのプログラミング言語で制御可能。
2. Raspberry Pi AIカメラのセットアップ手順
次に、Raspberry PiとAIカメラのセットアップ手順を紹介します。公式の手順書に沿って進めていきます。
必要なもの
- Raspberry Pi 4 Model B または Raspberry Pi 5 board.
- Raspberry Pi AIカメラ
- microSDカード(Raspberry Pi OS 64bit インストール済み)
- インターネット接続(Wi-Fiまたは有線)
- 電源アダプタ
- モニターとMicro HDMIケーブル
手順
1.Raspberry PiにAIカメラを接続
-
Raspberry PiのカメラポートにAIカメラを接続します。
-
ケーブルがしっかりと接続されていることを確認してください。
-
Raspberry Pi 5の場合は同梱されている先の細いケーブルの方に差し替えます。
-
ケーブルを取り替えるために、まず黒い止め具を外す必要があります。
止め具の両端にある小さな爪に軽く指を引っ掛けて、上に引き上げます。この動作で止め具が緩み、フレキケーブルが外せます。
2.IMX500のFirmwareのインストール
- 公式ドキュメントに従ってIMX500のfirmwareをインストールします。
- ラズパイのTerminal上で以下を実行
sudo apt update && sudo apt full-upgrade
sudo apt install imx500-all
- インストールが成功すると、imx500のfirmwareやAI modelがデバイスにインストールされます。
Setting up imx500-firmware (0.FF17.8) ...
Setting up imx500-models (1.5.2-2) ...
Setting up rpicam-apps-imx500-postprocess (1.5.2-2) ...
Setting up imx500-all (1.5.2-2) ...
- インストール後、Raspberry PiをRebootします。
sudo reboot
- 再起動後に正しく設定できていると、dmesgのログの中に
Device found is imx500
というキーワードが見つかります。
pi@raspberrypi:~ $ sudo dmesg | grep imx500
[ 0.532671] platform 1f00110000.csi: Fixed dependency cycle(s) with /axi/pcie@120000/rp1/i2c@88000/imx500@1a
[ 3.939666] rp1-cfe 1f00110000.csi: found subdevice /axi/pcie@120000/rp1/i2c@88000/imx500@1a
[ 4.100494] imx500 6-001a: Device found is imx500
[ 4.103828] rp1-cfe 1f00110000.csi: Using sensor imx500 6-001a for capture
3. 物体認識を動かしてみる
-
rpicam-hello
というアプリケーションを使って、mobilenet_ssd
を動かします。rpicam-hello自体やIMX500で動くAI Modelは、前のStepsで既にインストールされています。
rpicam-hello -t 0s --post-process-file /usr/share/rpi-camera-assets/imx500_mobilenet_ssd.json --viewfinder-width 1920 --viewfinder-height 1080 --framerate 30
-
IMX500への AI Firmwareのupdateに1,2分かかるので、少し待ちます。進捗がTerminalに表示されていますので、分かりやすいです。
-
uploadが完了すると、以下のようにリンゴの物体認識が動かせました。パフォーマンスも良好で30fps程度出ていると思います。
4. Picamera2 で物体認識を動かしてみる。
- Picamera2は、Raspberry Pi財団が提供する新しいPythonライブラリで、Raspberry Piカメラモジュールを簡単に制御するためのツールです。
- 公式ドキュメント を参考にして、picamera2のインストールをします。
sudo apt install python3-opencv python3-munkres
git clone https://github.com/raspberrypi/picamera2.git
- picamera2をcloneしたディレクトリの下にある、examples/imx500フォルダに移動して、picamera2のサンプルスクリプトを実行します。モデルはYoloV8のモデルを指定します。
cd picamera2/examples/imx500
python imx500_object_detection_demo.py --model /usr/share/imx500-models/imx500_network_yolov8n_pp.rpk --ignore-dash-labels -r
-
他に利用可能なpose estimationやsegmentationのAI Modelは
/usr/share/imx500-models/
以下に置かれているようです。他のAIタスクも簡単に試せるのは非常に魅力的です。
pi@raspberrypi:~ $ ls -la /usr/share/imx500-models/
total 98716
drwxr-xr-x 2 root root 4096 Oct 4 19:31 .
drwxr-xr-x 241 root root 12288 Oct 4 19:59 ..
-rw-r--r-- 1 root root 2574800 Sep 28 14:37 imx500_network_deeplabv3plus.rpk
-rw-r--r-- 1 root root 3722528 Sep 28 14:37 imx500_network_efficientdet_lite0_pp.rpk
-rw-r--r-- 1 root root 6285760 Sep 28 14:37 imx500_network_efficientnet_bo.rpk
-rw-r--r-- 1 root root 5576144 Sep 28 14:37 imx500_network_efficientnet_lite0.rpk
-rw-r--r-- 1 root root 6838704 Sep 28 14:37 imx500_network_efficientnetv2_b0.rpk
-rw-r--r-- 1 root root 6681664 Sep 28 14:37 imx500_network_efficientnetv2_b1.rpk
-rw-r--r-- 1 root root 6826864 Sep 28 14:37 imx500_network_efficientnetv2_b2.rpk
-rw-r--r-- 1 root root 2104384 Sep 28 14:37 imx500_network_higherhrnet_coco.rpk
-rw-r--r-- 1 root root 67056 Sep 28 14:37 imx500_network_inputtensoronly.rpk
-rw-r--r-- 1 root root 5222544 Sep 28 14:37 imx500_network_levit_128s.rpk
-rw-r--r-- 1 root root 5072400 Sep 28 14:37 imx500_network_mnasnet1.0.rpk
-rw-r--r-- 1 root root 4079808 Sep 28 14:37 imx500_network_mobilenet_v2.rpk
-rw-r--r-- 1 root root 3612448 Sep 28 14:37 imx500_network_mobilevit_xs.rpk
-rw-r--r-- 1 root root 2335520 Sep 28 14:37 imx500_network_mobilevit_xxs.rpk
-rw-r--r-- 1 root root 3281696 Sep 28 14:37 imx500_network_nanodet_plus_416x416_pp.rpk
-rw-r--r-- 1 root root 3118976 Sep 28 14:37 imx500_network_nanodet_plus_416x416.rpk
-rw-r--r-- 1 root root 1663152 Sep 28 14:37 imx500_network_posenet.rpk
-rw-r--r-- 1 root root 3440912 Sep 28 14:37 imx500_network_regnetx_002.rpk
-rw-r--r-- 1 root root 4054464 Sep 28 14:37 imx500_network_regnety_002.rpk
-rw-r--r-- 1 root root 5464912 Sep 28 14:37 imx500_network_regnety_004.rpk
-rw-r--r-- 1 root root 6211824 Sep 28 14:37 imx500_network_resnet18.rpk
-rw-r--r-- 1 root root 4081184 Sep 28 14:37 imx500_network_shufflenet_v2_x1_5.rpk
-rw-r--r-- 1 root root 1597680 Sep 28 14:37 imx500_network_squeezenet1.0.rpk
-rw-r--r-- 1 root root 3965824 Sep 28 14:37 imx500_network_ssd_mobilenetv2_fpnlite_320x320_pp.rpk
-rw-r--r-- 1 root root 3126656 Sep 28 14:37 imx500_network_yolov8n_pp.rpk
5. 結果と感想
必要なツールのインストール手順も非常に簡単で、apt
コマンドを使うだけで、あっという間にセットアップが完了しました。特に面倒な手順もなく、初心者でもスムーズに導入できるのが魅力的です。
実際にAIカメラを使ってみたところ、パフォーマンスも非常に良好で、処理の遅延はほとんど感じられませんでした。顔認識などの物体認識タスクも、リアルタイムでスムーズに実行され、カメラの応答性も高いです。
Raspberry PiにAIカメラを接続してから短時間でセットアップを完了できたことで、すぐにIMX500を使ったEdge AIを体験することができました。エッジデバイス上でのAI処理をこれほど簡単に試せるのは、大きなメリットだと感じました。AIカメラに興味がある方には、ぜひこの体験をおすすめしたいです。