Raspberry Pi AI Camera(IMX500)を使って物体認識や関節認識をしてみました。
セットアップから物体認識をするためのAIモデルの導入までを記事にしました。
記事の内容
この記事では以下の内容を記載します。
・Raspberry Pi Cameraのセットアップ
・物体認識をしてみた
・関節認識をしてみた
Raspberry Pi Camera Rev 1.3
簡単紹介
Raspberry Pi と接続しチップ内でAI推論処理をする。
| 解像度(w, h) | 4056, 3040 |
| インターフェース | MIPI CSI-2 |
| 出力 | メタデータ |
| 購入時の参考価格 | \13,000 ~ \15,000(本体のみ) |
◆同梱品
Raspberry Pi が動作する環境があれば、カメラとケーブルを接続して使用できます。

AI Camera(IMX500) 本体
FPCケーブル (RaspberryPi B型)
FPCケーブル (RaspberryPi ZERO型)
焦点調整ジグ

◆関連記事
外観

使ってみた
◆セットアップ
Raspberry Pi とカメラをFPCで接続します。
下図はRaspberry Pi 4Bに接続したときの様子。

主な作業はターミナルからIMX500のファームウエアインストールとAIモデルの実行です。
ここまでは開発要素は無く作業やコマンド入力をすることで順調に進みます。
インストール約30分程度でトラブルもなく物体認識できました。
一度セットアップを済ませればネット環境がなくてもAIカメラを使えます。
カメラは使用中に若干発熱します。
室温25℃環境で、体感40℃程度くらいです。
カメラ焦点は付属のジグを使って調整します。
カメラと向かい合った状態で時計方向で遠点、反時計回りで近点に調整します。
近点では5cm程度まで合わせることができるようです。

◆物体認識
今回試したモデルでは80種類ほどを物体認識できるようです。
近くにあるもので認識では
人、キーボード、マウス、TV(PCモニタ)、イス、ダイニングテーブル など
人については、上半身や体の一部、写真でも認識できました。
モニタに表示された物体も認識できます。
下のサンプルは生成AIに書いてもらったイラストです。
左から2枚目までは認識が早いですが、3枚目、4枚目は角度や距離を調整すると認識されます。

次に馬と犬を掛け合わせた顔が犬の馬?です。
この絵の判定は馬となりました。
手書きをしたようなイラストでも馬と判断できるしているので、シルエットから推察しているのでしょうか。

◆関節認識
試したモデルでは、胴体、手足の関節と手足の末端を認識しました。
頭は時々認識するくらいです。
上半身程度含めると認識されます。
上半身含めるのにカメラから1mほど、全身含めるのに2m~3mくらい必要です。
生成AIに人の絵をかいてもらいました。
下図はモニタ上に表示した人の関節認識しています。
複数人の認識もできますがソーシャルディスタンスが必要です。

下図は女性の関節を認識したようですが、男性との距離が近いため座標がずれてしまったようです。

準備
環境
今回試した実行環境は以下です。
| 本体 | Raspberry Pi 4B (4MB) |
| OS | ラズパイOS 32bit Bookworm |
| ストレージ | ELECOM SSD 256GB |
AIカメラを使用するためにはラズパイOS Bookworm以上が必要です。
ラズベリーパイをセットアップはこちらに記載します。
本体とカメラの接続
注意
ケーブルには表裏があります。
挿抜の向きとコネクタのヒンジ部破損に注意して作業します。
◆RaspberryPi ZERO とカメラの接続
RaspberryPi ZEROとカメラを接続する場合はRaspberryPi ZERO側とカメラ側でFPCの幅が違います。
端子面の向きに気を付けて作業します。

◆RaspberryPi 4B とカメラの接続
RaspberryPi 4Bとカメラを接続する場合のFPCは端子面の向きに気を付ければどちらをRaspberryPi 4B側、カメラ側にしても接続できます。

ファームウエアの導入
LX Terminalから以下コマンドを入力します。
パッケージの更新とアップグレード
AIカメラパッケージのインストール
再起動を実行します。
$sudo apt update && sudo apt full-upgrade
$sudo apt install imx500-all
$sudo reboot
再起動後にカメラが認識されているかを確認します。
$sudo dmesg | grep imx500カメラが認識されていたら以下メッセージが表示されます。

コマンドの変動がない場合は認識されていないので、ケーブルの半勘合や表裏が逆になっていないか確認します。
使い方
物体認識
説明
Googleが開発した検出モデル「MobileNet SSD」を使って物体認識します。
コマンドの実行
rpicam-hello -t 0s --post-process-file /usr/share/rpi-camera-assets/imx500_mobilenet_ssd.json --viewfinder-width 1920 --viewfinder-height 1080 --framerate 30結果
作業机を撮影したところ、PCモニタ(TV)、パソコン(laptop)、キーボード(keyboard)を認識しました。
マウスはときどき認識されます。
感覚的には「人」の認識が高めで、手先から肩付近まで映り込むと認識されました。

関節認識
説明
Googleが開発した検出モデル「PoseNet」を使って関節認識(骨格構造の推定)します。
コマンドの実行
rpicam-hello -t 0s --post-process-file /usr/share/rpi-camera-assets/imx500_posenet.json --viewfinder-width 1920 --viewfinder-height 1080 --framerate 30結果
画像右側がモニタに移した静止画です。
左側の画像はAIカメラが骨格推定を加えた画像です。
体のひねりらしき交差もうかがえます。
後ろ脚は認識がいまいちでちらつきがみられました。





コメント