2025.09.30

軽量モデル&CPUで動かすエッジAI

はじめに

お疲れ様です、AI研究開発室のA.T.です。
近年は「AI × ロボティクス」の分野が急速に注目を集めています。その中でも、ロボットの基盤技術として欠かせないのがエッジAIです。今回は、このエッジAIの可能性を探るために、実際に検証を行ってみました。

導入

近年、ロボットは社会のさまざまな場面で活躍しています。たとえば、大型商業施設やオフィスビルで巡回している監視ロボットを目にした方も多いのではないでしょうか。これらのロボットは、搭載されたカメラで状況を観察し、人やモノをリアルタイムで検出し、必要に応じて警備室に通知する役割を果たしています。

この高度な処理を支えているのが、クラウドに依存せずロボット自身が搭載するコンピュータで直接判断を行うエッジ推論です。エッジ推論により、通信遅延やプライバシーリスクを最小化しながら即時の意思決定が可能となります(詳細は当社ブログの過去記事をご参照ください)。

低消費電力かつ高性能なCPU/GPUの登場と高解像度カメラやセンサーデバイスの進化によって、エッジAIはロボティクス領域で「使える技術」へと急速に成長しています。

今回の検証では、軽量なCPUと高機能カメラを組み合わせ、リアルタイム物体検知を検証しました。

物品構成

今回の実験で使用した機材を整理してご紹介します。エッジAIによる物体検知の実証には、処理性能と拡張性を兼ね備えたシングルボードコンピュータと、高性能なセンサー類が欠かせません。

  • Raspberry Pi 5 16GB: イギリスのラズベリーパイ財団が開発しているシングルボードコンピュータです。小型ながらも十分な処理性能を持ち、AIやIoTの検証環境に適しています。特に最新のRaspberry Pi 5ではメモリ性能が大幅に向上し、画像処理や軽量な推論タスクに実用的な性能を発揮します。
  • Intel RealSense D435i:RGBカメラに加えて2つの赤外線カメラを備え、奥行き推定(深度情報)や加速度・角速度の計測も可能な高性能カメラです。今回の実験では、既にグループ会社の「GMO AI&ロボティクス商事株式会社」で利用していたデバイスを流用しました。高精度な空間認識が可能なため、ロボットのナビゲーションや物体検知に広く活用されています。
  • タッチスクリーンモニター: Raspberry Piには標準でキーボードやモニターが付属しないため、操作性を確保する目的で別途導入しました。

Raspberry Pi 5の基盤

タッチスクリーンモニタとRealSense D435i

実行環境

今回の実験環境は、Raspberry Pi 5 上に構築しました。まずはシステムの基本情報として、neofetch の出力をご覧ください。

       _,met$$$$$gg.          aiken@ailab-raspberrypi5-64 
    ,g$$$$$$$$$$$$$$$P.       --------------------------- 
  ,g$$P"     """Y$$.".        OS: Debian GNU/Linux 12 (bookworm) aarch64 
 ,$$P'              `$$$.     Host: Raspberry Pi 5 Model B Rev 1.1 
