#ONNXRuntimeとは
ONNXモデル向け推論エンジンです。
開発はマイクロソフトです。ossとしてリリースされています。
公式はこちら
バイナリパッケージはx86,x64向けしか提供されていないので、ARM向けはソースコードからビルドする必要があります。
今回はRaspberryPi4上でPython用Wheelパッケージをビルドしてみました。(直接ビルドする以外にDockerコンテナを使う方法もあります。)
ただ、公式の説明ではOSのバージョンがStretchを前提としているため説明文通りではビルドできませんでした。
後の手順でビルドはできています。
#環境
Raspberrypi4 4GBモデル
Raspbian Buster Fullバージョン (2020年2月5日リリース版)
#ビルドの手順
Raspbianインストール直後の状態から
sudo apt update
sudo apt upgrade
sudo apt install protobuf-compiler
sudo apt install cmake
sudo apt install libcurl4-openssl-dev
sudo apt install libatlas-base-dev
mkdir code
cd code
git clone --recursive https://github.com/Microsoft/onnxruntime
cd onnxruntime
そのままだとビルド中にエラーが発生するので、次の修正を行う。
・onnxruntime/cmake/CMakeLists.txtの最後に次の文を追加。
set(CMAKE_CXX_LINK_FLAGS "${CMAKE_CXX_LINK_FLAGS} -latomic")
修正後にビルドスクリプトの実行(Wheelパッケージの作成を指定)
./build.sh --config MinSizeRel --arm --enable_pybind --build_wheel
無事ビルドが完成したらonnxruntime/build/Linux/MinSizeRel/dist/にWheelパッケージがあるので、pip3でインストールするとonnxruntimeが利用できます。
#おまけ
今回はRaspberryPi4を使ってみましたが、Raspberrypi3+(Raspbian Buster)でも問題なくビルド出来るのを確認しています。
Widows(ARM32v7,ARM64)も対応しているようだけど、HoloLens2でも動作するんでしょうか。
実機がないので試せないですが・・・