2020-03-26

Intel NCS2 を使ってみた

Intel Neural Compute Stick 2 (Intel NCS2) は、2018 年 11 月 14 日(現地時間)に中国の北京で開幕された AI 開発者向けカンファレンスで発表されました [3]。同社の Movidius Myriad X Vision Processing Unit を、コンピュータに挿入できる USB アクセサリに組み込んだ製品で、USB に挿入してディープニューラルネットワーク (DNN) のアクセラレータとして使えるとのことです。

Vision Processing Unit (VPU) とは、ASCII.jpデジタル用語辞典によると、

高速で高解像度のグラフィック処理が可能なハイエンド向けのビデオチップの総称。カナダの ATI Technologies 社が名付けた。代表的なものに、DirectX 9 に対応した RADEON 9700 シリーズがある。

とあります。日本語の Wikipedia のサイトで VPU を検索すると GPU のページに転送されるので、双方は同じような意味なのでしょう。

手ごろな値段だったので、これはぜひ試してみたいと衝動的に Amazon.jp で買ってしまいました [2020-03-20]。

動作確認にてこずる

ハードウェア的には USB ポートに挿入するだけで手軽に利用できるのですが、ソフトウェア的にちゃんと動くのか確信を持てるまでに大変時間が掛かってしまいました。とは言え、発売から一年以上経過しており、出回っている情報が多いことにずいぶんと助けられました。ここでは、ようやくまともに動いた結果を整理しました。スクリプトの実行状況をやや冗長に記載していますがご容赦ください。

動作環境

Intel NCS2 を動かすために必要となる、Intel OpenVINO Toolkit は、Windows / Linux / Mac OS に対応していますが、Linux のディストリビューションに制約があります。Ubuntu 16.04/18.04, CentOS 7.4 および Yocto Project v3.0(いずれも 64bit 版)が対応しているということで、扱いなれている Ubuntu 18.04 と CentOS 7.4 のイメージを書き込んだ USB メモリを用意しました。最初はうまくいかず、何度も懲りずに Ubuntu と Fedora を代わる代わるテスト機にインストールし直して試行錯誤した結果、最終的にもっともスムーズにインストールできた Ubuntu 18.04 に落ち着きました。うまくいかなかった個所は後述します。

OS Ubuntu 18.04 (x86_64) ubuntu-18.04.4-desktop-amd64.iso

Windows にも対応しているので試してみたかったのですが、自宅にあるのは C ドライブが 32GB しかないチープな PC だけで、Windows OS だけで半分以上のストレージ領域を占有していたので試すのを諦めました。

OpenVINO Toolkit のインストールと確認

OpenVINO toolkit (Open Visual Inference and Neural network Optimization toolkit) は、動画像データからディープラーニングによる推論を容易に実施できるようにするためのツールキットで、Intel が自社の CPU 向けに使えるように開発したものです。購入した Intel NCS2 を試すには、この OpenVINO Toolkit をインストールして、使える環境を準備する必要があります。

パッケージのダウンロード

下記 OpenVINO Toolkit をダウンロードするページで、右側の Linux* をクリックすると Linux ベースのプラットフォーム向けのダウンロードのサイトに移ります。

Register & Download をクリックすると登録ページが表示されるので必要事項を入力後 Submit をクリックすると、ダウンロードのページに辿り着きます。ここで、最新の 2020.1 の Full Package l_openvino_toolkit_p_2020.1.023.tgz をダウンロードしました。

インストール

OpenVINO のインストールは、ダウンロードしたバージョン 2020.1 に対応している下記のサイトに沿って進めます。

まず、ダウンロードしたパッケージを下記のように展開して、展開したフォルダ内にディレクトリを移します。

[bitwalk@ubuntu-pc ダウンロード]$ tar zxvf l_openvino_toolkit_p_2020.1.023.tgz
l_openvino_toolkit_p_2020.1.023/
l_openvino_toolkit_p_2020.1.023/pset/
l_openvino_toolkit_p_2020.1.023/pset/32e/
l_openvino_toolkit_p_2020.1.023/pset/32e/libz/
...
(途中省略)
...
l_openvino_toolkit_p_2020.1.023/EULA.txt
l_openvino_toolkit_p_2020.1.023/PUBLIC_KEY.PUB
l_openvino_toolkit_p_2020.1.023/install.sh
l_openvino_toolkit_p_2020.1.023/install_GUI.sh
l_openvino_toolkit_p_2020.1.023/install_openvino_dependencies.sh
l_openvino_toolkit_p_2020.1.023/silent.cfg
[bitwalk@ubuntu-pc ダウンロード]$ cd l_openvino_toolkit_p_2020.1.023
[bitwalk@ubuntu-pc l_openvino_toolkit_p_2020.1.023]$ ls
EULA.txt        install.sh      install_openvino_dependencies.sh  rpm
PUBLIC_KEY.PUB  install_GUI.sh  pset                              silent.cfg
[bitwalk@ubuntu-pc l_openvino_toolkit_p_2020.1.023]$

sudo で GUI インストーラを起動します。

bitwalk@ubuntu-pc:~/ダウンロード/l_openvino_toolkit_p_2020.1.023$ sudo ./install_GUI.sh

GUI が起動するので、表示に従って画面を進めてインストールします。特にカスタマイズをする個所はありません。インストール先は /opt/intel 以下になります。

インストールが終了すると、インターネットブラウザが起動されて、Install Intel® Distribution of OpenVINO™ toolkit for Linux* - OpenVINO™ Toolkit が表示されます。

依存するパッケージのインストール

依存するパッケージを次のようにしてインストールします。

bitwalk@ubuntu-pc:~/ダウンロード/l_openvino_toolkit_p_2020.1.023$ cd /opt/intel/openvino/install_dependencies
bitwalk@ubuntu-pc:/opt/intel/openvino/install_dependencies$ sudo -E ./install_openvino_dependencies.sh
[sudo] bitwalk のパスワード: 

This script installs the following OpenVINO 3rd-party dependencies:
  1. GTK+, FFmpeg and GStreamer libraries used by OpenCV
  2. libusb library required for Myriad plugin for Inference Engine
  3. build dependencies for OpenVINO samples

無視:1 http://dl.google.com/linux/chrome/deb stable InRelease
ヒット:2 http://dl.google.com/linux/chrome/deb stable Release
...
(途中省略)
...
gstreamer1.0-plugins-bad はすでに最新バージョン (1.14.5-0ubuntu1~18.04.1) です。
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。
bitwalk@ubuntu-pc:/opt/intel/openvino/install_dependencies$ 

環境変数の設定

まず、下記のようにして OpenVINO の環境を初期化します。

bitwalk@ubuntu-pc:/opt/intel/openvino/install_dependencies$ cd ~/
bitwalk@ubuntu-pc:~$ source /opt/intel/openvino/bin/setupvars.sh
[setupvars.sh] OpenVINO environment initialized
bitwalk@ubuntu-pc:~$ 

.bashrc を vi などのテキストエディタで読み込んで、末尾の行に source /opt/intel/openvino/bin/setupvars.sh を追加して保存します。

