基本的には以下公式サイトの「Get started」に従っていけば良い。
諸元
- Ubuntu 20.04
- OpenVINO 2023.1
OpenVINO本体
インストール
以下サイトで要件を選択するとインストールの方法が表示されるので、それに従う。
自分の場合はC++のAPIも利用したいので、「OpenVINO Archives」を選択。PythonのAPIだけ利用する場合は「PIP」でよいかと。そういえば、前までアカウントの登録を要求された思うんですけどいつの間にか不要になったんですね。
インストールは以下の手順に従う。他のOSやDistributionの場合もそれぞれ別ページに手順が乗っているので、それを参考にする。
以下、コマンドのみ抽出したもの。
# /opt/intelにインストールする
sudo mkdir /opt/intel
# パッケージをダウンロードして/opt/intelに移動
cd <user_home>/Downloads
curl -L https://storage.openvinotoolkit.org/repositories/openvino/packages/2023.1/linux/l_openvino_toolkit_ubuntu20_2023.1.0.12185.47b736f63ed_x86_64.tgz --output openvino_2023.1.0.tgz
tar -xf openvino_2023.1.0.tgz
sudo mv l_openvino_toolkit_ubuntu20_2023.1.0.12185.47b736f63ed_x86_64 /opt/intel/openvino_2023.1.0
# 依存パッケージをインストール
cd /opt/intel/openvino_2023.1.0
sudo -E ./install_dependencies/install_openvino_dependencies.sh
デモプログラムのビルド
以下手順でデモプログラムをビルドできる。
全デモプログラムをビルドする場合はbuild_samples.sh
を使えば早い。<user_home>/openvino_cpp_samples_build/intel64/Release
にインストールされる。
cd /opt/intel/openvino_2023.1.0
source setupvars.sh
cd samples/cpp
./build_samples.sh
Open Model Zoo(OMZ)
OMZをインストールすることで、より多くのサンプルプログラムも動かすことができます。
インストール
# OMZのリポジトリをクローン
cd <user_home>/
git clone --recurse-submodules https://github.com/openvinotoolkit/open_model_zoo.git
OMZのモデルがダウンロードできるツールomz_downloader
を使いたい場合は、pipでopenvino-dev
をインストールしておきます。
# 適当な場所にvenv環境を作る
cd <user_home>/open_model_zoo
python3 -m venv venv
source venv/bin/activate
pip install openvino-dev
また、デモプログラムの一部でOpenCVを使って動画の読み込みを行うので、OpenCVをビルドインストールしておきます。今回はVideoIOのバックエンドにFFmpegを使います。
# 必要なパッケージインストール
sudo apt install nasm libgtk2.0-dev
# OpenH264のビルドインストール
cd ~
git clone -b v2.3.1 https://github.com/cisco/openh264
cd openh264
make -j4
sudo make install
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
# FFmpegのビルドインストール
cd ~
git clone -b n4.3.5 https://github.com/FFmpeg/FFmpeg ffmpeg-n4.3.5
cd ffmpeg-n4.3.5
./configure \
--enable-libopenh264 \
--enable-optimizations \
--enable-static \
--enable-version3 \
--enable-shared \
--disable-gpl \
--disable-logging \
--disable-doc \
--disable-htmlpages \
--disable-manpages \
--disable-podpages \
--disable-txtpages \
--disable-avdevice \
--disable-postproc \
--disable-bzlib \
--disable-iconv \
--disable-cuda \
--disable-cuvid \
--disable-debug \
--extra-ldflags="-static-libgcc -static-libstdc++"
make -j4
sudo make install
# OpenCVのビルドインストール
cd ~
wget https://github.com/opencv/opencv/archive/4.6.0.zip -O opencv-4.6.0.zip
unzip opencv-4.6.0.zip
cd opencv-4.6.0
mkdir build
cd build
cmake \
-DCMAKE_BUILD_TYPE=RELEASE \
-DOPENCV_FFMPEG_USE_FIND_PACKAGE=ON \
-DBUILD_DOCS=OFF \
-DBUILD_TESTS=OFF \
-DBUILD_EXAMPLES=OFF \
-DBUILD_JAVA=OFF \
-DWITH_1394=OFF \
-DWITH_CUDA=OFF \
-DWITH_CUFFT=OFF \
-DWITH_FFMPEG=ON \
-DWITH_GSTREAMERE=OFF \
-DWITH_GTK=ON \
-DWITH_IPP=OFF \
-DWITH_JASPERE=OFF \
-DWITH_JPEG=ON \
-DWITH_OPENEXR=OFF \
-DWITH_PNG=ON \
-DWITH_TIFF=ON \
-DWITH_V4L=OFF \
-DWITH_GPHOTO2=OFF \
-DWITH_CUBLAS=OFF \
-DWITH_VTK=OFF \
-DWITH_NVCUVID=OFF \
..
# 以下のログが出力され、FFmpegを認識していることが確認できる
# -- GUI: GTK2
# -- GTK+: YES (ver 2.24.32)
# -- GThread : YES (ver 2.64.6)
# -- GtkGlExt: NO
# (略)
# -- Video I/O:
# -- FFMPEG: YES (find_package)
# -- avcodec: YES (58.91.100)
# -- avformat: YES (58.45.100)
# -- avutil: YES (56.51.100)
# -- swscale: YES (5.7.100)
# -- avresample: NO
# -- GStreamer: NO
make -j4
sudo make install
デモプログラムのビルド
こちらも全デモプログラムをビルドする場合はbuild_samples.sh
を使えば早い。
source /opt/intel/openvino_2023.1.0/setupvars.sh
cd <user_home>/open_model_zoo/demos
./build_demos.sh
OMZのサンプルプログラムを動かしてみる
デモの一覧はインストールガイドのサイトから確認できます。
Object Detection
物体検知のタスクを試してみます。PythonとC++がありますが、今回はC++で。
デモ個別のページには、そのデモプログラムが対応しているモデルの情報などが閲覧できます。
今回はperson-detection-0303を使います。omz_downloader
を使ってモデルをダウンロードしておきます。
omz_downloader --name person-detection-0303
ダウンロードしたモデルは(2023/10/15訂正)ダウンロードしたモデルはカレントディレクトリに<user_home>/open_model_zoo/intel
に保存されます。intel
ディレクトリが生成され、そこに保存されるようでした。
では試しに動かしてみます。
cd <user_home>/Downloads
wget https://github.com/intel-iot-devkit/sample-videos/raw/master/person-bicycle-car-detection.mp4
cd <user_home>/omz_demos_build/intel64/Release
./object_detection_demo -at ssd -i <user_home>/Downloads/person-bicycle-car-detection.mp4 -m <user_home>/open_model_zoo/intel/person-detection-0303/FP32/person-detection-0303.xml
期待どおり人を検知した結果が描画されました。
終わりに
次はデモプログラムを参考に自前のアプリケーション作ってみたい。