
Amazonで購入しました。翌日には届いて学習を開始できたので助かります。なぜなら、明後日にはAITRIOSの関西コミュニティ勉強会があります。それに間に合ってよかったです。
Raspberrypi AI Camera ラズベリーパイ AI カメラ
https://www.raspberrypi.com/documentation/accessories/ai-camera.html
まずは、上のwww.raspberrypi.comの記事を参考にセットアップをしましょう。
セットアップと簡単な動作確認は以前の記事で行いました。
それでは、今日は引き続き、ポーズ推定を行ってみます。
ポーズ推定
$ rpicam-hello -t 0s --post-process-file /usr/share/rpi-camera-assets/imx500_posenet.json --viewfinder-width 1920 --viewfinder-height 1080 --framerate 30
[3:42:34.603390634] [1202097] INFO Camera camera_manager.cpp:326 libcamera v0.5.0+59-d83ff0a4
[3:42:34.610517023] [1202100] INFO RPI pisp.cpp:720 libpisp version v1.2.1 981977ff21f3 29-04-2025 (14:13:50)
[3:42:34.630610617] [1202100] INFO RPI pisp.cpp:1179 Registered camera /base/axi/pcie@1000120000/rp1/i2c@88000/imx500@1a to CFE device /dev/media1 and ISP device /dev/media0 using PiSP variant BCM2712_D0
Made X/EGL preview window
IMX500: Unable to set absolute ROI
Reading post processing stage "imx500_posenet"
------------------------------------------------------------------------------------------------------------------
NOTE: Loading network firmware onto the IMX500 can take several minutes, please do not close down the application.
------------------------------------------------------------------------------------------------------------------
Reading post processing stage "plot_pose_cv"
Mode selection for 1920:1080:12:P(30)
SRGGB10_CSI2P,2028x1520/30.0219 - Score: 2467.7
SRGGB10_CSI2P,4056x3040/9.9987 - Score: 43357.3
Stream configuration adjusted
[3:42:34.918696425] [1202097] INFO Camera camera.cpp:1205 configuring streams: (0) 1920x1080-YUV420 (1) 2028x1520-RGGB_PISP_COMP1
[3:42:34.918775110] [1202100] INFO RPI pisp.cpp:1483 Sensor: /base/axi/pcie@1000120000/rp1/i2c@88000/imx500@1a - Selected sensor format: 2028x1520-SRGGB10_1X10 - Selected CFE format: 2028x1520-PC1R
Network Firmware Upload: 100% (1624/1624 KB)
Bashimx500_posenet.json
で指定された AI モデル(姿勢推定)がカメラモジュールにロードされ、推論が有効になります。
初回実行時やモデル切り替え時には、IMX500上のニューラルネットワークをフラッシュメモリにアップロードするため数分かかることがあります。そのため、再実行時はキャッシュが効いて高速になります。
このように、PoseNetのモデル(約1.6MB)がIMX500に正常にアップロードされたことを示しています。さて、ここまで進めばほぼ準備完了です。
$ cat /usr/share/rpi-camera-assets/imx500_posenet.json
{
"imx500_posenet":
{
"max_detections" : 5,
"threshold" : 0.4,
"offset_refinement_steps": 5,
"nms_radius": 10.0,
"network_file": "/usr/share/imx500-models/imx500_network_posenet.rpk",
"save_input_tensor":
{
"filename": "/home/pi/posenet_input_tensor.raw",
"num_tensors": 10
},
"temporal_filter":
{
"tolerance": 0.3,
"factor": 0.3,
"visible_frames": 8,
"hidden_frames": 2
}
},
"plot_pose_cv":
{
"confidence_threshold" : 0.2
}
}
Bashplot_pose_cv
ステージにより、推定されたキーポイント(目、肩、肘、膝など)がビジュアルに表示されるはずです。
もちろん、人が写っていないと推定できないので、人物が写るようにカメラを向けてください。
また、imx500_posenet
ステージはさまざまな方法で設定できます。たとえば、max_detections
は同時に検出する人物の最大数を指定します。threshold
は「人物」とみなすために必要な信頼度の下限値を指定します。
Picamera2
Picamera2 は、Raspberry Pi 向けの 新しい公式 Python カメラライブラリ です。従来の picamera
(古いAPI)の後継であり、libcamera をベースに設計されています。
特徴
- Raspberry Pi カメラモジュール(v1, v2, HQ, IMX500など)に対応
- Python から手軽に静止画・動画・プレビュー制御が可能
- OpenCVやNumPyと連携しやすい(カメラ画像を即座に処理可能)
- 複数ストリーム(プレビュー用と処理用)を同時に扱える
- GUI統合やAI処理との連携が簡単
画像分類、物体検出、物体セグメンテーション、姿勢推定の例については、Picamera2 の GitHub リポジトリを参照してください。
OpenCVのインストール
ほとんどの例では、OpenCV を使った追加処理が含まれています。そのため、OpenCV を実行するために必要な依存パッケージは、次のコマンドでインストールできます
$ sudo apt -y install python3-opencv python3-munkres
BashPicamera2のサンプル
その後、Picamera2 のリポジトリを Raspberry Pi にダウンロードして、各種サンプルを実行します。また、ルートディレクトリにサンプルファイルがあり、README.md
に詳しい説明があります。
GitHub: https://github.com/raspberrypi/picamera2
ここに各種サンプルコード、APIドキュメント、AI連携の実例などが豊富に掲載されています。
YOLOv8 による物体検出を実行するには、リポジトリ内で以下のスクリプトを実行します:
$ cd
$ git clone https://github.com/raspberrypi/picamera2.git
$ cd picamera2/examples/imx500/
$ python imx500_object_detection_demo.py --model /usr/share/imx500-models/imx500_network_ssd_mobilenetv2_fpnlite_320x320_pp.rpk
[4:46:23.129211076] [1546040] INFO Camera camera_manager.cpp:326 libcamera v0.5.0+59-d83ff0a4
[4:46:23.136338152] [1546044] INFO RPI pisp.cpp:720 libpisp version v1.2.1 981977ff21f3 29-04-2025 (14:13:50)
[4:46:23.146841303] [1546044] INFO RPI pisp.cpp:1179 Registered camera /base/axi/pcie@1000120000/rp1/i2c@88000/imx500@1a to CFE device /dev/media1 and ISP device /dev/media0 using PiSP variant BCM2712_D0
------------------------------------------------------------------------------------------------------------------
NOTE: Loading network firmware onto the IMX500 can take several minutes, please do not close down the application.
------------------------------------------------------------------------------------------------------------------
[4:46:23.186504721] [1546040] INFO Camera camera.cpp:1205 configuring streams: (0) 640x480-XBGR8888 (1) 2028x1520-RGGB_PISP_COMP1
Network Firmware Upload: 0.00bytes [00:00, ?bytes/s][4:46:23.187511184] [1546044] INFO RPI pisp.cpp:1483 Sensor: /base/axi/pcie@1000120000/rp1/i2c@88000/imx500@1a - Selected sensor format: 2028x1520-SRGGB10_1X10 - Selected CFE format: 2028x1520-PC1R
Network Firmware Upload: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████| 3.78M/3.78M [00:03<00:00, 1.13Mbytes/s]
Bashそれでは次に、Picamera2 で姿勢推定を試すには、以下のスクリプトを実行してください:
$ python imx500_pose_estimation_higherhrnet_demo.py
[4:48:34.095037606] [1551834] INFO Camera camera_manager.cpp:326 libcamera v0.5.0+59-d83ff0a4
[4:48:34.102250404] [1551838] INFO RPI pisp.cpp:720 libpisp version v1.2.1 981977ff21f3 29-04-2025 (14:13:50)
[4:48:34.112114222] [1551838] INFO RPI pisp.cpp:1179 Registered camera /base/axi/pcie@1000120000/rp1/i2c@88000/imx500@1a to CFE device /dev/media1 and ISP device /dev/media0 using PiSP variant BCM2712_D0
------------------------------------------------------------------------------------------------------------------
NOTE: Loading network firmware onto the IMX500 can take several minutes, please do not close down the application.
------------------------------------------------------------------------------------------------------------------
[4:48:34.146355639] [1551834] INFO Camera camera.cpp:1205 configuring streams: (0) 640x480-XBGR8888 (1) 2028x1520-RGGB_PISP_COMP1
[4:48:34.146820102] [1551838] INFO RPI pisp.cpp:1483 Sensor: /base/axi/pcie@1000120000/rp1/i2c@88000/imx500@1a - Selected sensor format: 2028x1520-SRGGB10_1X10 - Selected CFE format: 2028x1520-PC1R
Network Firmware Upload: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████| 2.01M/2.01M [00:21<00:00, 97.8kbytes/s]
Bashこのように、IMX500上での姿勢推定(Pose Estimation)スクリプトが正常に起動し、ネットワークモデルのロードも完了しています。それでは以下に、実行ログのポイントを整理して説明します。
imx500_pose_estimation_higherhrnet_demo.py
です。これはPicamera2ベースで IMX500 + HigherHRNet による姿勢推定を行うPythonデモです。
次に、使用モデルは、人物の関節位置(骨格キーポイント)を高精度で検出する HigherHRNet 系のPose Estimationモデルです。