モデルオプティマイザの設定

Caffe, TensorFlow, MXNet, Kaldi および ONNX 全てのディープラーニングのフレームワークに対するモデルオプティマイザを設定するスクリプトを実行します。

bitwalk@ubuntu-pc:~$ cd /opt/intel/openvino/deployment_tools/model_optimizer/install_prerequisites
bitwalk@ubuntu-pc:/opt/intel/openvino/deployment_tools/model_optimizer/install_prerequisites$ sudo ./install_prerequisites.sh
[sudo] bitwalk のパスワード: 
無視:1 http://dl.google.com/linux/chrome/deb stable InRelease
ヒット:2 http://dl.google.com/linux/chrome/deb stable Release
...
(途中省略)
...
以下のパッケージが新たにインストールされます:
  dh-python gcc-6-base libexpat1-dev libgfortran3 libpython3-dev
  libpython3.6-dev python-pip-whl python3-dev python3-distutils
  python3-lib2to3 python3-pip python3-setuptools python3-venv python3-wheel
  python3.6-dev python3.6-venv
アップグレード: 0 個、新規インストール: 16 個、削除: 0 個、保留: 0 個。
...
(途中省略)
...
Collecting tensorflow<2.0.0,>=1.2.0 (from -r /opt/intel/openvino_2020.1.023/deployment_tools/model_optimizer/install_prerequisites/../requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/de/f0/96fb2e0412ae9692dbf400e5b04432885f677ad6241c088ccc5fe7724d69/tensorflow-1.14.0-cp36-cp36m-manylinux1_x86_64.whl (109.2MB)
    100% |████████████████████████████████| 109.2MB 5.6kB/s 
...
(途中省略)
...
/opt/intel/openvino_2020.1.023/deployment_tools/model_optimizer/install_prerequisites/../requirements.txt (line 2))
Installing collected packages: absl-py, numpy, markdown, protobuf, grpcio, werkzeug, tensorboard, keras-preprocessing, google-pasta, termcolor, h5py, keras-applications, tensorflow-estimator, wrapt, astor, gast, tensorflow, requests, graphviz, mxnet, decorator, networkx, typing-extensions, onnx, defusedxml
  Running setup.py install for absl-py ... done
  Found existing installation: protobuf 3.0.0
    Not uninstalling protobuf at /usr/lib/python3/dist-packages, outside environment /usr
  Running setup.py install for termcolor ... done
  Running setup.py install for wrapt ... done
  Found existing installation: requests 2.18.4
    Not uninstalling requests at /usr/lib/python3/dist-packages, outside environment /usr
Successfully installed absl-py-0.9.0 astor-0.8.1 decorator-4.4.2 defusedxml-0.6.0 gast-0.3.3 google-pasta-0.2.0 graphviz-0.8.4 grpcio-1.27.2 h5py-2.10.0 keras-applications-1.0.8 keras-preprocessing-1.1.0 markdown-3.2.1 mxnet-1.5.1 networkx-2.4 numpy-1.18.2 onnx-1.6.0 protobuf-3.6.1 requests-2.23.0 tensorboard-1.14.0 tensorflow-1.14.0 tensorflow-estimator-1.14.0 termcolor-1.1.0 typing-extensions-3.7.4.1 werkzeug-1.0.0 wrapt-1.12.1
[WARNING] All Model Optimizer dependencies are installed globally.
[WARNING] If you want to keep Model Optimizer in separate sandbox
[WARNING] run install_prerequisites.sh venv {caffe|tf|mxnet|kaldi|onnx}
bitwalk@ubuntu-pc:/opt/intel/openvino/deployment_tools/model_optimizer/install_prerequisites$ 

正常にインストールできているか検証

検証用のスクリプトを実行して、OpenVINO Toolkit と関連パッケージが正しくインストールされているか、実際に画像を推論して検証します。ここでは PC に搭載されている CPU を使います。

この検証スクリプトは SqueezeNet の学習済みモデルをダウンロードして、モデルオプティマイザで .bin.xml の中間表現 (IR) のファイルに変換します。推論エンジンが Intel のハードウェア上で IR をインプット情報にして最適化されたパフォーマンスを達成するために、このモデル変換をする処理が必要になります。

さらに、非同期で画像を分類するサンプルアプリケーション (the Image Classification Sample Async) をビルドして、同じディレクトリにあるイメージ car.png に対してビルドしたアプリケーションを実行します。このプログラムが終了すると、分類したトップ 10 のカテゴリーの分類ラベルとその確からしさ(信頼度)が出力されます。

pip でグローバルな環境に python のパッケージをインストールしたくない場合は、python の仮想環境で実行してください。その場合、必要なパッケージのインストールは手動で行う必要があります。まっさらの状態で仮想環境を作って実行したところ、次のパッケージ(および依存パッケージ)を pip でインストールする必要がありました。

pyyaml, requests, numpy, networkx, defusedxml, protobuf

bitwalk@ubuntu-pc:/opt/intel/openvino/deployment_tools/model_optimizer/install_prerequisites$ cd /opt/intel/openvino/deployment_tools/demo
bitwalk@ubuntu-pc:/opt/intel/openvino/deployment_tools/demo$ ./demo_squeezenet_download_convert_run.sh
target_precision = FP16
[setupvars.sh] OpenVINO environment initialized


###################################################



Downloading the Caffe model and the prototxt
Installing dependencies
[sudo] bitwalk のパスワード: 
無視:1 http://dl.google.com/linux/chrome/deb stable InRelease
ヒット:2 http://dl.google.com/linux/chrome/deb stable Release
...
(途中省略)
...
以下のパッケージが新たにインストールされます:
  autoconf automake autopoint autotools-dev debhelper dh-autoreconf
  dh-strip-nondeterminism gir1.2-gtk-2.0 gir1.2-harfbuzz-0.0 icu-devtools
  libarchive-cpio-perl libatk1.0-dev libavcodec-dev libavformat-dev
  libavutil-dev libcairo-script-interpreter2 libcairo2-dev
  libfile-stripnondeterminism-perl libfontconfig1-dev libfreetype6-dev
  libgdk-pixbuf2.0-dev libglib2.0-dev libglib2.0-dev-bin libgraphite2-dev
  libgtk2.0-dev libharfbuzz-dev libharfbuzz-gobject0 libice-dev libicu-dev
  libicu-le-hb-dev libicu-le-hb0 libiculx60 libltdl-dev libmail-sendmail-perl
  libpango1.0-dev libpcre16-3 libpcre3-dev libpcre32-3 libpcrecpp0v5
  libpixman-1-dev libpng-dev libpng-tools libpthread-stubs0-dev libsigsegv2
  libsm-dev libswresample-dev libswscale-dev libsys-hostname-long-perl libtool
  libx11-dev libx11-doc libxau-dev libxcb-render0-dev libxcb-shm0-dev
  libxcb1-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxdmcp-dev
  libxext-dev libxfixes-dev libxft-dev libxi-dev libxinerama-dev libxml2-utils
  libxrandr-dev libxrender-dev m4 pkg-config po-debconf python3-virtualenv
  virtualenv x11proto-composite-dev x11proto-core-dev x11proto-damage-dev
  x11proto-dev x11proto-fixes-dev x11proto-input-dev x11proto-randr-dev
  x11proto-xext-dev x11proto-xinerama-dev xorg-sgml-doctools xtrans-dev
  zlib1g-dev
