
弊社でRaspberryPi 3Bを「エッジAIとして活用したい」と検証してから6年が経過しました。以降、このカテゴリ"機械学習・AI"では、その後NVIDIA Jetson AGX XavierやNX、NanoなどのGPUを搭載したエッジコンピュータでの検証を続けてきました。直近では、物体検出】vol.19 : Jetson Xavier NXの検出性能(PythonからYOLOv3,v4)(https://www.nakasha.co.jp/future/vol19_xaviernxpythondarknet_yolofps.html)でYOLOv3で7FPSという結果となり、「リアルタイムではないものの、そこそこ使えそう」な感触がありました。
2025年10月現在、YOLOの最新は11になり、Raspiも大きく進歩してRaspi5となりましたので、(そろそろ重い腰を上げて)今回、エッジAIとしての評価をしてみます。
今回のRaspi5が、従来と大きく異なっているのは、電源です。5V,5Aと巨大化されています。(3Aで動作します)
その結果、そこらのモバイルバッテリでは"低電圧アラート"が出まくって動かないレベルです。
ACでの安定した電力供給は必須です。
| [01:電源アダプタの写真] |
![]() |
CPUやPCIeなど、より高速に動作するためのチップが増強しているので性能を求めればこれは致し方ありません。・・・が特に重要なのが"熱対策"です。放熱が原因で、CPUがセーフモードで動作してしまっては、せっかくの高性能も意味がありません。
かといって、大きなファンを常時ブンブン回すのは、稼働部品から壊れることからよろしくありません。
そこで目を付けたのが、Entaniyaのクーリングパイプです。
決して安い部品ではありませんが、冷却性能はバッチリです。(70度を上限に、それ以上は加熱しない)
| [Entaniya Raspi5用cooling pipe] |
![]() |
今回のRapi5ハードウェア、ソフトウェア構成は、下記の様になっています。
画像処理を快適に回すためには、CPUパワーはもちろんのこと、ディスクI/Oの高速化が必要です。
PCIeを活用するためのHATとNVMeのSSDを追加しています。
| 本体: | Rapi5 8GBRAM |
| ディスク: | NVMe(PCIe2)256GB SSD |
| HAT: | PCIe3拡張HAT |
| OS: | Ubuntu Server 24LTS |
| ヒートパイプ: | Entaniya 冷却FIN付ヒートパイプ冷却システム |
| カメラ: | ELP製USB形式カメラ |
| AIモデル: | YOLO11n、YOLO8モデル(オリジナル) |
| プログラム: | Python3.12、OpenCV、numpy、YOLO |
| [ハードウェアの実装] |
![]() |
| [5インチタッチディスプレイでubuntu] |
![]() |
| 【カメラによるリアルタイム検出 2.4FPS】 |
![]() |
最初に結論です。
YOLOの通常サイズモデルで2FPSをマークしました。yolo11nモデルでも2.3FPS程度となりました。
これは動画ファイル(VGA、HD、2K)による検出でもUSBカメラのストリーミング処理でも同様でした。
動画サイズが4Kの場合のみ0.9FPS程度に性能が劣化しました。
yolo形式モデルの他、ONNX形式も検証しましたが、同様の結果でした。
今回は、通常PCで行うような重いタスクをRaspi5で実行しましたので、このような結果となりました。
小さなモデルを使う、GPUを外付けする・・の改善手段があると思いますが、検出精度を犠牲にすることなく、かつ、PCではなくエッジAIを狙っていきます。
何かを追加で付ければより性能を上げられる・・というような選択はしない方針です。(それならば元々NVIDIAのGPUを搭載したエッジAIを選択する)
但し、次に実施しようと思っているのは、ソニーのエッジAIカメラ"IMX500"にモデルを転送して実行してみようと考えています。
オリジナルの枕木検出モデル(YOLOv8通常サイズ)とYOLOv11nモデルによる、動画(2Kのmp4)、USBカメラによる検出の様子と検出結果を示します。
・動画サイズによる違い
VGA、HD、2K、4Kと解像度を変えた場合の検出結果は下記です。
| 解像度 | FPS |
| VGA | 1.63 |
| HD | 1.66 |
| 2K | 2.13 |
| 4K | 0.98 |
4K以外は、解像度によって多少の差異は認められるものの、おおよそ1.6-2FPSで検出できます。小さい方が高速と思いきや、意外と2Kが一番高速でした。(理由は良く分かっていません。何回か計測した平均ではないのでたまたまかもしれません)
4Kの場合は0.9FPS程度と大きく性能が落ちます。
元の動画サイズは異なるものの、YOLOが切り出すサイズは640*480にしていますので、これを小さくすればもう少し早く出来ると思います。(未実施)
・カメラ
USBカメラによる検出においても640*480ドットでの切り出しで2.3FPS程度の性能となりました。
動画ファイルを読みこんだ場合よりも若干(1割程度)速く動作する結果となりました。
・ONNX形式での実行結果
「ONNX形式の方がRaspiのCPU検出に最適化されているのではないか?」と期待して、YOLO8形式の枕木検出モデルとYOLO11nモデルをそれぞれONNX形式に変換して検出実行して見ました。→結果に大きな差はありませんでした。
| モデル | 形式 | 映像ソース | 画面表示あり | 画面表示なし |
| 枕木検出モデル | pt | 2K動画 | 2.2FPS | - |
| 枕木検出モデル | onnx | 2K動画 | 1.9FPS | - |
| yolo11n | pt | USBカメラ(VGA) | 1.8FPS | 0.9FPS |
| yolo11n | onnx | USBカメラ(VGA) | 1.8FPS | 1.9FPS |
| 【2K処理中のシステム負荷】 |
![]() |
| 【YOLOを停止した際の負荷低下】 |
![]() |
検出を実行している間のCPU、メモリ、熱の状況を示します。
CPUは4コアを利用し、どの場合でも90%以上の負荷状況となります。
8GBのRAMは5GB程度を消費しています。4GB程度がOSやGUIで使われていますので、増分は1GB程度です。
ここにはデータを示さないものの、メモリ使用量は画像解像度と相関しており、4Kの場合は他と比べて500MB程度多めに消費されています。
min:50度、max:70度、67度付近を恒常的に指しています。熱によってCPUモードが低速化することなく動作しており、ヒートパイプが強力に作用しています。
かなり性能上限に近いところで動作している様子を伺えます。
CPUにボトルネックがあるので、メモリを増やしたり、SSDを高速化(PCIe3)する必要は無さそうです。
鉄道保線における枕木種別や損傷を検出する目的のプログラムとして作りました。
| [枕木検出モデルで動画物体検出 1.7FPS] |
![]() |
・機能
USBカメラ映像または動画ファイルとモデル、検出クラスを指定して、検出結果を静止画とログで書き出します。静止画上には、日付時刻、検出されたクラスとその合計、FPSとあのアノテーションがオーバーレイ描画されます。静止画はresult/captures/にjpg形式で保存されます。
ログファイルは、日付時刻、処理性能、検出クラスの順でCSV形式でresultディレクトリ内に保存されます。
・引数(オプション)
--source :data/ディレクトリ配下の動画ファイル名かもしくは"cam"を指定
--model :models/ディレクトリ配下のモデル名を指定。YOLO形式またはONNX形式
--classes :検出、保存の対象クラス名。スペース区切りで複数指定。cat dog など
--show :検出、保存時に静止画を表示するかどうか yes/no
・SSHコンソールでのコマンド実行(--show=noで画像を表示しない)
| [SSHで実行] |
![]() |
・GUIデスクトップでの実行(--show=yesで画像を表示)
| [GUI desktopで実行] |
![]() |
タッチパネルGUIからプログラムの起動やOS再起動などを実行できるランチャープログラムを作成しました。これでキーボード、マウス操作が不要になりました。
| [launcherプログラム] |
![]() |
| [qv4l2カメラ設定画面] |
![]() |
今回は、PCで通常実行するような負荷の高い物体検出を試みましたので、「リアルタイムはキツイ」という結論を得ていますが、エッジAIの場合は、「ちょっと精度は悪いけど、リアルタイムは可能」という結果を求められることが多いと思います。(ロボティクスの分野ですかね。)
その場合、"リアルタイム"の要件を満たすために、下記の手法が考えられます。
1は再学習が必要で、かつ検出性能が今よりも落ちることは間違いないので、やりません。
2は今後追加でやってみようと思いますが、1と同様でリアルタイムではあるが精度は落ちるだと思いますので参考程度です。
3はそもそもHalio8Lにしたところで26TOPSであり、Orin Nano以下の性能にしかならないので、「それならNanoで良くない?」と思います。
4は、結構重い処理をRaspiに強いている可能性が大です。しかし、「画像を扱う以上、GUIじゃなくてどうする?」と思っていますのでgnome必須です。カメラ設定もやりたいし、ユーザがタッチパネルでGUIを操作するという簡便性を確保したいのです。
カメラ設定や品質、連続稼働の確認が終わった後は、OLEDで最低限の情報のみ表示して、コマンドベースで黙々と自動実行するプログラムというセンにあり得ます。(そのためにサーバを選択しています)
「この範囲での利用ならOK」を、連続稼働や耐環境性能やUIなんかの作り込みをしていない段階で、(物凄く無責任に)言わせてもらいますよ。
この範囲ならOKの(しょうも無い)事例を二つご紹介します。
一つは、動物(特に猫)監視カメラです。
USBカメラを使い、家猫の餌場やトイレの近くに設置し、10時間(夜通し)連続動作させることに成功しました。外猫は、昨今滅多に姿を現さないので、家猫に切り替えて実施しましたが、本来なら屋外のオープン環境で動物の生態をウォッチしたいところです。無停止でどれだけ動作させられるのか?がとても重要ですね。
トレイルカメラを獣道や罠の場所に設置して、熊や鹿やイノシシを監視するようなやつです。
| [USBカメラによるリアルタイム検出:動物] |
![]() |
もう一つは、(良くやられていると思いますが)車や人の検出、カウントです。
商店の売り場で人流をカウントするとかでやられていますね。カメラが切り取る画角にどれだけの人数がいるのか?女性なのか男性なのか、成人なのか子供なのか?みたいなヤツです。
| [USBカメラによるリアルタイム検出:人/車] |
![]() |
▼この記事を書いたひと

R&Dセンター 松井 良行
R&Dセンター 技術戦略担当部長。コンピュータと共に35年。そしてこれからも!
●富士見事務所 TEL : 052-228-8733 FAX : 052-323-3337
〒460-0014 愛知県名古屋市中区富士見町13−22 ファミール富士見711 地図
交通部 R&Dセンター