このように、実行後、人物の映像に関節(目・肩・肘・膝など)の骨格ラインがオーバーレイ表示されているはずです。
OpenCVでframe.detections
またはpose keypoints
を受け取り、データとして活用できます。
複数人の同時検出や特定ポーズのトリガー動作も実装可能です。
裏側ではどうなっているのか
概要(Overview)
Raspberry Pi AI Camera は、以下の図に示すように、従来のAIベースのカメラ画像処理システムとは異なる動作をします。

出展:https://www.raspberrypi.com/documentation/accessories/ai-camera.html
この図は「従来型AIカメラシステム」と「IMX500搭載AIカメラシステム」のアーキテクチャの違いを示したものです。以下に、図の左側・右側をそれぞれ詳しく解説し、その中で出てくる用語(Input Tensor、ROI、Output Tensor)についても説明します。
従来型AIカメラシステム(左側)
画像のAI処理はすべて Raspberry Pi側で実行。
そのため、AI処理が重いため、外部アクセラレータ(Coral, Movidiusなど)が必要なケースも。
IMX500搭載AIカメラシステム(右側)
CPU負荷・電力消費が大きく、処理のタイムラグが出やすい。
IMX500搭載AIカメラシステム(右側)
カメラ単体でAI推論まで完結(Raspberry Piは結果を受け取るだけ)。
外部アクセラレータ不要・CPU負荷もほぼゼロ。
低レイテンシ・低消費電力・プライバシー保護(画像データをクラウドに送らない)。
従来型 vs IMX500搭載AIカメラシステム
左側は、従来のAIカメラシステムのアーキテクチャを示しています。このようなシステムでは、カメラが画像を Raspberry Pi に送信し、Raspberry Pi 側で画像処理を行い、さらにAI推論を実行します。従来のシステムでは、外部AIアクセラレータ(図中のようなもの)を使うか、CPUのみで処理する場合があります。
右側は、IMX500 を使用したシステムのアーキテクチャです。このカメラモジュールには小型の 画像信号プロセッサ(ISP) が内蔵されており、生のカメラ画像データを 入力テンソル(Input Tensor) に変換します。カメラモジュールはこのテンソルをカメラ内のAIアクセラレータに直接送信し、AIアクセラレータが 出力テンソル(Output Tensor) を生成します。これには推論結果が含まれます。出力テンソルは Raspberry Pi に送信されます。外部アクセラレータも、Raspberry Pi 上のニューラルネットワークソフトウェアも不要です。
入力テンソル(Input Tensor)
AI推論に渡される、センサー画像の一部です。オンボードの小型ISPによって生成され、カメラ画像をニューラルネットワークの期待するサイズに切り出し・スケーリングして作られます。通常、この入力テンソルはアプリケーションに直接公開されませんが、デバッグ目的ではアクセス可能です。
関心領域(ROI:Region of Interest)
センサー画像のうち、ニューラルネットワークに渡すために切り出される範囲を定義します。アプリケーションから参照・設定可能で、単位は常にセンサーのフル解像度におけるピクセルです。デフォルトでは、センサーから受信した画像全体が使用され、データのトリミングは行われません。
出力テンソル(Output Tensors)
ニューラルネットワークによって生成される推論結果です。出力テンソルの数と形(形状)は、使用するニューラルネットワークによって異なります。アプリケーション側では、これらのテンソルの扱い方を理解している必要があります。
システムアーキテクチャ(System architecture)
以下の図は、Raspberry Pi AI Camera モジュールのハードウェア(赤)と、推論・画像処理に使用されるカメラソフトウェアの各コンポーネント(緑)を示しています。

