Raspberry Pi + AI Camera を動かす 前編
この記事について
この記事では Raspberry Pi AI Camera を動かしてみた手順の記録になります。
Raspberry Pi AI Camera には SONYの IMX500 が搭載されています。IMX500はCMOSイメージセンサーと推論アクセラレーションが搭載されており、カメラ側で推論を動かすことが可能です。
誰が書いているのか
株式会社アラヤのエッジAI チームの小林です。
普段は、エッジAIシステムの開発などを行っています!
アラヤのエッジAIチームでは、アラヤの"人類の未来を圧倒的に面白く!"するというビジョンを達成するために、"すべてのモノにAIを乗せる"というミッションに取り組んでいます。
必要なハードウェア
ハードウェア | リンク | 補足 |
---|---|---|
Raspberry Pi 5 | https://www.raspberrypi.com/products/raspberry-pi-5/ | 本ブログでは8GBメモリを使っています |
IMX500 | https://www.raspberrypi.com/products/ai-camera/ | |
27W USB-C Power Supply | https://www.raspberrypi.com/products/27w-power-supply/ | PSEマークがありません |
その他必要なもの
- MicroSDカード(本ブログでは64GBを使っています)
- マイクロHDMIケーブルとかキーボードとかマウスなど
電源に関する補足
- 本来は5V,5Aを出力可能な電源を使う事が推奨されています(つなぐもの次第なので必須ではないが IMX500 使うならあったほうが良いです)
- 本ブログではPSEマークのついている、次の電源を使用しています
- 最近では5V,5Aを出力可能でPSEマーク付きの電源が入手可能になっています
Raspberry Pi本体のセットアップ
OSのセットアップ
セットアップ方法 に沿ってセットアップを進めます。
AI Camera のセットアップ
AI Cameraに沿ってセットアップを薦めます。
Raspberry Pi 4 を利用する場合は、同梱されている先の太いCSIケーブルを利用します。
Raspberry Pi 5 を利用する場合は、同梱されている先の細いCSIケーブルの方に差し替えます。
下記写真は Raspberry Pi 5 になります。
- Raspberry Pi 5 側の写真
- IMX500 側の写真
AI Camera のドライバーをセットアップ
Raspberry Pi のシステムをフルアップグレードし imx500
のパッケージをインストールします。
sudo apt update && sudo apt full-upgrade
sudo apt install imx500-all
Raspberry Pi 4 の場合は /boot/firmware/config.txt
を一部変更する必要があります。
カメラの自動検出をオフにし、dtoverlay
に imx500
を指定します。
# Automatically load overlays for detected cameras
camera_auto_detect=0
...(中略)...
[all]
dtoverlay=imx500
Raspberry Pi 5 の場合はインストール完了後に、何もせずに進んで大丈夫です。
Raspberry Pi を再起動し、起動ログでドライバが認識されるのを確認します
sudo dmesg | grep imx500
[ 0.752574] platform 1f00128000.csi: Fixed dependency cycle(s) with /axi/pcie@120000/rp1/i2c@80000/imx500@1a
[ 3.248353] rp1-cfe 1f00128000.csi: found subdevice /axi/pcie@120000/rp1/i2c@80000/imx500@1a
[ 3.319571] imx500 4-001a: Device found is imx500
[ 3.320761] rp1-cfe 1f00128000.csi: Using sensor imx500 4-001a for capture
IMX500の動作確認
サンプルで動作確認を行います。
動作検証に必要なコマンドや、サンプルモデルは前の手順でインストールされています。
rpicam-hello -t 0s --post-process-file /usr/share/rpi-camera-assets/imx500_mobilenet_ssd.json --viewfinder-width 1920 --viewfinder-height 1080 --framerate 30
[0:07:45.373018676] [2140] INFO Camera camera_manager.cpp:325 libcamera v0.3.2+27-7330f29b
[0:07:45.380744792] [2143] INFO RPI pisp.cpp:695 libpisp version v1.0.7 28196ed6edcf 29-08-2024 (16:33:32)
[0:07:45.381694263] [2143] WARN CameraSensorProperties camera_sensor_properties.cpp:305 No static properties available for 'imx500'
[0:07:45.381707374] [2143] WARN CameraSensorProperties camera_sensor_properties.cpp:307 Please consider updating the camera sensor properties database
[0:07:45.400035779] [2143] INFO RPI pisp.cpp:1154 Registered camera /base/axi/pcie@120000/rp1/i2c@80000/imx500@1a to CFE device /dev/media0 and ISP device /dev/media2 using PiSP variant BCM2712_C0
Made X/EGL preview window
IMX500: Unable to set absolute ROI
Reading post processing stage "imx500_object_detection"
------------------------------------------------------------------------------------------------------------------
NOTE: Loading network firmware onto the IMX500 can take several minutes, please do not close down the application.
------------------------------------------------------------------------------------------------------------------
Reading post processing stage "object_detect_draw_cv"
Mode selection for 1920:1090:12:P(30)
SRGGB10_CSI2P,2028x1520/30.0219 - Score: 2416.27
SRGGB10_CSI2P,4056x3040/9.9987 - Score: 43305.9
Stream configuration adjusted
[0:07:48.022603542] [2140] INFO Camera camera.cpp:1197 configuring streams: (0) 1920x1090-YUV420 (1) 2028x1520-RGGB_PISP_COMP1
[0:07:48.022669893] [2143] INFO RPI pisp.cpp:1450 Sensor: /base/axi/pcie@120000/rp1/i2c@80000/imx500@1a - Selected sensor format: 2028x1520-SRGGB10_1X10 - Selected CFE format: 2028x1520-PC1R
Network Firmware Upload: 100% (3872/3872 KB)
- SSD mobilenet v2 のモデルが動きました。滑らかに動作しており、物体検知も出来ています。
動作のビデオを録画するにはrpicam-vid
を使用します。
rpicam-vid -t 10s -o output.264 --post-process-file /usr/share/rpi-camera-assets/imx500_mobilenet_ssd.json --width 1920 --height 1080 --framerate 30
コマンドを実行したディレクトリに H264形式で output.264
が出力されます。
mp4
形式で出力する場合は以下のようになります。
rpicam-vid -t 10s --libav-video-codec h264_v4l2m2m --libav-format mp4 -o output.mp4 --post-process-file /usr/share/rpi-camera-assets/imx500_mobilenet_ssd.json --width 1920 --height 1080 --framerate 30
まとめ
Raspberry Pi と AI Camera を接続して、サンプルを動かすことができました。
パフォーマンスも非常に良好で、エッジデバイスとして活躍が期待できるデバイスでした。
今回は用意されたサンプルを動かすところまででした。
次回は自分たちで用意したモデルを変換してAI Cameraで動かすところまで紹介する予定です。
エッジAIからLLM構築まで気軽にご相談ください!
株式会社アラヤの先端研究支援
株式会社アラヤのエッジAI
SubnetX
Discussion