KUMICO

COLUMN

【Vol.7】はじめよう!エッジAI~NVIDIA® Transfer Learning Toolkit~学習検討編(1)

★そもそも「エッジAIってなに?」という方にはこちらのコラムをおすすめします。

Vol.1は以下です。
【Vol.1】はじめよう!エッジAI~エッジである必要性と最適な環境構築~
Vol.2は以下です。
【Vol.2】はじめよう!エッジAI~NVIDIA® 開発者キットのインストール~
Vol3は以下です。
【Vol.3】はじめよう!エッジAI~JetsonでNVIDIA®DeepStream SDK~
Vo4は以下です。
【Vol.4】はじめよう!エッジAI~NVIDIA® Transfer Learning Toolkit~
Vol5は以下です。
【Vol.5】はじめよう!エッジAI~NVIDIA® Transfer Learning Toolkit~ 環境構築編(その1)
Vol6は以下です。
【Vol.6】はじめよう!エッジAI~NVIDIA® Transfer Learning Toolkit~ 環境構築編(その2)

今回は、前回に引き続き、NVIDIA® Transfer Learning Toolkit(以下、TLT)の学習検討を行ってまいります。(Pretrainedモデルのダウンロードは今回行っておきます。)

【検討①】 モデルアーキテクチャの選定

以前もご紹介しましたが、下記が対応しているモデルアーキテクチャです。
今回は、YOLOV3をターゲットに進めることを検討します。
modelの選定①

下記コマンドで、現在動作させているコンテナのIDを調べます。

$ sudo docker ps

下記コマンドで、コンテナに入ります。

$ sudo docker exec -i -t <コンテナID> /bin/bash

Pretrainedモデルのダウンロード
下記コマンドで、Pretrainedモデルを調べます。

$ ngc registry model list nvidia/tlt_pretrained_*

TLT Image Classification/TLT Object Detection/TLT DetectNet V2 Detection
の3種類が出力されるかと思います。

YOLOV3の場合は、「TLT object detection」を利用するようです。
modelの選定②

下記、コマンドにて、Pretrainedモデルをダウンロードするディレクトリを作成した後、Pretrainedモデルをダウンロードします。

$ mkdir -p download/objectdetection/
$ cd download/objectdetection/
$ ngc registry model download-version nvidia/tlt_pretrained_object_detection ‐‐dest ./
No version specified, downloading latest version: ‘cspdarknet19’.
Downloaded 58.11 MB in 11s, Download speed: 5.27 MB/s
—————————————————-
Transfer id: tlt_pretrained_object_detection_vcspdarknet19 Download status: Completed.
Downloaded local path: /workspace/download/objectdetection/tlt_pretrained_object_detection_vcspdarknet19
Total files downloaded: 1
Total downloaded size: 58.11 MB
Started at: 2021-02-05 05:52:35.490296
Completed at: 2021-02-05 05:52:46.507698
Duration taken: 11s
—————————————————-

【検討②】 データセットの準備

データセットの準備では、Augmentorツールを使ってデータの水増しを行い、学習時の入力データ構造の準備を行います。

データの水増しは、空間拡張構成(rotation、filp,translation,shear)・色拡張構成(hue_saturation、contrast、brightness)・ぼかし設定等が可能で、Augmentor Toolを利用してデータの水増しが可能です。

学習時のデータ構成はKITTI file format形式で準備する必要があり、objectdetection系の場合は、下記のフォルダ構成に学習対象のファイルを格納します。

.
|‐‐dataset root
|‐‐ images
|‐‐ 000000.jpg
|‐‐ 000001.jpg
.
.
|‐‐ xxxxxx.jpg
|‐‐ labels
|‐‐ 000000.txt
|‐‐ 000001.txt
.
.
|‐‐ xxxxxx.txt
|‐‐ kitti_seq_to_map.json

Labelファイルは、KITTIフォーマット形式のため下記のアノテーションツールを利用することにより、手軽にKITTIフォーマットでアノテーションが行えそうです。

https://github.com/SaiPrajwal95/annotate-to-KITTI

その後、TFRecoreds形式に変更する必要があり、Dataset Converter Toolを利用することにより、変換可能です。

【検討③】 TLTでのトレーニング

YOLOV3用のトレーニング用のコマンドが用意されており、今まで用意したファイルを参照して、学習が可能な様です。

【検討④】 学習後の評価

KITTIファイルフォーマットにて学習後の推論評価用のコマンドがあるので、これを利用することにより、学習後の評価が可能な様です。

【検討⑤】 剪定(Option)

モデルを小さくするために、学習済みモデルの剪定コマンドが用意されています。
精度の低下は起こる可能性がありますが、興味深いコマンドです。

【検討⑥】 モデルのエクスポート

【Vol.3】はじめよう!エッジAI~JetsonでNVIDIA®DeepStream SDK~」で紹介させて頂いた、DeepStreamSDKへモデルをエクスポート可能です。

FP16/F32や、INT8へ量子化を行い、DeepStreamSDKへエクスポートできます。
今までは、量子化を行う場合はTensorRTの理解が必要なケースがありましたが、容易に量子化が行える期待が持てます。

DeepStreamSDKはJetsonで動作しますので、この手法にて、Jetsonへモデルをエクスポートします。

次回以降は、データセットの準備、トレーニング、学習後の評価、剪定、DeepSteramSDKへのモデルのエクスポートや量子化とJetsonへの実装を進めて行きます。

※本コラムに記載されている社名および製品名などの固有名詞は、各社の商標または登録商標です。
※各ツールのライセンスや購入に関しては、代理店・メーカにお問い合わせください。
※本コラムは、弊社が実際に開発をした中での経験より構成しております。本内容に準じて実施した結果については、本内容に準じて実施した結果に生じるいかなる影響、損害に関して、責任の無いものといたします。本コラムで紹介しておりますツールについては、合法性、正確性、道徳性、最新性、適切性、著作権の許諾や有無など、その内容については、何らの責任を負うものではありません。また、当社は通知することなく当サイトに掲載した情報の訂正、修正、追加、中断、削除等をいつでも行うことができるものとします。コンテンツのご利用により、万一、ご利用者様に何らかの不都合や損害が発生したとしても、当社は何らの責任を負うものではありません。

富士ソフトがおすすめ!!

エッジAI導入ソリューションはこちら>>

個別相談も承っております。下記よりお申し込みください。

個別相談会申し込み

関連記事

OTHER COLUMN

MORE  

まこちゃんブログ

NEWS

MORE  

PARTNER

  • Intel
  • Xilinx

お探しの組み込み製品はキーワードで検索!