出展:https://www.raspberrypi.com/documentation/accessories/ai-camera.html
この図は、Raspberry Pi AI Camera モジュール(IMX500搭載)を用いた画像取得〜AI推論までの全体アーキテクチャを示しています。ハードウェアからアプリケーションまでのソフトウェアスタックの流れが、非常に分かりやすく構成されています。
全体構成の概要
図は大きく5つの層に分かれています:
- ハードウェア層(下段・赤色):実際のAIカメラモジュールとその構成部品
- Linuxカーネルドライバ層(緑):センサーを制御するカーネルレベルのドライバ群
- libcamera層(中心):カメラ制御のミドルウェア。推論結果や画像の管理もここで行う
- アプリケーション層(上段):ユーザーが操作するアプリ(
rpicam-apps
やPicamera2
など) - ファームウェア層:IMX500専用のニューラルネットワークモデル等を格納・ロードするための領域
一番下:Raspberry Pi AI Camera モジュールハードウェア
- 128Mbit Flash:IMX500向けのファームウェアやAIモデルを保存
- RP2040(マイコン):SPI/I2C経由でIMX500との通信を中継(設定、制御、ファームウェアの読み出し)
- IMX500 Sensor:撮像およびAI推論を担うソニー製インテリジェントビジョンセンサー
Linux Kernel Drivers
- IMX500 sensor driver:IMX500センサーとのやり取り(画像取得、メタデータ取得)を行う
- RP2040 SPI driver:RP2040とSPI通信で接続し、ファームウェアや制御信号を受け渡します。この転送は RP2040 マイコンを使って行われ、SPI 経由で I2C 転送を橋渡しします。また、RP2040 はオンボードのストレージにファームウェアファイルをキャッシュします。これにより、既に使ったファームウェアの再読み込み時には、I2C経由で全ファイルを転送する必要がなくなり、大幅な高速化が可能になります。
- CSI2 RX:カメラ画像(生データ)をRaspberry Piの映像処理パイプラインに取り込むためのインターフェース。受信機を構成し、画像データストリームをフレームバッファに、組み込みデータと推論データストリームを別のメモリバッファに書き込みます。
libcamera 層(カメラ制御の心臓部)
libcamera
は、カーネルから画像と推論データのバッファを取得した後、libcamera
内の Raspberry Pi IPA(Image Processing Algorithm)にある IMX500 cam-helper ライブラリが、推論バッファを解析し、入力/出力テンソルにアクセスします。
これらのテンソルは、Raspberry Pi 特有の libcamera コントロールとして提供され、以下のような制御が可能になります。
コントロール名 | 説明 |
---|---|
CnnOutputTensor | 出力テンソル(浮動小数点配列) |
CnnInputTensor | 入力テンソル(浮動小数点配列) |
CnnOutputTensorInfo | 出力テンソルの構造に関するネットワーク固有パラメータ |
CnnInputTensorInfo | 入力テンソルの構造に関するネットワーク固有パラメータ |
- Core:libcamera の基本処理ロジック
- Raspberry Pi IPA(Image Processing Algorithm):Pi専用の画像処理パイプライン
- IMX500 cam-helper:IMX500特有の処理(推論メタデータの抽出、ROI制御など)を担う
libcameraは、画像データだけでなくAI推論結果(inference metadata)も取り扱うのが大きな特徴です。
rpicam-apps
rpicam-apps
は、IMX500 用のポストプロセス処理ステージの基底クラス(IMX500PostProcessingStage
)を提供します。これを継承して、任意のニューラルネットワークモデルに合わせた独自のポスト処理ステージを定義できます。
Picamera2
Picamera2
における IMX500 の統合は rpicam-apps
とほぼ同様の構成です。
まとめ
この仕組みにより、IMX500はハードウェア内でAI推論を行い、rpicam-apps
や Picamera2
は推論結果を簡単に扱えるようになります。
- 開発者は Python または C++ で 最小限のコードで高度なビジョン処理を実装可能。
- ROI設定や座標変換などもヘルパー関数で簡単に制御。
- ユーザーは画像上の物体検出・姿勢推定・分類などをリアルタイムかつ軽量に実装できます。
Brain Builder for AITRIOS(100万超え!)
IMX500のようなエッジAIカメラで動作するニューラルネットワークモデルを、専門知識なしでも簡単に作成・管理・展開するための統合開発環境です。「Brain Builder for AITRIOS」には、ユーザーのニーズに応じた2つのバージョンが用意されています。それぞれの特徴を理解し、目的に合ったバージョンを選択することが重要です。
まずはお値段。100万円超えですね。

