⛳
OpenVINOをRaspberryPiで利用する。
手順
1. 環境構築
OpenVINOをRaspberry Piで利用するための環境構築手順です。
# CMakeのインストール
sudo apt install cmake
# Pythonの仮想環境ツールをインストール
sudo apt-get install python3-venv
# OpenVINO用の仮想環境を作成
python3 -m venv openvino_env
# 仮想環境をアクティベート
source openvino_env/bin/activate
# pipを最新にアップグレード
python -m pip install --upgrade pip
# OpenVINOライブラリをインストール
pip install openvino
# ビルドディレクトリを作成し移動
mkdir build && cd build
次に、OpenVINOのソースコードをビルドしてインストールします。
# 必要な依存関係のインストール
sudo apt-get update
sudo apt-get install -y git cmake libusb-1.0-0-dev
# OpenVINOリポジトリをクローン
git clone https://github.com/openvinotoolkit/openvino.git
# クローンしたディレクトリに移動
cd openvino
# サブモジュールを更新
git submodule update --init --recursive
# ビルドディレクトリを作成し移動
mkdir build && cd build
# CMakeでビルド設定を行い、makeでコンパイル
cmake -DCMAKE_BUILD_TYPE=Release -DTHREADING=SEQ .. && make
2. モデルの準備と実行
OpenVINOで推論を行うためには、学習済みのモデルをOpenVINOがサポートするIR (Intermediate Representation) 形式に変換する必要があります。
モデルの変換
Model Optimizerを使用して、TensorFlow, PyTorch, ONNXなどのフレームワークで作成されたモデルをIR形式に変換します。
# 仮想環境がアクティブであることを確認
source openvino_env/bin/activate
# Model Optimizerの実行例 (例: TensorFlowモデルの場合)
# model_name.pb は変換したいモデルのパスに置き換えてください
python3 /path/to/openvino/deployment_tools/model_optimizer/mo.py \
--input_model /path/to/your/model_name.pb \
--output_dir /path/to/output/directory
変換が成功すると、指定した出力ディレクトリに .xml
(ネットワークトポロジ) と .bin
(重み) ファイルが生成されます。
推論の実行
変換したIRモデルを使用して、OpenVINO Runtimeで推論を実行します。
# 仮想環境がアクティブであることを確認
source openvino_env/bin/activate
# Pythonスクリプトで推論を実行する例
# infer_model.py は推論コードを含むスクリプトに置き換えてください
# device_name は 'CPU', 'GPU', 'MYRIAD' (NCS2の場合) などに置き換えてください
python3 infer_model.py --model /path/to/output/directory/model_name.xml --device CPU
infer_model.py
の内容例:
import argparse
from openvino.runtime import Core
def main():
parser = argparse.ArgumentParser(description="OpenVINO Inference Example")
parser.add_argument("--model", required=True, help="Path to the .xml model file")
parser.add_argument("--device", default="CPU", help="Specify the target device (e.g., CPU, GPU, MYRIAD)")
args = parser.parse_args()
# OpenVINO Runtimeの初期化
ie = Core()
# モデルの読み込み
model = ie.read_model(model=args.model)
# 指定されたデバイスにモデルをコンパイル
compiled_model = ie.compile_model(model=model, device_name=args.device)
# 入力と出力の情報を取得
input_layer = compiled_model.input(0)
output_layer = compiled_model.output(0)
# ダミー入力データの作成 (モデルの入力形状に合わせて調整してください)
# 例: input_layer.shape が [1, 3, 224, 224] の場合
import numpy as np
input_data = np.random.rand(*input_layer.shape).astype(input_layer.dtype)
# 推論の実行
results = compiled_model([input_data])
print("Inference successful!")
print(f"Output shape: {results[output_layer].shape}")
# 必要に応じて結果を処理
if __name__ == "__main__":
main()
参考資料
- OpenVINO 公式ドキュメント: https://docs.openvino.ai/latest/index.html
- Raspberry PiでのOpenVINO利用ガイド: https://openvino.jp/configuration-raspberrypi/
- OpenVINO GitHubリポジトリ: https://github.com/openvinotoolkit/openvino/wiki/BuildingForRaspbianStretchOS
この文章はAIによって加筆・完成されました。
Discussion