',$$P       ,ggs.     `$$b:   Kernel: 6.12.34+rpt-rpi-2712 
`d$$'     ,$P"'   .    $$$    Uptime: 5 mins 
 $$P      d$'     ,    $$P    Packages: 2158 (dpkg) 
 $$:      $$.   -    ,d$$'    Shell: bash 5.2.15 
 $$;      Y$b._   _,d$P'      Resolution: 800x480 
 Y$$.    `.`"Y$$$$P"'         Terminal: node 
 `$$b      "-.__              CPU: (4) @ 2.400GHz 
  `Y$$                        Memory: 1220MiB / 16219MiB 
   `Y$$.
     `$$b.                                            
       `Y$$b.                                         
          `"Y$b._
              `"""

システムは Debian GNU/Linux 12 (Bookworm) をベースにしており、CPUは最大2.4GHz駆動のクアッドコア、メモリは16GB搭載というスペックです。小型ながらも、今回のようなリアルタイム推論を行う上で十分な環境を提供してくれます。

ライブラリ構成

今回の実験で重要な役割を果たしたのが、Intel RealSense カメラを扱うためのライブラリ librealsense です。
このライブラリは深度推定やRGB映像の取得、さらにIMUデータの利用まで可能にするもので、RealSenseシリーズを活用する際の必須ツールといえます。今回は互換性の問題を避けるため、パッケージインストールではなくソースからビルドしました。

以下が実際の手順です。

git clone https://github.com/IntelRealSense/librealsense.git
cd librealsense/
sudo apt install -y git libssl-dev libusb-1.0-0-dev pkg-config libgtk-3-dev
sudo apt install -y libglfw3-dev libgl1-mesa-dev libglu1-mesa-dev
sudo apt install -y cmake
./scripts/setup_udev_rules.sh
./scripts/patch-realsense-ubuntu-lts.sh
mkdir build && cd build
cmake ../ -DBUILD_PYTHON_BINDINGS:bool=true -DPYTHON_EXECUTABLE=/usr/bin/python3 -DFORCE_LIBUVC=true -DCMAKE_BUILD_TYPE=release
sudo make clean && make && sudo make install

公式ガイドからの変更点(-DPYTHON_EXECUTABLE=/usr/bin/python3):Pythonから直接RealSenseを扱えるようにすることで、後の実験がスムーズになります。

実行コード(抜粋)

Realsenseの撮影実行

まずは、RealSenseの各種ストリームを有効化して撮影を開始します。以下の例では、カラー(RGB)、深度、赤外線(IR1/IR2)の映像を同時に取得するよう設定しています。

import pyrealsense2 as rs 

# BGRカラー撮影の有効化
rs.config.enable_stream(rs.stream.color, self.WIDTH, self.HEIGHT, rs.format.bgr8, self.FPS)

# 深度撮影の有効化
rs.config.enable_stream(rs.stream.depth, self.WIDTH, self.HEIGHT, rs.format.z16, self.FPS)

# 赤外線撮影(左右チャネル)の有効化
rs.config.enable_stream(rs.stream.infrared, 1, self.WIDTH, self.HEIGHT, rs.format.y8, self.FPS)
rs.config.enable_stream(rs.stream.infrared, 2, self.WIDTH, self.HEIGHT, rs.format.y8, self.FPS)

# パイプラインの開始
rs.pipeline().start(self.config)

ここで有効化したチャネルにより、環境光や対象物の距離に左右されにくい多角的なデータを同時取得できます。特に赤外線チャネルは暗所での認識にも有効です。

Realsenseフレームに物体検出

次に、取得したフレームをループ処理しながらリアルタイムで物体検出を行います。

while True:
   # フレームの取得
   frames = cam.pipeline.wait_for_frames()  
   color_frame = frames.get_color_frame()
   
   # numpy配列に変換
   color = np.asanyarray(color_frame.get_data())   
   
   # 検出器で物体検出を実行
   dets = detector.detect(color)

この処理では、カメラから送られてくる映像フレームを逐次処理し、カラー画像に対して物体検出を実行しています。推論とフレーム取得を並列的に処理することで、リアルタイム性を確保しています。

実行結果

今回の実験では、Raspberry Pi 5(CPUのみ) 上で物体検出を実行したところ、概ね 約5FPS の処理速度を確認できました。
もちろん、フレームレートは解像度設定、前処理の有無、使用するモデルのサイズや最適化方法によって変動します。例えば、解像度を下げたり軽量化モデルを使えばさらに処理速度を稼げる一方で、精度は低下する可能性があります。

それでも、今回の結果は「ロボット上でリアルタイムに動くイメージを掴む」には十分であり、次の段階でGPUアクセラレーションや最適化ライブラリを導入する余地も見えてきました。

上の動画では、机上のカップをリアルタイムに検出している様子が確認できます。推論結果のラベル(例: cup: 0.91)と信頼度が表示されており、精度としても十分実用的なレベルに達しています。

まとめ

今回の検証は CPU実行 を前提に進めたため、採用したモデルは軽量版であり、推論速度も低めの周波数に設定しました。
それでも、Raspberry Pi 5 単体で 約5FPS の物体検出を達成でき、ロボットに搭載した際の「動作イメージ」を掴むには十分な結果が得られたといえます。
つまり、小型・低消費電力のエッジデバイスでも、工夫次第で実用的なAI推論環境を構築できることを確認できました。次のステップとしては、GPUアクセラレーションやハードウェア最適化ライブラリ(例: TensorRT, OpenVINO, ONNX Runtime)の導入を試してみたいと思います。

最後に

グループ研究開発本部 AI研究開発室では、データサイエンティスト/機械学習エンジニアを募集しています。ビッグデータの解析業務などAI研究開発室にご興味を持って頂ける方がいらっしゃいましたら、ぜひ 募集職種一覧 からご応募をお願いします。皆さんのご応募をお待ちしています。

  • Twitter
  • Facebook
  • はてなブックマークに追加

グループ研究開発本部の最新情報をTwitterで配信中です。ぜひフォローください。

 
  • AI研究開発室
  • 大阪研究開発グループ

関連記事