主な機能
機能 | 内容 |
---|---|
データ収集 | エッジカメラからリアルタイムで画像を収集(クラウドにアップロード) |
アノテーション | Webブラウザ上で画像にラベル付け(バウンディングボックスや分類) |
モデル学習 | アノテーション済みデータを使って、分類/検出モデルを学習(クラウドGPUで自動) |
精度評価 | モデルの精度(F1スコア、リコール等)を可視化。誤認識ケースも分析可能 |
エクスポート | 学習済みモデルを .rpk 形式でエクスポートし、IMX500カメラに直接デプロイ可能 |
プロジェクト管理 | データセット、モデル、デバイスごとにプロジェクト単位で管理可能 |
対象ユーザー
- AI初心者やノーコード開発者
- Pythonコードを書かずに、ドラッグ&ドロップ操作だけでエッジAIカメラ用モデルを作成できる
- 製造業・小売業などの現場担当者
- 「この異物を検出してほしい」「特定の動作を認識したい」といった現場ニーズに即応
実現できるユースケース例
- 不良品検出
- 商品棚の空き検知
- 来客カウント・行動分析
- 指定領域への侵入検知
- ごみ/異物検出 → ロボットアームへ連携
注意点
- 学習・推論モデルの形式は
.rpk
(Sony独自)で、IMX500センサーと互換性があります。 - 現在は分類・物体検出系タスクが中心(姿勢推定などは手動開発が必要)。
バージョン比較
Brain Builder – Classifier/Detector for AITRIOS
- 主な機能: 分類(Classifier)と物体検出(Detector)モデルの作成に特化しています。
- 対象ユーザー: AI開発の初心者や、特定のタスクに集中したいユーザーに適しています。
- 利用可能なモデルタイプ:
- Classifier: 画像全体または特定の領域を事前定義されたクラスに分類します。
- Detector: 画像内の特定の物体を検出し、その位置を特定します。
- 特徴:
- ノーコード対応: プログラミング不要で、GUIを通じて操作可能です。
- 少量データ対応: クラスごとに約50枚の画像からモデルを構築できます。
- トライアル利用: 10日間の無料トライアルライセンスが提供されています。
Brain Builder for AITRIOS(フルバージョン)
- 主な機能: 分類、物体検出に加え、高精度異常検知(Anomaly Hi-Fi)モデルの作成が可能です。
- 対象ユーザー: 製造業や品質管理など、高度な異常検知が求められる業務用途に適しています。
- 利用可能なモデルタイプ:
- Classifier
- Detector
- Anomaly Hi-Fi: 微細な異常や欠陥を高精度で検出します。
- 特徴:
- 高度なモデル作成: 異常検知モデルにより、微細な不良や欠陥の検出が可能です。
- エンタープライズ向け: 業務用途に特化した機能とサポートが提供されます。
- ライセンス購入: 利用には正規ライセンスの購入が必要です。
項目 | Classifier/Detector(6ヶ月) | フルバージョン(1年) |
---|---|---|
製品名 | Brain Builder – Classifier/Detector for AITRIOS | Brain Builder for AITRIOS |
利用可能なモデル | 分類(Classifier)、物体検出(Detector) | 分類、物体検出、高精度異常検知(Anomaly Hi-Fi) |
ライセンス期間 | 6ヶ月 | 1年 |
対象ユーザー | 評価用、短期プロジェクト | 業務導入、エンタープライズ用途 |
ノーコード対応 | あり | あり |
価格(税込) | ¥144,917 | ¥1,004,950 |
無料トライアル | あり(10日間) | なし(要ライセンス購入) |