アップグレード: 0 個、新規インストール: 84 個、削除: 0 個、保留: 0 個。
...
(途中省略)
...
状態情報を読み取っています... 完了
libpng-dev はすでに最新バージョン (1.6.34-1ubuntu0.18.04.2) です。
libpng-dev は手動でインストールしたと設定されました。
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。
The directory '/home/bitwalk/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
...
(途中省略)
...
Run python3 /opt/intel/openvino_2020.1.023/deployment_tools/open_model_zoo/tools/downloader/downloader.py --name squeezenet1.1 --output_dir /home/bitwalk/openvino_models/models --cache_dir /home/bitwalk/openvino_models/cache

################|| Downloading models ||################

========== Downloading /home/bitwalk/openvino_models/models/public/squeezenet1.1/squeezenet1.1.prototxt
... 100%, 9 KB, 9457 KB/s, 0 seconds passed

========== Downloading /home/bitwalk/openvino_models/models/public/squeezenet1.1/squeezenet1.1.caffemodel
... 100%, 4834 KB, 10314 KB/s, 0 seconds passed

################|| Post-processing ||################

========== Replacing text in /home/bitwalk/openvino_models/models/public/squeezenet1.1/squeezenet1.1.prototxt


###################################################

Install Model Optimizer dependencies

ヒット:1 http://jp.archive.ubuntu.com/ubuntu bionic InRelease
...
(途中省略)
...
python3-venv はすでに最新バージョン (3.6.7-1~18.04) です。
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。
The directory '/home/bitwalk/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
...
(途中省略)
...


###################################################

Convert a model with Model Optimizer

Run python3 /opt/intel/openvino_2020.1.023/deployment_tools/open_model_zoo/tools/downloader/converter.py --mo /opt/intel/openvino_2020.1.023/deployment_tools/model_optimizer/mo.py --name squeezenet1.1 -d /home/bitwalk/openvino_models/models -o /home/bitwalk/openvino_models/ir --precisions FP16

========= Converting squeezenet1.1 to IR (FP16)
Conversion command: /usr/bin/python3 -- /opt/intel/openvino_2020.1.023/deployment_tools/model_optimizer/mo.py --framework=caffe --data_type=FP16 --output_dir=/home/bitwalk/openvino_models/ir/public/squeezenet1.1/FP16 --model_name=squeezenet1.1 '--input_shape=[1,3,227,227]' --input=data '--mean_values=data[104.0,117.0,123.0]' --output=prob --input_model=/home/bitwalk/openvino_models/models/public/squeezenet1.1/squeezenet1.1.caffemodel --input_proto=/home/bitwalk/openvino_models/models/public/squeezenet1.1/squeezenet1.1.prototxt

Model Optimizer arguments:
Common parameters:
 - Path to the Input Model:  /home/bitwalk/openvino_models/models/public/squeezenet1.1/squeezenet1.1.caffemodel
 - Path for generated IR:  /home/bitwalk/openvino_models/ir/public/squeezenet1.1/FP16
 - IR output name:  squeezenet1.1
 - Log level:  ERROR
 - Batch:  Not specified, inherited from the model
 - Input layers:  data
 - Output layers:  prob
 - Input shapes:  [1,3,227,227]
 - Mean values:  data[104.0,117.0,123.0]
 - Scale values:  Not specified
 - Scale factor:  Not specified
 - Precision of IR:  FP16
 - Enable fusing:  True
 - Enable grouped convolutions fusing:  True
 - Move mean values to preprocess section:  False
 - Reverse input channels:  False
Caffe specific parameters:
 - Path to Python Caffe* parser generated from caffe.proto:  /opt/intel/openvino_2020.1.023/deployment_tools/model_optimizer/mo/front/caffe/proto
 - Enable resnet optimization:  True
 - Path to the Input prototxt:  /home/bitwalk/openvino_models/models/public/squeezenet1.1/squeezenet1.1.prototxt
 - Path to CustomLayersMapping.xml:  Default
 - Path to a mean file:  Not specified
 - Offsets for a mean file:  Not specified
Model Optimizer version:  2020.1.0-61-gd349c3ba4a
[ WARNING ]  
Detected not satisfied dependencies:
 protobuf: installed: 3.0.0, required: == 3.6.1

Please install required versions of components or use install_prerequisites script
/opt/intel/openvino_2020.1.023/deployment_tools/model_optimizer/install_prerequisites/install_prerequisites_caffe.sh
Note that install_prerequisites scripts may install additional components.

[ SUCCESS ] Generated IR version 10 model.
[ SUCCESS ] XML file: /home/bitwalk/openvino_models/ir/public/squeezenet1.1/FP16/squeezenet1.1.xml
[ SUCCESS ] BIN file: /home/bitwalk/openvino_models/ir/public/squeezenet1.1/FP16/squeezenet1.1.bin
[ SUCCESS ] Total execution time: 22.41 seconds. 
[ SUCCESS ] Memory consumed: 84 MB. 



###################################################

Build Inference Engine samples

-- The C compiler identification is GNU 7.5.0
...
(途中省略)
...
-- Build files have been written to: /home/bitwalk/inference_engine_samples_build
Scanning dependencies of target gflags_nothreads_static
Scanning dependencies of target format_reader
[  9%] Building CXX object thirdparty/gflags/CMakeFiles/gflags_nothreads_static.dir/src/gflags.cc.o
...
(途中省略)
...
[100%] Built target classification_sample_async


###################################################

Run Inference Engine classification sample

Run ./classification_sample_async -d CPU -i /opt/intel/openvino/deployment_tools/demo/car.png -m /home/bitwalk/openvino_models/ir/public/squeezenet1.1/FP16/squeezenet1.1.xml

[ INFO ] InferenceEngine: 
 API version ............ 2.1
 Build .................. 37988
 Description ....... API
[ INFO ] Parsing input parameters
[ INFO ] Parsing input parameters
[ INFO ] Files were added: 1
[ INFO ]     /opt/intel/openvino/deployment_tools/demo/car.png
[ INFO ] Creating Inference Engine
 CPU
 MKLDNNPlugin version ......... 2.1
 Build ........... 37988

[ INFO ] Loading network files
...
(途中省略)
...
[ INFO ] Completed 10 async request execution
[ INFO ] Processing output blobs

Top 10 results:

Image /opt/intel/openvino/deployment_tools/demo/car.png

classid probability label
------- ----------- -----
817     0.6853041   sports car, sport car
479     0.1835186   car wheel
511     0.0917199   convertible
436     0.0200693   beach wagon, station wagon, wagon, estate car, beach waggon, station waggon, waggon
751     0.0069604   racer, race car, racing car
656     0.0044177   minivan
717     0.0024739   pickup, pickup truck
581     0.0017788   grille, radiator grille
468     0.0013083   cab, hack, taxi, taxicab
661     0.0007443   Model T

