ディープラーニング初心者がOpenVINOを使ってみる(その1:インストール編)
今回から数回に分けて「ディープラーニング・アプリケーション開発キット”OpenVINO”」について紹介したいと思います。
実は、数年前に一度トライはしたものの、当時はまだWindowsプラットフォームでの運用が推奨されておらず、Windowsでの動作確認を断念していました。
最近はWindowsやRaspberryPiの運用報告もあるようなのでまた興味が出てきました。
今回は第一回目ということで「OpenVINOのインストール」と「チュートリアルの動作確認」まで行いたいと思います。
ディープラーニングとは
#私がここで説明するまでもないと思いますが、ディープラーニング(deep learning:深層学習)とは、これまで人間が行ってきたタスクをコンピュータに学習させる機械学習手法の一つです。近年は医療での新薬発見や自動車の自動運転技術、自動翻訳など様々な分野に応用されていて、非常に発展してる分野の一つです。
OpenVINO とは
#OpenVINOは、インテルが無償で提供しているディープラーニング・モデルを最適化および展開するためのオープンソースのツールキットです。
Keras、TensorFlow、PyTorch などのフレームワークからディープラーニング・モデルを最適化し、インテルが提供する各種プロセッサやその他のハードウェア・プラットフォームでのパフォーマンスを向上させます。
OpenVINO の基本ワークフローは以下の3ステップで構成されます。
- 事前学習済みモデルの取得
- OpenVINO独自のIRモデルへ変換
- 推論実行とデブロイ
ディープラーニングを始めるにあたって、まずはモデルを取得しなくてはなりません。
自分で独自にモデルを作成して学習(トレーニング)させることも出来ますが、初心者が最初から高度なモデルを作成して学習させるのはかなりハードルの高い作業になります。
そこで、OpenVINO では「Open Model Zoo」と呼ばれる事前学習済みモデルのデータベースを提供しています。
OpenVINO で実行可能なモデルは IR(Intermediate Representation) という形式のモデルです。
IR はxml形式とbin形式の2つのファイルから構成されます。
OpenVINO が提供する「モデル・オプティマイザ(Model Optimizer)」を使って、Keras、TensorFlow、PyTorch などの他の形式のモデルをIR形式に変換します。
「Open Model Zoo」が提供する事前学習済みモデルにはIR形式のモデルも含まれているので、取得してすぐに利用することが可能です。
これから、OpenVINO を動かすための環境を構築していきます。
OpenVINO コア・コンポーネントをダウンロードしてインストールする
#インテルのサイトを参照しながら、Windows用の OpenVINO をインストールしていきます。
(2022/01/07現在では、OpenVINO の最新バージョンは 2022.3.0 のようです)
上記のURLから、アーカイブ・ファイルをダウンロードします。
まず、ダウンロードしたファイルを展開するためのフォルダ
"C:\Program Files (x86)\Intel"
を事前に作成しておきます。(管理者権限で実行します)
mkdir "C:\Program Files (x86)\Intel"
任意のフォルダに移動し、アーカイブ・ファイルをダウンロードします。
(Windows 10 では Ver.1803 以降で curl, tar コマンドが利用できるようになっています)
(上記のURLのリンクを直接クリックしてファイルをダウンロードすることも出来ます)
curl -L https://storage.openvinotoolkit.org/repositories/openvino/packages/2022.3/windows/w_openvino_toolkit_windows_2022.3.0.9052.9752fafe8eb_x86_64.zip --output openvino_2022.3.0.zip
ダウンロードしたアーカイブ・ファイルを解凍し、解凍されたフォルダを「openvino_2022.3.0」にリネームした後、Intelフォルダ下に移動させます。
(管理者権限で実行します)
tar -xf openvino_2022.3.0.zip
ren w_openvino_toolkit_windows_2022.3.0.9052.9752fafe8eb_x86_64 openvino_2022.3.0
move openvino_2022.3.0 "C:\Program Files (x86)\Intel"
解凍したフォルダを移動した後は、ダウンロードしたアーカイブ・ファイルは削除しても大丈夫です。
今後 "C:\Program Files (x86)\Intel\openvino_2022.3.0"
へのアクセスを簡単にするために”シンボリックリンク”を作成します。(管理者権限で実行します)
cd C:\Program Files (x86)\Intel
mklink /D openvino_2022 openvino_2022.3.0
今後は
"C:\Program Files (x86)\Intel\openvino_2022"
でアクセスが出来ます。
環境変数を設定する
#OpenVINO を実行するには、いくつかの環境変数を設定する必要があります。
環境変数を設定するコマンドが用意されていますので、コマンドプロンプトを開き、setupvars.bat バッチファイルを実行して環境変数を一時的に設定します。
(別のコマンドプロンプトを立ち上げた時は、再度以下のコマンドを実行して環境変数を設定します)
"C:\Program Files (x86)\Intel\openvino_2022\setupvars.bat"
Python、Gitをインストールする
#OpenVINO の実行には、C++ もしくは Python が必要です。
今回は Python を使いますので、まだPCに Python が入っていない場合は Python をインストールしてください。
複数のバージョンの Python を併用したい場合は conda などのパッケージ管理ツールを使用した方が便利です。
私は conda を使って Python 3.9.7 をインストールしました。
(Pythonのインストールについては説明を割愛します。他の方の情報を参照ください)
またインターネットからファイルのダウンロードする際には Git を利用しますので、まだ Git をインストールしていない場合は事前に Git をインストールしておいてください。
開発ツールをインストールする
#今回インストールしたランタイムに対応したバージョンの開発ツールをインストールします。
インストールは Python のパッケージ管理ツール pip で行います。
pip install openvino-dev==2022.3.0
ここまでで、OpenVINO のコア・コンポーネントと開発ツールのインストールが完了しました。
続いて、OpenVINO の Jupyter Notebook チュートリアルをインストールしていきます。
OpenVINO notebooksをインストールする
#次のURLを参考にして「OpenVINO notebooks」をインストールします。
任意のフォルダに移動して(例:ドキュメントフォルダ)、OpenVINO Jupyter Notebook チュートリアルをダウンロードします。
git clone --depth=1 https://github.com/openvinotoolkit/openvino_notebooks.git
「openvino_notebooks」フォルダが作成されていることを確認します。
カレントディレクトリを「openvino_notebooks」に移動して、必要なモジュールをインストールします。
(インストールにかなり時間を要します)
cd openvino_notebooks
python -m pip install --upgrade pip wheel setuptools
pip install -r requirements.txt
jupyter lab 起動
#さっそくチュートリアルを実行してみましょう。
チュートリアルの実行には「jupyter lab」を使用します。
jupyter lab は Pythonプログラムをインタラクティブに実行する環境です。
ブラウザ上で結果を確認しつつ、グラフ等も表示できるので便利です。
jupyter lab の詳細についてはここなどを参考にしてください。
次のコマンドを実行して jupyter lab を起動します。
(jupyter lab起動前に「環境を構成する」の章で説明した「setupvars.bat バッチファイル」を実行して、環境変数を設定しておきます)
jupyter lab notebooks
ブラウザに次のような画面が表示されれば jupyter lab は起動できています。
チュートリアルの実行
#OpenVINO 環境が正しくインストールされているかを確認するために、チュートリアルのうちの一つを選んで実行してみます。
jupyter lab で以下のフォルダを選択し、
/201-vision-monodepth/
上記のフォルダの中の
201-vision-monodepth.ipynb
ファイルをダブルクリックして表示させます。
jupyter lab の一番右のタブに「201-vision-monodepth.ipynb」が表示されていると思います。
Monodepth Estimation(単眼深度推定) のチュートリアルになります。
単眼深度推定とは単眼カメラの情報から深度(奥行き)を推定するもののようです。
(ここはOpenVINO環境のセットアップの確認が目的なので、本チュートリアルの詳細の説明は次回以降に譲ります)
タブの「▶▶」ボタンを押します。
次のようなダイアログが表示された場合は「Restart」を押します。
(PCの性能によって、この後多少時間がかかります)
タブの中のセル(jupyterのコマンドを記述していく単位)の左端の「[ ]」の中に、数字が連番で付番されていきます。
番号が付番されたセルは実行済を意味します。
シートの一番最後までスクロールして、次のようなVideo(mp4ファイル)が表示されていたら正常に実行できています。
(正常に実行できていない場合は、シートの中にエラーが表示されます。大抵は Pythonモジュールが正常にインストールできていないので、モジュールが正常にインストール出来ているか確認してください)
上記のVideoの「▶」ボタンを押して、動画が再生されることを確認してください。
数秒間の動画ですが、左半分がオリジナル動画で、右半分が「Monodepth Estimation(単眼深度推定)」した結果になります。
まとめ
#今回は OpenVINO 環境の構築とチュートリアルの動作確認を行いました。
OpenVINO は GPUやVPU、NCS2(Neural Compute Stick 2)もサポートしているようなので、手持ちの NCS2 で動作確認も実施してみたいと思います。(NCS2 での動作確認では実は色々とハマりました。ハマった件については次回以降にご紹介します)
ディープラーニングは奥が深いので、今後は順次チュートリアルを解析しつつ、その魅力に迫っていきたいと思います。