LoginSignup
9
5

More than 3 years have passed since last update.

Raspberry Pi4&UbuntuでOpenVINO環境構築

Last updated at Posted at 2020-12-12

はじめに

Raspberry Pi4のUbuntu環境でOpenVINOをPythonで動かすための環境構築でめちゃくちゃ手こずったので備忘録も兼ねて記録していきます。
手こずった話は最後に書きます。

注意点

Intelによると、ラズパイでのOpenVINO対応環境はRaspbian/RaspberryPi OSとなっております。
Ubuntuでの対応は非公式ですので、お気をつけ下さい。
また、本構築手法ではOpenCVのOpenVINO対応は行っていません。

用意する環境

  • Raspberry Pi4(4/8GB)
  • Ubuntu18.04/20.04
  • Python3.6(Ubuntu18.04)/Python3.8(Ubuntu20.04)

環境構築

はじめの一歩

手始めにライブラリを最新版にしておきましょう。

sudo apt update && sudo apt upgrade -y

OpenVINOのGithubから最新版を取ってくるために、gitが必要になります。
また、Python3のライブラリを取ってくるのにpipも必要です。

sudo apt install git python3-pip

ビルドツールの準備

ビルドツールであるbuild-essentialとcmakeを入れましょう。

sudo apt install build-essential cmake

ソースコードのダウンロードと依存ライブラリの準備

OpenVINOを公式からクローンしましょう。
softwareというディレクトリを作ってその中に置くようにしてますが、無くてもいいです。

mkdir software
cd software
git clone https://github.com/openvinotoolkit/openvino.git

サブモジュールがあるので、それをフェッチしましょう.

cd openvino/inference-engine
git submodule update --init --recursive

ビルド関係で必要なものがいくつかあるので、bashファイルを実行します。

cd ..
sh ./install_build_dependencies.sh

数分かかります。

Python3環境の準備

Python3はUbuntu18/20に標準で付いているものを使うので、
Ubuntu18であればPython3.6, Ubuntu20であればPython3.8になります。
cythonのバージョン0.29.21とnumpyが必要になります。

sudo -H pip3 install numpy
sudo -H pip3 install cython==0.29.21

ビルド

Python環境含めて、ビルドしましょう。

mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release \
-DENABLE_OPENCV=OFF \
-DENABLE_PYTHON=ON \
-DPYTHON_EXECUTABLE=/usr/bin/python3.6 \
-DPYTHON_LIBRARY=/usr/lib/python3.6/config-3.6m-aarch64-linux-gnu/libpython3.6m.so \
-DPYTHON_INCLUDE_DIR=/usr/include/python3.6m ..

cmake実行後に、PythonのLibやらがちゃんと指定されていることを確認してください。
確認できれば、

make -j4

でビルドします。
大体2~3時間かかります。

PYTHONPATHの設定

ビルドされたPython APIのラッパーは/openvino/bin/の中にあります。
以下を.bashrcを開いて記載しましょう。

sudo vim ~/.bashrc
...
export PYTHONPATH=$PYTHONPATH:~/software/openvino/bin/aarch64/Release/lib/python_api/python3.6/
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/software/openvino/bin/aarch64/Release/lib/

ちゃんとimportできるか確認

ターミナル上でいいので、Python3を起動して確認してみましょう。

python3
...
# パスが通ってるかまず確認
# 出力に~/software/openvino/bin/aarch64/Release/lib/python_api/python3.6/が含まれていることを確認
# 無ければ、.bashrcを確認する
import sys; import pprint
pprint.pprint(sys.path)
# OpenVINOの確認
from openvino.inference_engine import IECore
# エラーがでなければ完了

めちゃくちゃ手こずった話

本来は、手動で構築したPython3.7上にOpenVINOを作りたかったのですが、何度ビルドしてもPython上でimport時に

Segmentation fault (core dumped)

と出て、Pythonがクラッシュしてしまいます。
色々探った結果、apt installで入れたcythonが悪さをしているのではないかと思い、apt removeで消した後にpipで入れたcythonを参照するようにしたのですが、それも原因ではなかったようです。
また、Python3.7をインストールする際に

sudo make install

をしていたせいで、3.6系と3.7系がごちゃごちゃになってしまったのではないかと思い、

sudo make altinstall

にしましたが、それもダメ…
結局3.7上で構築するのは諦めて、Ubuntuに最初から付いているPythonでOpenVINO環境構築したところうまくいきました。
ただ、Intelの中の人は自分で構築したPython環境にビルドできたようです。
https://community.intel.com/t5/Intel-Distribution-of-OpenVINO/When-I-import-openvino-inference-engine-I-faced-crash-the-python/m-p/1229283#M21472
ちなみにIntelの方々は非常に丁寧に対応して頂けます。この一件でめちゃくちゃIntelのファンになりました。Intel入ってます。

9
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
5