[ INFO ] Execution successful

[ INFO ] This sample is an API example, for any performance measurements please use the dedicated benchmark_app tool


###################################################

Demo completed successfully.

bitwalk@ubuntu-pc:/opt/intel/openvino/deployment_tools/demo$ 

推論の対象になっていた画像 car.png を下記に示しました。参考サイト [7] によると、ダウンロードした SqueezeNet の学習済みモデルは、ImageNet の画像を学習していて、そこにはセダンの分類がないため、最も形状が近いスポーツカーが選ばれたのだろうとコメントされています。

推論の対象画像 /opt/intel/openvino/deployment_tools/demo/car.png

推論パイプラインの検証スクリプトの実行

このスクリプトは、IR 形式の学習済みのモデルをダウンロードして、防犯カメラデモのアプリケーションをビルドします。ビルド後、同じディレクトリにあるイメージ car_1.bmp を、ダウンロードしたモデルをパイプラインで次々と、車と特定するところから、さらに車の特性に絞った推論へ進みます。

最初のモデルによる推論は、物体を車だと特定すること。特定した情報は次のモデルのインプット情報になり、この情報から車の特徴(ナンバープレートなど)を特定します。最後のモデルでは、ナンバープレートと特定された情報から、特定の文字列を認識します。

スクリプトの実行が終わると、推論で検出(認識)された部分を縁取った矩形と文字が追加された画像がビューアで表示されます。

bitwalk@ubuntu-pc:/opt/intel/openvino/deployment_tools/demo$ ./demo_security_barrier_camera.sh
[sudo] bitwalk のパスワード: 
無視:1 http://dl.google.com/linux/chrome/deb stable InRelease
...
(途中省略)
...
[setupvars.sh] OpenVINO environment initialized


###################################################

Downloading Intel models

target_precision = FP16
Run python3 /opt/intel/openvino_2020.1.023/deployment_tools/open_model_zoo/tools/downloader/downloader.py --name vehicle-license-plate-detection-barrier-0106 --output_dir /home/bitwalk/openvino_models/ir --cache_dir /home/bitwalk/openvino_models/cache

################|| Downloading models ||################

========== Downloading /home/bitwalk/openvino_models/ir/intel/vehicle-license-plate-detection-barrier-0106/FP32/vehicle-license-plate-detection-barrier-0106.xml
... 100%, 199 KB, 1543 KB/s, 0 seconds passed

========== Downloading /home/bitwalk/openvino_models/ir/intel/vehicle-license-plate-detection-barrier-0106/FP32/vehicle-license-plate-detection-barrier-0106.bin
... 100%, 2513 KB, 6976 KB/s, 0 seconds passed

========== Downloading /home/bitwalk/openvino_models/ir/intel/vehicle-license-plate-detection-barrier-0106/FP16/vehicle-license-plate-detection-barrier-0106.xml
... 100%, 199 KB, 2082 KB/s, 0 seconds passed

========== Downloading /home/bitwalk/openvino_models/ir/intel/vehicle-license-plate-detection-barrier-0106/FP16/vehicle-license-plate-detection-barrier-0106.bin
... 100%, 1256 KB, 10745 KB/s, 0 seconds passed

========== Downloading /home/bitwalk/openvino_models/ir/intel/vehicle-license-plate-detection-barrier-0106/FP32-INT8/vehicle-license-plate-detection-barrier-0106.xml
... 100%, 506 KB, 2378 KB/s, 0 seconds passed

========== Downloading /home/bitwalk/openvino_models/ir/intel/vehicle-license-plate-detection-barrier-0106/FP32-INT8/vehicle-license-plate-detection-barrier-0106.bin
... 100%, 2580 KB, 21320 KB/s, 0 seconds passed

################|| Post-processing ||################

Run python3 /opt/intel/openvino_2020.1.023/deployment_tools/open_model_zoo/tools/downloader/downloader.py --name license-plate-recognition-barrier-0001 --output_dir /home/bitwalk/openvino_models/ir --cache_dir /home/bitwalk/openvino_models/cache

################|| Downloading models ||################

========== Downloading /home/bitwalk/openvino_models/ir/intel/license-plate-recognition-barrier-0001/FP32/license-plate-recognition-barrier-0001.xml
... 100%, 47 KB, 642 KB/s, 0 seconds passed

========== Downloading /home/bitwalk/openvino_models/ir/intel/license-plate-recognition-barrier-0001/FP32/license-plate-recognition-barrier-0001.bin
... 100%, 4757 KB, 19380 KB/s, 0 seconds passed

========== Downloading /home/bitwalk/openvino_models/ir/intel/license-plate-recognition-barrier-0001/FP16/license-plate-recognition-barrier-0001.xml
... 100%, 47 KB, 841 KB/s, 0 seconds passed

========== Downloading /home/bitwalk/openvino_models/ir/intel/license-plate-recognition-barrier-0001/FP16/license-plate-recognition-barrier-0001.bin
... 100%, 2378 KB, 22212 KB/s, 0 seconds passed

========== Downloading /home/bitwalk/openvino_models/ir/intel/license-plate-recognition-barrier-0001/FP32-INT8/license-plate-recognition-barrier-0001.xml
... 100%, 102 KB, 989 KB/s, 0 seconds passed

========== Downloading /home/bitwalk/openvino_models/ir/intel/license-plate-recognition-barrier-0001/FP32-INT8/license-plate-recognition-barrier-0001.bin
... 100%, 4768 KB, 19780 KB/s, 0 seconds passed

################|| Post-processing ||################

Run python3 /opt/intel/openvino_2020.1.023/deployment_tools/open_model_zoo/tools/downloader/downloader.py --name vehicle-attributes-recognition-barrier-0039 --output_dir /home/bitwalk/openvino_models/ir --cache_dir /home/bitwalk/openvino_models/cache

################|| Downloading models ||################

========== Downloading /home/bitwalk/openvino_models/ir/intel/vehicle-attributes-recognition-barrier-0039/FP32/vehicle-attributes-recognition-barrier-0039.xml
... 100%, 32 KB, 3033 KB/s, 0 seconds passed

========== Downloading /home/bitwalk/openvino_models/ir/intel/vehicle-attributes-recognition-barrier-0039/FP32/vehicle-attributes-recognition-barrier-0039.bin
... 100%, 2445 KB, 16956 KB/s, 0 seconds passed

========== Downloading /home/bitwalk/openvino_models/ir/intel/vehicle-attributes-recognition-barrier-0039/FP16/vehicle-attributes-recognition-barrier-0039.xml
... 100%, 32 KB, 316 KB/s, 0 seconds passed

========== Downloading /home/bitwalk/openvino_models/ir/intel/vehicle-attributes-recognition-barrier-0039/FP16/vehicle-attributes-recognition-barrier-0039.bin
... 100%, 1222 KB, 28955 KB/s, 0 seconds passed

========== Downloading /home/bitwalk/openvino_models/ir/intel/vehicle-attributes-recognition-barrier-0039/FP32-INT8/vehicle-attributes-recognition-barrier-0039.xml
... 100%, 85 KB, 838 KB/s, 0 seconds passedd

