Jetson Nanoで学習済みモデルを使って、いろいろやってみる(1)推論


NVIDIA提供のコンテナーでいくつかのネットワークモデルを使って推論をやってみます。

Jetson Nanoでどんなことがやれるのか試してみましょう(もう少しパワーが欲しいという場合の次の選択肢はXavier NXになると思います)。

別途、転移学習もやってみます。


Jeyson Nano + Jetpack (4.4.1)のセットアップは済んでいるものとします。

以下のコンテンツをやってみましょう。

GithubにあるDustin Franklinさんのjetson-inferense 参照

Hello AI World

Running the Docker Container

Classifying Images with ImageNet

をやってみましょう。

 

以下のバージョンのイメージをDocker Hub からpull。

 

Jetsonのパフォーマンスを最大化しておきましょう。

CPUやGPUのクロックを変更する前と後では全然違います。

走っているかどうかは、jetson-stats(jtop)で確認できます。走っていない場合はInactiveになっています。

 

ちなみに解除する場合は以下を実行すればいいようです。

 

 

 

作業用のフォルダーを作っておきましょう。

 


Launching the Container

jetson-inferense をクローンして、


デフォルト設定でコンテナーを起動します。

デフォルト設定ではrunとrmが指定されています。コンテナーを永続化する場合はrun.shを編集します。

ダウンロードするネットワークモデルを聞いてきます。

とりあえずデフォルトのまま了解します。

ダウンロード開始。

ホスト側に学習済のネットワークモデルがダウンロードされます(data/networks)。

 

その後、コンテナーが起動、ホスト側の画像データやネットワークモデルのディレクトリはコンテナからマウントされています。

 


コンテナーのバージョンはこんな感じ。

Ubuntu(18.04.5 LTS)

Python(3.6.9)

appdirs (1.4.4)
boto3 (1.16.3)
botocore (1.19.3)
Cython (0.29.21)
dataclasses (0.7)
decorator (4.4.2)
future (0.18.2)
jmespath (0.10.0)
Mako (1.1.3)
MarkupSafe (1.1.1)
numpy (1.19.2)
pandas (1.1.3)
Pillow (8.0.0)
pip (9.0.1)
pycuda (2020.1)
python-dateutil (2.8.1)
pytools (2020.4.3)
pytz (2020.1)
s3transfer (0.3.3)
setuptools (50.3.2)
six (1.15.0)
torch (1.6.0)
torchaudio (0.6.0a0+f17ae39)
torchvision (0.7.0a0+78ed10c)
urllib3 (1.25.11)
wheel (0.35.1)

CUDA(19.2.89)

cuDNN(8.0.0.0)

 

 

アップデート&アップグレードします。

 


Running Applications

アプリケーションを使ってみます。

 

【カメラを使ってみます(video-viewer)】

カメラのタイプでオプションが変わります。

いろいろなカメラが使えますが、通常はこの2つのカメラが一般的です。

Jetsonは産業用途の使用も想定されているので、ネットワークカメラなどにも対応しています。

Camera Streaming and Multimedia

●ラズパイ用のカメラ(V2) ー> MIPI CSI camera

●USBカメラ -> V4L2 camera

2つ同時に使うと、カメラ番号は大概こんな感じになります。

ラズパイ用のカメラ(V2) ー> 0

USBカメラ -> 1(V2を使わない場合は0)

 

 

【inference(推論)を実行してみます】

TensorRTを使います。TensorRTを使うと何がうれしいのかはこのブログ参照

TensorRT は、NVIDIA製の高性能ディープラーニング推論最適化・実行ライブラリです。TensorRT を用いるとネットワークが最適化され、低レイテンシ・高スループットの推論を実現することができる……そうです。

初回のネットワークモデルの読み込みとコンパイル、推論にはJetson Nano だと2~3分くらいかかります。

2回目以降の推論実行は、高速化されます。

CPU・GPUのパフォーマンスのレポートはこんな感じ(Imagenetを使った場合)。

jetson_clocksでクロック変更前

クロック変更後

 

 

Imagenetを使った画像の分類

これが何なのか推論してみます。

初回はモデルの読み込みとコンパイルが実行されます。

コンテナ作成に使われたrun.shの中では、コンテナ側のいろいろなディレクトリがホスト側にマウントされています。イメージ用のディレクトリでは以下のようになっています。

生成された結果をホストから確認できます。

(コンテナ)/jetson-inference/build/aarch64/bin/images/test/jellyfish.jpg

(ホスト)/home/jetson/work/jetson-inference/data/images/test/jellyfish.jpg

確認してみます。

99.85%の確からしさで「クラゲ」という結果が出力されています。

スイカですけど、間違ってますね。

 

Detectnetを使ったオブジェクトの検出

画像内のオブジェクト検出

 

 

 

Segnetを使った画像分割(Semantic Segmentation)

以下のような画像からオブジェクトを分割・分離してみます。

こんな感じ。

 

 

 

 


編集

 

run の代わりに create して名前も付けておきます
sudo docker run -> sudo docker create –name my_cont

rmオプションを削除

 

 

で、コンテナを作成して起動

戻る


 

Be the first to comment

Leave a Reply

Your email address will not be published.


*