はじめに
オリジナルモデルを使った物体検出をJetson nanoで行うべく、以下を実現しようとしています。
これを実現するために、5回に分けて記事を記載予定で、今回は3つ目の記事です。
第1回:IBM Cloud Annotationsを用いたアノテーション
第2回:Google Colabを用いたモデルの学習
第3回:Jetson nanoの環境構築 ←この記事
第4回:DeepStreamアプリを使いこなす
第5回:学習モデルの変換と物体検出
第3回:Jetson nanoの環境構築
前回は無料でGPUを使えるGoogle Colabを使って、Tensorflowのモデルを学習する事をやってみました。今回は、物体検出に必要なソフトウェアをJetson nanoにインストールしていきます。Tensorflowは開発が早いので、各種ライブラリのバージョンを合わせてインストールする事がポイントです。
JetPackのインストール
まずは、Jetson nanoにJetPack(OS+CUDAなど)をインストールして初期設定をしていきます。JetPackのインストールは、ネットに情報が沢山ありますので、ポイントだけ説明していきますね。
①OSイメージのダウンロード
PCのWebブラウザから、JetPackのサイト「https://developer.nvidia.com/embedded/JetPack」にアクセスし、Jetson nano用のイメージファイルをダウンロードします。この記事執筆時点の最新版は4.4.1でした。
②SDカードへの書き込み
ダウンロードしたイメージファイルをSDカードに書き込みます。SDカードへのイメージの書き込みは、balenaEtcherを使うのが便利ですね。
③Jetson nanoの起動
Jetson nanoにSDカードを挿し電源を接続します。OSが起動すると、初期ウィザードが表示されるので、言語・ロケール・パスワードの設定・ネットワークの設定などを行います。
④パッケージの最新化
起動したらパッケージのアップデートを行います。この辺りはさらっと書いていますが、時間かかりますね💦
1 2 3 4 |
$sudo apt-get update ・・・省略・・・ $sudo apt-get upgrade ・・・省略・・・ |
⑤JTOPのインストール
まずは、Jetson用のリソースモニタであるJTOPをインストールしていきます。JTOPのインストールにはpipが必要ですので、まずはpipをインストールして、次にJTOPをインストールします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$sudo apt-get install python3-pip ・・・省略・・・ $sudo pip3 install jetson-stats Collecting jetson-stats Downloading https://files.pythonhosted.org/packages/6c/1b/d926995bee8983cbd4176c5c3f103f8e5198292057c45d82198baccd1077/jetson-stats-3.0.2.tar.gz (85kB) 100% |████████████████████████████████| 92kB 2.3MB/s Building wheels for collected packages: jetson-stats Running setup.py bdist_wheel for jetson-stats ... done Stored in directory: /root/.cache/pip/wheels/10/b8/2b/ef6fb5ee6a93798ea12e7fd2eb24f87526543f30428ab4a54c Successfully built jetson-stats Installing collected packages: jetson-stats Successfully installed jetson-stats-3.0.2 $ |
⑥環境の確認
JTOPがインストールできたら、JTOPを実行して環境を確認しましょう。カーソルキーの右を押して「6.INFO」のタブを表示すると環境が確認できます。
1 |
$sudo jtop |
私の環境は以下の通りでした。JetPackでインストールすると、CUDAやTensorRTが自動的にインストールされるので、楽ちんですね!
以上でJetPackのインストールは完了です。
DeepStreamのインストール
ここからは、Jetson nanoでGPUを使って高速にDeep Leaningを処理するライブラリであるDeepStreamをインストールしていきます。なぜかJetPackにはDeepStream入っていないんですよね😭
①DeepStreamSDKのダウンロード
nvidiaのDeepStreamSDKのサイト「https://developer.nvidia.com/deepstream-getting-started」にアクセスします。ここで、右側にDeepStreamに必要なCUDAやTensorRTのバージョンが記載されているので、確認します。
画面を下にスクロールしていくと、ソフトウェアライセンスへの承諾のチェックボックスがあるので、これにチェックするとダウンロードボタンが表示されます。この中からJetson用のdebパッケージをダウンロードします。
②必要パッケージのインストール
DeepStreamのインストールの前に、必要なパッケージをインストールします。私の環境では、全てインストール済でしたがが、念のため。
1 2 |
$sudo apt install libssl1.0.0 libgstreamer1.0-0 gstreamer1.0-tools gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav libgstrtspserver-1.0-0 libjansson4=2.11-1 ・・・省略・・・・ |
③DeepStreamのインストール
それでは、DeepStreamをインストールしましょう。debパッケージなので、aptコマンドでインストールできます!
1 2 3 4 5 6 7 8 |
$sudo apt install ./deepstream-5.0_5.0.1-1_arm64.deb ・・・省略・・・ --------------------------------------------------------------------------------------- NOTE: sources and samples folders will be found in /opt/nvidia/deepstream/deepstream-5.0 --------------------------------------------------------------------------------------- libc-bin (2.27-3ubuntu1.3) のトリガを処理しています ... #$ |
④インストールディレクトリの確認
「/opt/nvidia/deepstream/deepstream」にDeepStreamがインストールされいるはずなので確認しましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$cd /opt/nvidia/deepstream/deepstream $ls -l total 488 -rw-r--r-- 1 root root 280935 9月 29 05:42 LICENSE.txt -rw-r--r-- 1 root root 160892 9月 29 05:42 LicenseAgreement.pdf -rw-r--r-- 1 root root 9643 9月 29 05:42 README drwxr-xr-x 2 root root 4096 11月 29 17:13 bin drwxr-xr-x 3 root root 4096 11月 29 17:12 doc -rwxr-xr-x 1 root root 5752 9月 29 05:42 install.sh drwxr-xr-x 4 root root 4096 11月 29 17:13 lib drwxr-xr-x 6 root root 4096 11月 29 17:13 samples drwxr-xr-x 10 root root 4096 11月 29 17:12 sources -rw-r--r-- 1 root root 4622 9月 29 05:42 uninstall.sh -rw-r--r-- 1 root root 70 9月 29 05:42 version |
⑤DeepStreamアプリの起動確認
それでは「deepstream-app」と入力して、DeepStreamのアプリを起動してみましょう。設定ファイルを指定していないためエラーになりますが、ちゃんとCUDAのライブラリを読み込んで起動できています。
1 2 3 4 5 6 |
$deepstream-app 2020-11-29 17:16:29.283360: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.2 ** ERROR: <main:605>: Specify config file with -c option Quitting App run failed $ |
これでDeepStreamのインストールは完了です。
Tensorflowのインストール
Google Colabで作成したTensorflowのモデルを変換するにはNVIDIA版のTensorflowが必要ですので、これをインストールしていきます。ポイントとしては、v2系ではなくv1.15をバージョンを指定してインストールする点です。
①必要パッケージのインストール1
まずは、Tensorflowに必要なパッケージをapt-getコマンドでインストールします。
1 2 |
$sudo apt-get install libhdf5-serial-dev hdf5-tools libhdf5-dev zlib1g-dev zip libjpeg8-dev liblapack-dev libblas-dev gfortran ・・・省略・・・ |
②必要パッケージのインストール2
次にPython系のパッケージについてもpip3コマンドでインストールします。ここで、以下のようにバージョンを指定してインストールする点に注意して下さい。numpyのビルドが必要なので20分ぐらいかかります💦
1 2 |
$sudo pip3 install -U numpy==1.16.1 future==0.18.2 mock==3.0.5 Cython h5py==2.10.0 keras_preprocessing==1.1.1 keras_applications==1.0.8 gast==0.2.2 futures protobuf pybind11 ・・・省略・・・ |
③必要パッケージのインストール3
公式ドキュメントには書いてありませんが、これを入れないとエラーになるので、更に必要なパッケージをインストールします。こちらもgrpciのビルドに10分ほどはかかるので気長に待ちましょう。
1 2 3 |
$sudo pip3 install tensorboard==1.15 tensorflow-estimator==1.15.1 opt-einsum astor google-pasta termcolor wrapt ・・・省略・・・ |
④Tensorflowのインストール
それでは、本命のTensorflowのインストールです。ここでは、NVIDIAのレポジトリを指定して「1.15.4+nv20.10」版のTensorflowをインストールします。v1.15系を指定することがポイントです。
1 2 3 4 5 |
$sudo pip3 install --pre --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v44 tensorflow==1.15.4+nv20.10 ・・・・省略・・・ Installing collected packages: tensorflow Successfully installed tensorflow-1.15.4+nv20.10 $ |
⑤Tensorflowのバージョン確認
それでは、ちゃんとインストールできたか確認しましょう。Python3コマンドを実行して、対話モードに入り「import tensorflow as tf; print(tf.__version__)」と入力しましょう。するとバージョンが一番下に表示されます‼️
1 2 3 4 5 6 7 8 9 |
$python3 Python 3.6.9 (default, Oct 8 2020, 12:12:24) [GCC 8.4.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import tensorflow as tf; print(tf.__version__) 2020-11-29 18:39:11.577017: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcudart.so.10.2 WARNING:tensorflow:Deprecation warnings have been disabled. Set TF_ENABLE_DEPRECATION_WARNINGS=1 to re-enable them. 1.15.4 >>> |
以上でTensorflowのインストールは完了です。
V4L2のインストール
ここからはJetson nanoで、カメラを利用するためのV4L2のインストールを行なっていきます。
①V4L2のインストール
V4l2のインストールは簡単で、以下のようにapt-getコマンドでインストールできます。
1 2 3 4 5 6 7 8 |
$sudo apt-get install v4l-utils ・・・省略・・・ v4l-utils (1.14.2-1) を展開しています... libv4l2rds0:arm64 (1.14.2-1) を設定しています ... v4l-utils (1.14.2-1) を設定しています ... man-db (2.8.3-2ubuntu0.1) のトリガを処理しています ... libc-bin (2.27-3ubuntu1.3) のトリガを処理しています ... $ |
②NVIDIA V4L2 GStreamer pluginのインストール
次に、NVIDIA V4L2 GStreamer pluginについてもインストールしておきます。
1 2 3 4 5 |
$sudo apt-get install --reinstall nvidia-l4t-gstreamer .../nvidia-l4t-gstreamer_32.4.4-20201016124427_arm64.deb を展開する準備をしています ... nvidia-l4t-gstreamer (32.4.4-20201016124427) で (32.4.4-20201016124427 に) 上書き展開しています ... nvidia-l4t-gstreamer (32.4.4-20201016124427) を設定しています ... $ |
以上でカメラを利用するための準備も完了です!!
おわりに
今回は、Jetson nanoにJetpackを使ってOSやCUDAなどをインストールし、DeepStreamやTensorflowなどの必要ソフトウェアをインストールして環境構築を行いました。次回は、このJetson nanoを用いて、オリジナルモデルを使った、物体検出を行ってみます。
第1回:IBM Cloud Annotationsを用いたアノテーション
第2回:Google Colabを用いたモデルの学習
第3回:Jetson nanoの環境構築
第4回:DeepStreamアプリを使いこなす ←次の記事
第5回:学習モデルの変換と物体検出
コメント