========== Downloading /home/bitwalk/openvino_models/ir/intel/vehicle-attributes-recognition-barrier-0039/FP32-INT8/vehicle-attributes-recognition-barrier-0039.bin
... 100%, 2453 KB, 24421 KB/s, 0 seconds passed

################|| Post-processing ||################



###################################################

Build Inference Engine demos

-- The C compiler identification is GNU 7.5.0
...
(途中省略)
...
-- Build files have been written to: /home/bitwalk/inference_engine_demos_build
Scanning dependencies of target gflags_nothreads_static
Scanning dependencies of target monitors
[ 10%] Building CXX object thirdparty/gflags/CMakeFiles/gflags_nothreads_static.dir/src/gflags_reporting.cc.o
...
(途中省略)
...
[ 80%] Built target monitors
Scanning dependencies of target security_barrier_camera_demo
[ 90%] Building CXX object security_barrier_camera_demo/CMakeFiles/security_barrier_camera_demo.dir/main.cpp.o
[100%] Linking CXX executable ../intel64/Release/security_barrier_camera_demo
[100%] Built target security_barrier_camera_demo


###################################################

Run Inference Engine security_barrier_camera demo

Run ./security_barrier_camera_demo -d CPU -d_va CPU -d_lpr CPU -i /opt/intel/openvino/deployment_tools/demo/car_1.bmp -m /home/bitwalk/openvino_models/ir/intel/vehicle-license-plate-detection-barrier-0106/FP16/vehicle-license-plate-detection-barrier-0106.xml -m_lpr /home/bitwalk/openvino_models/ir/intel/license-plate-recognition-barrier-0001/FP16/license-plate-recognition-barrier-0001.xml -m_va /home/bitwalk/openvino_models/ir/intel/vehicle-attributes-recognition-barrier-0039/FP16/vehicle-attributes-recognition-barrier-0039.xml

[ INFO ] InferenceEngine: 0x7fd95c5fd040
[ INFO ] Files were added: 1
[ INFO ]     /opt/intel/openvino/deployment_tools/demo/car_1.bmp
[ INFO ] Loading device CPU
 CPU
 MKLDNNPlugin version ......... 2.1
 Build ........... 37988

[ INFO ] Loading detection model to the CPU plugin
[ INFO ] Loading Vehicle Attribs model to the CPU plugin
[ INFO ] Loading Licence Plate Recognition (LPR) model to the CPU plugin
[ INFO ] Number of InferRequests: 1 (detection), 3 (classification), 3 (recognition)
[ INFO ] 1 streams for CPU
[ INFO ] Display resolution: 1920x1080
[ INFO ] Number of allocated frames: 3
[ INFO ] Resizable input with support of ROI crop and auto resize is disabled
0.0FPS for (1 / 1) frames
Detection InferRequests usage: 100.0%

[ INFO ] Execution successful


###################################################

Demo completed successfully.

bitwalk@ubuntu-pc:/opt/intel/openvino/deployment_tools/demo$ 
防犯カメラデモによる車のナンバープレートの認識

3.1 FPS と妙に低いフレームレートですが、これは使用したテスト PC の CPU が Celeron N3050 という大変非力なものだからです。

使用しているテスト PC

NCS2 の導入

OpenVINO toolkit の環境が整ったので、いよいよ NCS2 の導入です。NCS2 を USB3 ポートに挿入して、デバイスが認識されているか確認しました。名前は表示されませんが、ID 03e7:2485 が挿入した NCS2 です。

bitwalk@ubuntu-pc:~$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 8087:0a2a Intel Corp. 
Bus 001 Device 004: ID 0c45:651b Microdia 
Bus 001 Device 003: ID 03e7:2485  
Bus 001 Device 002: ID 0b95:772b ASIX Electronics Corp. AX88772B
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
bitwalk@ubuntu-pc:~$ 

Intel Neural Compute Stick 2 (NCS2) の設定

使っているユーザーアカウントにグループ users を追加します。

bitwalk@ubuntu-pc:~$ id bitwalk
uid=1000(bitwalk) gid=1000(bitwalk) groups=1000(bitwalk),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),116(lpadmin),126(sambashare)
bitwalk@ubuntu-pc:~$ sudo usermod -a -G users "$(whoami)"
[sudo] bitwalk のパスワード: 
bitwalk@ubuntu-pc:~$ id bitwalk
uid=1000(bitwalk) gid=1000(bitwalk) groups=1000(bitwalk),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),100(users),116(lpadmin),126(sambashare)

NCS2 をグループ users でアクセスできるようにパーミッションを設定した udev のルールを登録します。

bitwalk@ubuntu-pc:~$ cat /opt/intel/openvino/inference_engine/external/97-myriad-usbboot.rules
SUBSYSTEM=="usb", ATTRS{idProduct}=="2150", ATTRS{idVendor}=="03e7", GROUP="users", MODE="0660", ENV{ID_MM_DEVICE_IGNORE}="1"
SUBSYSTEM=="usb", ATTRS{idProduct}=="2485", ATTRS{idVendor}=="03e7", GROUP="users", MODE="0660", ENV{ID_MM_DEVICE_IGNORE}="1"
SUBSYSTEM=="usb", ATTRS{idProduct}=="f63b", ATTRS{idVendor}=="03e7", GROUP="users", MODE="0660", ENV{ID_MM_DEVICE_IGNORE}="1"
bitwalk@ubuntu-pc:~$ sudo cp /opt/intel/openvino/inference_engine/external/97-myriad-usbboot.rules /etc/udev/rules.d/
bitwalk@ubuntu-pc:~$ sudo udevadm control --reload-rules
bitwalk@ubuntu-pc:~$ sudo udevadm trigger
bitwalk@ubuntu-pc:~$ sudo ldconfig
bitwalk@ubuntu-pc:~$ sudo reboot

該当する ipProduct だけ登録しておけば良いようにも思いましたが、とりあえずそのままにしました。

Movidius Myriad X VPU にアクセスするデバイスドライバのビルドとインストール

スクリプト install_IVAD_VPU_dependencies.sh を実行して、デバイスドライバをビルドするために必要な依存するパッケージをインストールします。