AIビジョンアプリケーションの開発(Brain Builderなしで自力開発)
Brain Builder for AITRIOSは面白そうだけど1年で100万円もかかると個人プロダクトでは支払うことはできません。そこで、TensorflowとPyTorchで学習していきましょう。

出展: https://developer.aitrios.sony-semicon.com/en/raspberrypi-ai-camera/develop/get-started
この図は、TensorFlowやPyTorchで学習したAIモデルを、IMX500搭載エッジAIカメラ(Raspberry Pi AI Camera)で動かすまでのワークフローを表しています。
IMX500 で動作するモデルは?
IMX500は、PyTorch(ONNX)またはTensorFlow(Keras)ベースの単一画像認識ニューラルネットワークをサポートします。
現在はフィードフォワードモデルのみサポートされています。RNN(Recurrent Neural Network:再帰型ニューラルネットワーク)は将来のソフトウェアリリースでサポートされる予定です。
IMX500にモデルをデプロイする際の主な互換性問題
特性 | 要件 | コメント |
---|---|---|
モデルアーキテクチャ | 分岐(if)やループなどの「フロー演算」を含まない静的モデルのみがIMX500上で実行可能です。対応可否は、サポートされているレイヤーとそのパラメータ制限によって決まります。 | モデルが対応しているかどうかは、レイヤーとパラメータの構成のみに依存し、タスクの種類や構造には依存しません。IMX500のレイヤー/パラメータの対応範囲は寛容であり、ソフトウェアのバージョンが上がるたびに拡大しています。最新の対応レイヤー一覧は、IMX500 Converter Manual を参照してください。 |
入力テンソルのサイズ | 固定(定数)でなければなりません(動的サイズは不可)。 最大入力解像度: – RGB:640×640 – モノクロ:1024×1024 | — |
モデルサイズ(メモリ) | モデルはIMX500の内部メモリに収まる必要があります。 | モデルサイズの制限は、モデルの構造や解像度によりますが、おおよそ3〜10メガウェイト(百万パラメータ)程度です。構造的プルーニング(不要な重みの削除)を行った場合は、プルーニング後のサイズが基準となります。 |
ワークフローとソフトウェアツール(Workflow and software tools)
IMX500 は、畳み込みニューラルネットワーク(CNN)、トランスフォーマー(Transformer)、多層パーセプトロン(MLP) など、さまざまな種類のディープニューラルネットワークを実行することができます。
浮動小数点モデル(The floating point model)
まずは、ディープラーニングフレームワーク上で動作する浮動小数点モデルを使用することが推奨されます。これは、一般公開されている学習済みモデルや、独自に構築したカスタムモデルが該当します。
⚠️ 量子化済みモデルや偽量子化モデル(Fake-quantized)から始めると、エラーや量子化の重複が発生し、精度が大きく低下する可能性があります。
このようなモデルの準備や再学習、あるいは公開モデルへの軽微な修正であっても、ディープラーニングフレームワークでのスキルと経験が求められます。
モデルが通るステップ(A working model goes through the steps)
Optimize(最適化)
- モデルを圧縮・最適化する処理です。
- 使用ツールは Model Compression Toolkit(MCT)。
- Sonyが提供するオープンソースのPythonパッケージです。
- 主に量子化と圧縮により、ハードウェア制約のある環境(IMX500など)に適したモデルに変換します。
Compile(コンパイル)
- 最適化・量子化されたモデルを、IMX500で実行可能な形式に変換(コンパイル)します。
- 使用ツールは IMX500 Converter。
これらのステップの結果として得られるのが、IMX500向けの変換済みモデルです。
メモリ最適化
IMX500には、AIの動作に使用されるメモリが8MBあります。これは、モデルのパラメータと特徴マップテンソルに使われます。
数値表現と量子化
IMX500は、さまざまな数値表現(ビット幅)に対応しています。
通常、Model Compression Toolkit(MCT)はモデルを8ビットに量子化し、コンパイル時にSDSPコンバータがIMX500のメモリに収まるようにモデルを生成しようとします。
高度な圧縮技術
IMX500コンバータでメモリに収まらないモデルに対しては、MCTが追加の圧縮オプションを提供します。
これにより、精度への影響を最小限に抑えつつ、メモリ要件をさらに削減できます。
この処理では、**混合精度量子化(MPQ)**などの高度な圧縮技術を自動で適用し、圧縮率も手動で設定できます。
実践的なガイドライン
目安として、400万パラメータ(4MParams)未満の浮動小数点モデルであれば、8ビット量子化(4倍圧縮)によってIMX500上にデプロイ可能です。
それより大きいモデルは、より積極的な圧縮が必要になることがあります。
800万〜1200万パラメータのモデルは、IMX500では実用的でないことが多いです。

