Jetsonビデオ処理プログラミング 第9話 ディープラーニング推論

今回はJetson上にディープラーニング推論を実装する方法について説明いたします。これに関しては、ぜひともTensorRTをご使用いただきたいのですが、その他の選択肢も以下の表にまとめてみました。

[Jetsonビデオ処理プログラミング]

第1話 NVIDIA提供 JetPackとSDKでできること

第2話 ビデオ入力(CSI接続のLibargus準拠カメラ)

第3話 ビデオ入力(USB接続のV4L2準拠カメラ)

第4話 リサイズとフォーマット変換

第5話 画像表示

第6話 動画エンコード

第7話 動画デコード

第8話 画像処理

第9話 ディープラーニング推論

第10話 計算リソースの最大活用

API プログラミング言語 コメント
NVIDIA TensorRT

・C++

・Python

・JetsonおよびNVIDIA社GPUカード向け高速推論エンジン

・ディープラーニングフレームワークで学習したモデルをTensorRT形式へ変換して使用

・DLAなどのアクセラレーターにも対応

NVIDIA cuDNN

・C

・ディープニューラルネットワークを処理するCUDAライブラリー

・ほとんどのディープラーニングフレームワークは、それらの内部からこのライブラリー呼び出しているが、ユーザーアプリケーションから直接、cuDNN APIを呼び出して利用することも可能。

TensorFlow

・Python

・主に学習用であるが、推論用に利用することも可能。

PyTorch

・Python

・主に学習用であるが、推論用に利用することも可能。

TensorRTの利用

TensorRTを使うためには、学習済みモデルをTensorRT形式(TensorRTシリアライズドエンジンまたはTensorRTプランファイルと呼ばれます)へ変換する必要があります。

TensorRTの利用

TensorRT形式へ変換可能なモデル形式は複数存在しますが、学習済みモデルの共通形式であるONNXをサポートしていますので、このONNX形式を介して変換をおこなうことが一般的です。

学習済みモデルの共通形式ONNXを介して変換をおこなう

TensorRTの利用方法に関する詳細を5話連載の記事およびサンプルコードでご用意しています。ぜひご覧ください。

ディープラーニング推論の高速化術
第1話 NVIDIA TensorRTの概要
第2話 NVIDIA TensorRTの使い方 ONNX編
第3話 NVIDIA TensorRTの使い方 torch2trt編
第4話 NVIDIA TensorRTの使い方 TensorRT API編
第5話 NVIDIA TensorRTカスタムレイヤーの作り方

cuDNNの利用

cuDNN APIを利用することで、ニューラルネットワークをユーザーが詳細に定義できます。ただし、学習済みの重み値やバイアス値もユーザーがcuDNNのAPIを利用して設定する必要がありますので、プログラミング工数は大きくなります。特殊な処理層をユーザーが定義したい場合などに限ってcuDNNを直接利用すべきで、通常は先に紹介いたしましたTensorRTを利用すべきと考えます。

cuDNNサンプルプログラム

cuDNN 8.xの場合、Jetson上の以下のディレクトリーにサンプルプログラムが存在します。

/usr/src/cudnn_samples_v8

サンプル 内容
conv_sample 畳み込み層処理関数使用例
mnistCUDNN cuDNNを利用したMNIST
multiHeadAttention Multi-head attention APIの使用例
RNN 再起型ニューラルネットワークの処理例
RNN_v8.0 再起型ニューラルネットワークの処理例

TensorFlowの利用

Jetson内蔵GPUが有効になったTensorFlowはNVIDIA社からリリースされています。

Installing TensorFlow For Jetson Platform

Dockerコンテナによる実行も可能です。

NVIDIA NGC Catalog > Containers > NVIDIA L4T TensorFlow(JetPack 5以前)

NVIDIA NGC Catalog > Containers > TensorFlow(JetPack 6以降、タグ末尾「-igpu」がJetson向け)

PyTorchの利用

Jetson内蔵GPUが有効になったPyTorchはNVIDIA社からリリースされています。

Installing PyTorch for Jetson Platform

Dockerコンテナによる実行も可能です。

NVIDIA NGC Catalog > Containers > NVIDIA L4T PyTorch(JetPack 5以前)

NVIDIA NGC Catalog > Containers > PyTorch(JetPack 6以降、タグ末尾「-igpu」がJetson向け)

次回で完結!計算リソースの最大活用について解説します!

連載記事「Jetsonビデオ処理プログラミング」の第9話、ディープラーニング推論についてご紹介しましたがいかがでしたでしょうか。

次回は最終話となり、計算リソースの最大活用についてご紹介します。

お困りのことがあれば、ぜひお問い合わせください

弊社ではハードウェアのNVIDIA GPUカードやGPUワークステーションの選定やサポート、また顔認証、導線分析、骨格検知のアルゴリズム、さらに学習環境構築サービスなどを取り揃えております。お困りの際は、ぜひお問い合わせください。