bitwalk@ubuntu-pc:~$ source /opt/intel/openvino/bin/setupvars.sh
[setupvars.sh] OpenVINO environment initialized
bitwalk@ubuntu-pc:~$ ${HDDL_INSTALL_DIR}/install_IVAD_VPU_dependencies.sh
Ubuntu18.04
[sudo] bitwalk のパスワード: 
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
libjson-c3 はすでに最新バージョン (0.12.1-1.3) です。
...
(途中省略)
...
libc-bin (2.27-3ubuntu1) のトリガを処理しています ...
Copying to /etc/udev/rules.d/98-hddlbsl.rules
kill: 使用法: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... または kill -l [sigspec]
Running install for component drv_ion
if [[ "" != "" ]]; then sudo rmmod myd_ion; fi;
make[1]: ディレクトリ '/opt/intel/openvino_2020.1.023/deployment_tools/inference_engine/external/hddl/drivers/drv_ion' に入ります
...
(途中省略)
...
make[2]: ディレクトリ '/usr/src/linux-headers-5.3.0-42-generic' から出ます
>>> end building NODEBUG ION driver <<<
make[1]: ディレクトリ '/opt/intel/openvino_2020.1.023/deployment_tools/inference_engine/external/hddl/drivers/drv_ion' から出ます
mkdir -p /lib/modules/5.3.0-42-generic/kernel/drivers/myd/
cp myd_ion.ko /lib/modules/5.3.0-42-generic/kernel/drivers/myd/myd_ion.ko
sudo depmod
filename:       /lib/modules/5.3.0-42-generic/kernel/drivers/myd/myd_ion.ko
license:        GPL
license:        GPL
license:        GPL
license:        GPL
license:        GPL
description:    ION Driver porting
author:         eason
license:        GPL
license:        GPL
license:        GPL
srcversion:     85DD42C691D12BB4D463C3B
depends:        
retpoline:      Y
name:           myd_ion
vermagic:       5.3.0-42-generic SMP mod_unload 
mkdir -p /etc/modules-load.d/
cat /etc/modules-load.d/myd_ion.conf
myd_ion
   Driver myd_ion.ko is installed to /lib/modules/5.3.0-42-generic/kernel/drivers/myd/myd_ion.ko 
   /etc/modules-load.d/myd_ion.conf is created for auto-load at boot time 
Running install for component drv_vsc
if [[ "" != "" ]]; then sudo rmmod myd_vsc; fi;
make[1]: ディレクトリ '/opt/intel/openvino_2020.1.023/deployment_tools/inference_engine/external/hddl/drivers/drv_vsc' に入ります
...
(途中省略)
...
mkdir -p /lib/modules/5.3.0-42-generic/kernel/drivers/myd/
cp myd_vsc.ko /lib/modules/5.3.0-42-generic/kernel/drivers/myd/myd_vsc.ko
   Driver myd_vsc.ko is installed to /lib/modules/5.3.0-42-generic/kernel/drivers/myd/myd_vsc.ko 
sudo depmod
filename:       /lib/modules/5.3.0-42-generic/kernel/drivers/myd/myd_vsc.ko
license:        GPL
srcversion:     43AE0E7C58AE1F604AA1D61
alias:          usb:v03E7pF63Bd*dc*dsc*dp*ic*isc*ip*in*
depends:        
retpoline:      Y
name:           myd_vsc
vermagic:       5.3.0-42-generic SMP mod_unload 
mkdir -p /etc/modules-load.d/
   /etc/modules-load.d/myd_vsc.conf is created for auto-load at boot time 
'/opt/intel/openvino_2020.1.023/deployment_tools/inference_engine/external/hddl/../97-myriad-usbboot.rules' -> '/etc/udev/rules.d/97-myriad-usbboot.rules'
'/opt/intel/openvino_2020.1.023/deployment_tools/inference_engine/external/hddl/etc/udev/rules.d/99-hddl-ion.rules' -> '/etc/udev/rules.d/99-hddl-ion.rules'
'/opt/intel/openvino_2020.1.023/deployment_tools/inference_engine/external/hddl/etc/udev/rules.d/99-myriad-vsc.rules' -> '/etc/udev/rules.d/99-myriad-vsc.rules'
=======================================
Install HDDL dependencies sucessful
Please reboot

'Please reboot' のメッセージが出てスクリプトが終了したので再起動します。

再起動後、下記のようにデバイスドライバをビルドしてインストールします。

bitwalk@ubuntu-pc:~$ cd ${HDDL_INSTALL_DIR}/drivers
bitwalk@ubuntu-pc:/opt/intel/openvino_2020.1.023/deployment_tools/inference_engine/external/hddl/drivers$ sudo ./setup.sh install
Running install for component drv_ion
if [[ "myd_ion                53248  0" != "" ]]; then sudo rmmod myd_ion; fi;
make[1]: ディレクトリ '/opt/intel/openvino_2020.1.023/deployment_tools/inference_engine/external/hddl/drivers/drv_ion' に入ります
...
(途中省略)
...
mkdir -p /lib/modules/5.3.0-42-generic/kernel/drivers/myd/
cp myd_ion.ko /lib/modules/5.3.0-42-generic/kernel/drivers/myd/myd_ion.ko
sudo depmod
filename:       /lib/modules/5.3.0-42-generic/kernel/drivers/myd/myd_ion.ko
license:        GPL
license:        GPL
license:        GPL
license:        GPL
license:        GPL
description:    ION Driver porting
author:         eason
license:        GPL
license:        GPL
license:        GPL
srcversion:     85DD42C691D12BB4D463C3B
depends:        
retpoline:      Y
name:           myd_ion
vermagic:       5.3.0-42-generic SMP mod_unload 
mkdir -p /etc/modules-load.d/
cat /etc/modules-load.d/myd_ion.conf
myd_ion
   Driver myd_ion.ko is installed to /lib/modules/5.3.0-42-generic/kernel/drivers/myd/myd_ion.ko 
   /etc/modules-load.d/myd_ion.conf is created for auto-load at boot time 
Running install for component drv_vsc
if [[ "myd_vsc                20480  0" != "" ]]; then sudo rmmod myd_vsc; fi;
make[1]: ディレクトリ '/opt/intel/openvino_2020.1.023/deployment_tools/inference_engine/external/hddl/drivers/drv_vsc' に入ります
...
(途中省略)
...
mkdir -p /lib/modules/5.3.0-42-generic/kernel/drivers/myd/
cp myd_vsc.ko /lib/modules/5.3.0-42-generic/kernel/drivers/myd/myd_vsc.ko
   Driver myd_vsc.ko is installed to /lib/modules/5.3.0-42-generic/kernel/drivers/myd/myd_vsc.ko 
sudo depmod
filename:       /lib/modules/5.3.0-42-generic/kernel/drivers/myd/myd_vsc.ko
license:        GPL
srcversion:     43AE0E7C58AE1F604AA1D61
alias:          usb:v03E7pF63Bd*dc*dsc*dp*ic*isc*ip*in*
depends:        
retpoline:      Y
name:           myd_vsc
vermagic:       5.3.0-42-generic SMP mod_unload 
mkdir -p /etc/modules-load.d/
   /etc/modules-load.d/myd_vsc.conf is created for auto-load at boot time 
bitwalk@ubuntu-pc:/opt/intel/openvino_2020.1.023/deployment_tools/inference_engine/external/hddl/drivers$ 

検証用のサンプルスクリプトを再実行

NCS2 のデバイスドライバをビルドしてインストールしたので、OpenVINO toolkit をインストールした後に検証用に実行した 2 つのデモプログラムを、-d オプションでデバイスを指定してもう一度実行します。

ダウンロードした OpenVINO toolkit バージョン 2020.1 に対応しているインストールガイド Install Intel® Distribution of OpenVINO™ toolkit for Linux* - OpenVINO™ Toolkit によると、Steps for Intel® Vision Accelerator Design with Intel® Movidius™ VPUs のセクションで、デバイスの指定は -d HDDL となっています。ところが、HDDL というデバイス名を認識しませんでした。