出展:https://developer.aitrios.sony-semicon.com/en/raspberrypi-ai-camera/develop/ai-tutorials/compatibility-and-optimization-tutorial?version=2024-11-21&progLang=
圧縮レベルの可視化(図の解説)
- 左端(緑):MobileNetV2 → 4倍圧縮でOK
- 中央(黄):EfficientNetV2 B2 → 7倍圧縮(混合精度)で対応可
- 右端(赤):EfficientNetV2 B3 → 10.5倍圧縮が必要。非現実的
モデル別の具体例
モデル名 | 元のモデルサイズ | 特徴マップ使用メモリ (MB) | 8ビット量子化時の重みメモリ (MB)(4x圧縮) | 8MB超過分 (MB) | 必要な最小圧縮率 |
---|---|---|---|---|---|
MobileNetV2 | 3.5(3.6 MB) | 1.4 | 4.9 | 0 | 4倍(OK) |
EfficientNetV2 B2 | 10.2(11.6 MB) | 1.2 | 12.8 | 4.8 | 7倍(6.8 MB) |
EfficientNetV2 B3 | 14.5(16.3 MB) | 1.8 | 18.1 | 10.1 | 10.5倍(6.2 MB)※実用的でない |
このように、IMX500では軽量モデルの利用が推奨されます。
「MobileNet」や「EfficientNetV1」などは比較的向いていますが、「B3」以上のサイズになると実用は難しいと考えられます。
続きはまた明日、
を読み進めたいと思います。