何度インストールし直しても状況は改善されず、諦めかけたところ、参考サイト [8]-d MYRIAD で動作したという記事を見つけました。ダメ元で試してみたところ、無事認識されたのでした。ということで、以下はインストールガイドと異なり、NCS2 のデバイス指定を -d MYRIAD としています。

bitwalk@ubuntu-pc:~$ cd /opt/intel/openvino/deployment_tools/demo
bitwalk@ubuntu-pc:/opt/intel/openvino/deployment_tools/demo$ ./demo_squeezenet_download_convert_run.sh -d MYRIAD
target = MYRIAD
target_precision = FP16
[setupvars.sh] OpenVINO environment initialized

...
(途中省略)
...

Top 10 results:

Image /opt/intel/openvino/deployment_tools/demo/car.png

classid probability label
------- ----------- -----
817     0.6708984   sports car, sport car
479     0.1922607   car wheel
511     0.0936890   convertible
436     0.0216064   beach wagon, station wagon, wagon, estate car, beach waggon, station waggon, waggon
751     0.0075760   racer, race car, racing car
656     0.0049667   minivan
717     0.0027428   pickup, pickup truck
581     0.0019779   grille, radiator grille
468     0.0014219   cab, hack, taxi, taxicab
661     0.0008636   Model T

[ INFO ] Execution successful

[ INFO ] This sample is an API example, for any performance measurements please use the dedicated benchmark_app tool


###################################################

Demo completed successfully.

bitwalk@ubuntu-pc:/opt/intel/openvino/deployment_tools/demo$

前回 PC の CPU で実行した時と確からしさ(信頼度)の数字が同一ではありませんが、同じ傾向の結果が出ました。

次に、防犯カメラのデモサンプルも実行してみます。

bitwalk@ubuntu-pc:/opt/intel/openvino/deployment_tools/demo$ ./demo_security_barrier_camera.sh -d MYRIAD
target = MYRIAD
ヒット:1 http://jp.archive.ubuntu.com/ubuntu bionic InRelease
...
(途中省略)
...
[ INFO ] Resizable input with support of ROI crop and auto resize is disabled
0.1FPS for (2 / 1) frames
Detection InferRequests usage: 100.0%

[ INFO ] Execution successful


###################################################

Demo completed successfully.

bitwalk@ubuntu-pc:/opt/intel/openvino/deployment_tools/demo$
防犯カメラデモによる車のナンバープレートの認識 (NCS2)

FPS (frame per second) が処理速度の指標だとすれば NSC2 の VPU のパフォーマンスは VPU / CPU (N3050) = 13.5 / 3.1 ~ 4.4 になります。Celeron N3050 という非力な CPU と比べて NCS2 の VPU は 4 倍ちょっとのパフォーマンスなのかとなんとなくがっかりの結果です。しかし、動作確認用のプログラムをベンチマークにみたてたのが適当なのかどうかも疑問です。

ベンチマーク

サンプルを実行した同じディレクトリに demo_benchmark_app.sh というベンチマーク用のスクリプトらしきものがあったので、これで評価してみました。

まず、なにも指定せず(つまり PC の CPU で)実行しました。

bitwalk@ubuntu-pc:~$ cd /opt/intel/openvino/deployment_tools/demo
bitwalk@ubuntu-pc:/opt/intel/openvino/deployment_tools/demo$ ls
README.txt                         demo_speech_recognition.sh
car.png                            demo_squeezenet_download_convert_run.sh
car_1.bmp                          how_are_you_doing.wav
demo_benchmark_app.sh              squeezenet1.1.labels
demo_security_barrier_camera.conf  utils.sh
demo_security_barrier_camera.sh
bitwalk@ubuntu-pc:/opt/intel/openvino/deployment_tools/demo$ ./demo_benchmark_app.sh
target_precision = FP16
[setupvars.sh] OpenVINO environment initialized


###################################################



Downloading the Caffe model and the prototxt
Installing dependencies
[sudo] bitwalk のパスワード: 
...
(途中省略)
...
Total time: 61694    microseconds

Full device name:       Intel(R) Celeron(R) CPU  N3050  @ 1.60GHz

Count:      1000 iterations
Duration:   61927.52 ms
Latency:    57.69 ms
Throughput: 16.15 FPS
Peak Virtual Memory (VmPeak) Size, kBytes: 408600
Peak Resident Memory (VmHWM) Size, kBytes:  61360


###################################################

Inference Engine benchmark app completed successfully.

bitwalk@ubuntu-pc:/opt/intel/openvino/deployment_tools/demo$

次に -d MYRIAD を付けて NCS2 の VPU に対してベンチマークを実行しました。

bitwalk@ubuntu-pc:/opt/intel/openvino/deployment_tools/demo$ ./demo_benchmark_app.sh -d MYRIAD
target = MYRIAD
target_precision = FP16
[setupvars.sh] OpenVINO environment initialized


###################################################



Downloading the Caffe model and the prototxt
Installing dependencies
...
(途中省略)
...
Total time: 6895     microseconds

Full device name: Intel Movidius Myriad X VPU

Count:      1000 iterations
Duration:   8451.89 ms
Latency:    33.82 ms
Throughput: 118.32 FPS
Peak Virtual Memory (VmPeak) Size, kBytes: 706488
Peak Resident Memory (VmHWM) Size, kBytes:  33936


###################################################

Inference Engine benchmark app completed successfully.

bitwalk@ubuntu-pc:/opt/intel/openvino/deployment_tools/demo$ 

このベンチマークの指標が FPS (frame per second) だとすれば、VPU / CPU (N3050) = 118.32 / 16.15 ~ 7.3 と Celeron N3050 と比べて NCS2 の VPU は 7 倍ちょっとのパフォーマンスです。数字だけでは目を見張るほどの凄さを感じません。しかし、消費電力を考慮すれば評価が変わりそうです。

ベンチマークの比較は継続的に続けるとして、まずは使いこなせるようになりたいです。Intel NCS2 あるいは OpenVINO に関しては Intel Developer Zone をはじめ、いろいろなサイトから情報を入手できそうですので、そういった情報の助けを借りて勉強します。

参考サイト

  1. インテル、AIにフォーカスしたVPU「Movidius Myriad X」を発表 - ZDNet Japan [2017-08-29]
  2. IntelがMovidius Myriad Xを発表、ディープラーニング機能が組み込まれたコンピュータービジョンチップだ | TechCrunch Japan [2017-08-29]
  3. Intel、AI開発者向けの小型デバイス「Intel Neural Compute Stick 2」を発表:手ごろなコストでDNN推論アプリケーションの開発を支援 - @IT [2018-11-16]
  4. Intel® Neural Compute Stick 2 | Intel® Software
  5. Deep Learning推論用デバイスその1 Intel NCS2 - Qiita [2019-07-03]
  6. Intel® Distribution of OpenVINO™ Toolkit for Linux* | Intel® Distribution of OpenVINO™ Toolkit | Intel® Software
  7. AIを始めよう!OpenVINOのインストールからデモの実行まで[R4対応] - Qiita [2018-12-18]
  8. getting error when i run openVINO demo application(on ubuntu ) with "-d HDDL" option on UP2 board
  9. Intel® Distribution of OpenVINO™ Toolkit

 

 

ブログランキング・にほんブログ村へにほんブログ村

2020-03-22

リリース前の Ubuntu 20.04 を試す

Ubuntu /ʊˈbʊntuː/ は Debian GNU/Linux をベースとした Linux ディストリビューションの 1 つで、カノニカルから支援を受けて開発されています。常に人気のディストリビューションの一つに数えられています [1][2]

今度の 4 月に Ubuntu 20.04 LTS がリリースされる予定ですが、そのβ版のリリース予定が 4 月 2 日とのことです [3]。しかし自分はβ版まで待てず、春分の日をからの三連休で試してみたかったので、リリース前の Ubuntu 20.04 の日々のビルドイメージを ISO イメージで配布しているサイト [4] から ISO イメージをダウンロードして、USB メモリに書き込んでテスト機にインストールしてみました。

Ubuntu 20.04(開発版)のデスクトップ (1)
Ubuntu 20.04(開発版)のデスクトップ (2)

デスクトップの GNOME は 3.36 になっています。GNOME のテーマ Yaru に改良が加わっています。LTS (Long Term Support) 版では大きな変更点は無く、先 5 年間のメンテナンスを開発者がコミットできることを重視しているようです。

「ソフトウェア(ストア)」の他に、「Snap ストア」がアプリ一覧にあります。Snap (Snappy) パッケージは、apt で管理される deb パッケージと異なり、自己完結型のパッケージです。

Snap ストア

Ubuntu Core で採用している Snap の成果を、従来のディストリビューションにも反映しているのでしょう。

参考サイト

  1. The 8 Most Popular Linux Distros Available Out There for 2020
  2. Usage Statistics and Market Share of Linux for Websites
  3. ubuntu-20.04-beta : Ubuntu
  4. Index of /daily-live/current: CD images for Ubuntu 20.04 LTS (Focal Fossa) Daily Build
  5. Ubuntu 20.04 Release Date & Planned Features (Updated) - OMG! Ubuntu!
  6. Ubuntu 20.04 LTSのリリースと新機能(随時更新) | Ubuntuアプリのいいところ
  7. GitHub - ubuntu/yaru: Ubuntu community theme "yaru". Better than a burrito.
  8. Ubuntu 18.04 LTSベースの「Ubuntu Core 18」リリース--10年間のサポートを保証 - ZDNet Japan [2019-01-23]

 

ブログランキング・にほんブログ村へにほんブログ村

2020-03-21

Fedora 32 β版を試す

Fedora /fɪˈdɔːɹə/ は、レッドハットが支援するコミュニティー Fedora プロジェクトによって開発されている RPM 系 Linux ディストリビューションです。Fedora プロジェクトは、おおむね半年ごと(春と秋)に新しいバージョンをリリースしています。

4 月末には Fedora 32 のリリースが予定されています。そのβ版が米国時間で 3 月 17 日にリリースされたので、早速試してみました。Fedora のサイト [1] から Fedora 32 Beta Workstation (x86_64) の ISO イメージ Fedora-Workstation-Live-x86_64-32_Beta-1.2.iso をダウンロードして Fedora Media Writer で USB メモリに書き込んで、メインの PC へクリーンインストールしました。

Fedora 32 Workstation のハイライトは下記の三点です [2][3]

  • メモリ不足の状態からの復旧を容易にする EarlyOOM(デフォルトで有効)[4]
  • SSD に対してウェアレベリングを実現する fs.trim timer(デフォルトで有効)
  • 3 月 11 日にリリースされた GNOME 3.36 の採用

デスクトップ画面のデフォルトの背景がβ版リリース前の若干暗い青系の色から、明い水色に変わりました。

Fedora 32 β版のデスクトップ画面

余談ですが、濃い青色が Fedora のイメージカラーとずっと思っていましたが、最近では CentOS 8 の方が青っぽくなってしまいました。

Gnome 3.36 のアプリの一覧(カスタマイズ後)

Fedora 32 の主なプログラミング言語のバージョンをまとめました。

  • Free Pascal Compiler 3.2.0
  • GCC 10
  • LLVM 10
  • Python 3.8
  • Ruby 2.7
  • Golang 1.14
  • Haskell Stackage LTS 14
  • Mono 6.6
  • PHP 7.4
  • データベース
    • MariaDB 10.4
    • PostgreSQL 12

参考サイト

  1. Download Fedora Workstation
  2. Announcing the release of Fedora 32 Beta - Fedora Magazine
  3. 2020年3月18日 Fedora 32 Betaがリリース,正式提供は4月28日予定:Linux Daily Topics|gihyo.jp … 技術評論社
  4. 2020年1月8日 Fedora 32がEarlyOOMをデフォルト実装へ,メモリ不足によるフリーズを回避:Linux Daily Topics|gihyo.jp … 技術評論社
  5. 2020年3月16日 GNOME 3.36 "Gresik"がリリース:Linux Daily Topics|gihyo.jp … 技術評論社

 

ブログランキング・にほんブログ村へにほんブログ村

2020-03-17

GNOME 3.36 を試してみる

GNOME 3.36 'Gresik' の記事 [1] を読んで、新しい‘GNOME を試してみたくなり、β版リリース間近の Fedora 32 へアップグレードしてしまいました。なお Fedora 32 のリリースは、いまのところ 4 月末ごろに予定されています [2]

Fedora 32(ほぼβ版)のデスクトップ

今回のリリースで一番興味があったのは、アプリケーションの一覧で自由にアイコンをグループ化して整理できるようになったことです。いままで、これができなかったことが GNOME の大きな不満でしたが、これで解消されました。(訂正:GNOME 3.34 でやってみたら同じ事ができて唖然。自分が知らなかっただけで、すでに実装されている機能でした。💦)

アプリケーション一覧の整理

参考サイト

  1. GNOME 3.36 'Gresik' is here -- the best Linux desktop environment gets even better
  2. Fedora 32 Schedule: Key

 

ブログランキング・にほんブログ村へにほんブログ村

2020-03-08

【備忘録】イメージの表示 (PyGObject)

GObject (GLib Object System) は、GTK+ のすべてのウィジェットおよび関連するオブジェクトの基底クラスからなるオブジェクトシステムと、言語間の透過的相互運用性を提供するライブラリです。GObject は C 言語で実装されており、バインディングによって他の言語から利用可能となっています。

PyGObject は GObject へのバインディングを提供する Python パッケージです。

Wikipedia より引用・編集

イメージの表示

Gtk.Label は文字列だけでなくイメージも表示できると勝手に思い込んでいましたが、イメージは Gtk.Image() でインスタンスを作成してレイアウトするということを今更ながら認識しました。簡単なサンプルを作って備忘録としてまとめました。

gtk_image.py の実行例
gtk_image.py

参考サイト

  1. Gtk.Image - Classes - Gtk 3.0
  2. Stock Items: GTK+ 3 Reference Manual

 

ブログランキング・にほんブログ村へにほんブログ村