NVIDIA Transfer Learning Toolkit を使用したカスタムの学習済みモデル (Pre-Trained Model) による学習

Masao Nakane
NVIDIA Japan
Published in
31 min readFeb 4, 2021

NVIDIA Transfer Learning Toolkit を使用したカスタムの学習済みモデル (Pre-Trained Model) による学習

こちらの記事は下記 NVIDIA Developer Blog の翻訳版となります。

https://developer.nvidia.com/blog/training-custom-pretrained-models-using-tlt/

エヌビディアの中根と申します。

こちらの記事では、NVIDIA Transfer Leaning ToolKit の活用方法についてご紹介したいと思います。

ディープニューラルネットワークの教師あり学習は、現在の AI アプリケーションを作成する際の一般的な手法となっています。アプリケーションで正確な AI を実現する、特にゼロから作成する場合には、一般的に非常に大きなデータセットが必要になります。大規模なデータセットを収集して準備し、すべての画像にラベル付けするには、費用と時間がかかり、また多くの場合にはドメインの専門知識が必要となります。

NVIDIA はより高速で正確な AI 学習を可能にするため、高精度な専用の学習済みモデルのNVIDIA Transfer Learning Toolkit(TLT)2.0をリリースしました。このカスタムモデルを出発点として使用することで、より小さなデータセットで学習し、学習時間の大幅な短縮をすることができます。これらの専用 AI モデルは、オブジェクトのクラスが要件に一致し、データセットの精度が適切である場合は、そのまま使用するか、同様のドメインやユースケースに簡単に適合させることもできます。

TLT は Python ベースの AI ツールキットで、転移学習と学習済みモデルを使用して高度に最適化された正確な AI アプリケーションを作成するためのものです。 TLT は AI を使い始めたばかりのデータサイエンティスト、研究者、新しく配属されたシステム開発者、ソフトウェアエンジニアなど、誰もが AI を利用できるようにするものです。正確な AI モデルを作成するだけでなく、 TLT はモデルを推論用に最適化して、展開するための最高のスループットを実現することもできます。

この記事では、 TLT Docker Container と AI モデルを NVIDIA NGC からダウンロードし、独自のデータセットで学習と検証をおこない、 NVIDIA DeepStream SDKNVIDIA TensorRT を使用してエッジに展開するために学習されたモデルをエクスポートするまでのワークフローを説明します。あるいは、これらのモデルをエクスポートして、展開用に TensorRT エンジンに変換することもできます。各モデル、 4 つの検出モデルと 2 つの分類モデルについて説明します。

TLT 2.0 は、専用モデルに加えて、 YOLOv3、FasterRCNN、SSD / DSSD、RetinaNet などの最も一般的なオブジェクト検出アーキテクチャ、および ResNet、DarkNet、MobileNetなどの一般的な分類ネットワークでの学習をサポートしています。

・専用モデル

専用の AI モデルは、主にスマートシティ、駐車場管理、スマートビルなどでのアプリケーション向けに構築されています。これらのモデルは何百万もの画像に基づいて学習されています。

ビデオ1. バウンディングボックスで囲われた歩行者の映像

https://developer.download.nvidia.com/video/People_new.mp4

プルーニングされていないモデルと、プルーニングされたモデルの両方が NGC で利用できます。プルーニングされていないモデルは、データセットで再学習するために TLT で使用されます。一方、プルーニングされたモデルは展開に対応しているため、エッジデバイスに直接展開できます。さらに、プルーニングされたモデルには、 INT8 精度のキャリブレーションテーブルも含まれています。プルーニングされた INT8 モデルは、最高の推論スループットを提供します。

表 1 は、このデータセットで測定されたネットワークアーキテクチャと精度を示しています。

表 1. データセットで測定されたネットワークアーキテクチャ

・TrafficCamNet

TrafficCamNet は、バックボーンの特徴抽出に ResNet18 を使用しています。NVIDIA detectnet_v2 アーキテクチャ上に構築された 4 クラスのオブジェクト検出ネットワークです。 544×960 の RGB 画像を用いて学習され、車、人、道路標識、二輪車を検出します。

データセットには、米国の都市 (約 20 フィートの見晴らしの良い場所) からの実際の交差点からの画像が含まれています。このモデルは、赤信号や一時停止の標識で停止するときに車の列を分離する問題を克服するように学習されています。このモデルは、道路上の車を数えたり、交通の流れを理解したりするスマートシティアプリケーションに最適です。

・PeopleNet

PeopleNet は、バックボーン特徴抽出に ResNet34 または ResNet18 を使用しています。NVIDIAdetectnet_v2 アーキテクチャ上に構築された 3 クラスのオブジェクト検出ネットワークです。544×960RGB 画像で学習され、人物、バッグ、顔の検出をします。空港、ショッピングモール、小売店などのさまざまなユースケースに対応するために、屋内外のシーンの数百万枚の画像を社内でラベルが付けされました。

このデータセットには、さまざまな視点からの画像が含まれています。 PeopleNet は、セキュリティやより高いレベルのビジネス洞察を得るために、混雑した環境で人を正確に数える必要がある場所やアプリケーションの構築に使用できます。

・DashCamNet

DashCamNet は、バックボーン特徴抽出に ResNet18 を使用しています。 NVIDIAdetectnet_v2 アーキテクチャ上に構築された 4 クラスのオブジェクト検出ネットワークです。 544×960 の RGB 画像で学習され、車、歩行者、交通標識、二輪車を検出します。

このネットワークの学習データには、見晴らしの良い場所で高さ約 4〜5 フィートの車のさまざまなダッシュボードカメラから社内で収集、注釈付け、キュレーションされた実際の画像が含まれています。他のモデルとは異なり、この場合のカメラは動いています。このモデルの使用例は、自動車やロボットなどの移動オブジェクトからオブジェクトを識別することです。

・FaceDetect-IR

FaceDetect_IR は、バックボーン特徴抽出に ResNet18 を備えた NVIDIAdetectnet_v2 アーキテクチャ 上に構築された単一クラスの顔検出ネットワークです。このモデルは合成ノイズで補強された 384x240x3 IR(赤外線)画像で学習されます。

このモデルは、ビデオ会議中のラップトップカメラや、脇見運転者を観察するために車内に配置されたカメラなど、人の顔がカメラに近いユースケース向けに学習されています。赤外線イルミネーターを使用すると、可視光の状態が通常のカラーカメラには暗すぎると見なされた場合でも、このモデルは機能します。

・VehicleMakeNet

VehicleMakeNet は、 224 x 224 サイズの車の画像を分類することを目的とした ResNet18 に基づく分類ネットワークです。このモデルは、 20 種類の人気のある自動車メーカーの車を識別できます。

VehicleMakeNet は通常、スマートシティアプリケーション用にDashCamNet または TrafficCamNet とカスケード接続されます。たとえば、DashCamNet または TrafficCamNet は、関心のあるオブジェクトを検出する一次検出として機能し、検出された各車について、VehicleMakeNet が車のメーカーを決定する二次の検出として機能します。スマートパーキングやガソリンスタンドなどの企業は、車両を使用して洞察を行い、顧客を理解することができます。

・VehicleTypeNet

VehicleTypeNet は、 ResNet18 に基づく分類ネットワークであり、 224 x 224 サイズのトリミングされた車両画像を、クーペ、大型車両、セダン、SUV、トラック、バンの 6 種類のクラスに分類することを目的としています。このモデルの一般的な使用例は、スマートガレージや料金所などのスマートシティアプリケーションで、車両サイズに基づいて課金が可能になります。

・PeopleNet モデルの学習

作業を開始する際に、アカウントをまだ持っていない場合は、最初に NVIDIA NGC アカウントをセットアップしてください。そして TLT コンテナーをプルするところから始めます。

docker pull nvcr.io/nvidia/tlt-streamanalytics:v2.0_dp_py3

使用可能なモデルのリストを表示するには、次のコマンドを使用します。

ngc registry model list nvidia/tlt_*

PeopleNet などの目的のモデルをダウンロードするには、次のコマンドを使用します。

ngc registry model download-version nvidia/tlt_peoplenet:unpruned_v2.0 –dest $model_path
図2. 学習済みモデルワークフローの手順

完全なワークフローは、次の手順で構成されています。

  • データの準備
  • スペックファイルの設定
  • 学習
  • プルーニング
  • モデルのエクスポート

データの準備

TLT オブジェクト検出器は、 KITTI ファイル形式のデータを想定しています。通常、多くの画像ファイルと関連するラベルファイルがあり、各画像の各オブジェクトのラベルと、それらの境界ボックスの 4 つのコーナーに対応する座標を提供します。この配置の場合、これらのファイルのメモリにアクセスする必要があります。処理を高速化するには、より適切な配置が必要です。

TFRecords を使用して、データセット全体をより適切に管理および反復します。データのシリアル化は、ネットワークを介してデータを効率的に読み取るのに特に役立ちます。次のディレクトリ構造を使用して、生データをフォーマットします。

| — dataset_root| — images| — 000000.jpg| — 000001.jpg| — xxxxxx.jpg| — labels| — 000000.txt| — 000001.txt| — xxxxxx.txt

データセットを TFRecords に変換するには、変換構成ファイルを作成します。学習用とモデル評価用の 1 つの変換ファイルが必要です

次のコード例は、学習データセット変換構成ファイルを示しています。

kitti_config {root_directory_path: “/path/to/trainval_root”image_dir_name: “images”label_dir_name: “labels”image_extension: “.jpg”partition_mode: “random”num_partitions: 2val_split: 14num_shards: 10 }

kitti_config では、データセットは学習と検証の 2 つのパーティションにランダムに分割されます。これは、 partition_modenum_partitions keys との値によって設定されます。この val_split オプションは、検証に使用されるデータのパーセンテージを指定します。

同様に、テストセットを TFRecords に変換するには、変換ファイルは次のコード例のようになります。

tlt-dataset-convert -d $conversion_spec_file_trainval -o $tfrecord_path_trainvaltlt-dataset-convert -d $conversion_spec_file_test -o $tfrecord_path_test

val_split 値にかかわらず、 次のセクションで説明する仕様ファイルの validation_data_source を使用することで、テストセット全体を評価することができます。

kitti_config {root_directory_path: “/path/to/test_root”image_dir_name: “images”label_dir_name: “labels”image_extension: “.jpg”partition_mode: “random”num_partitions: 2val_split: 14num_shards: 10 }image_directory_path: “/path/to/test_root”

次に、両方のデータセットを TFRecords に変換します。

tlt-dataset-convert -d $conversion_spec_file_trainval -o $tfrecord_path_trainvaltlt-dataset-convert -d $conversion_spec_file_test -o $tfrecord_path_test

スペックファイルを設定する

モデルの学習と評価に必要なすべてのハイパーパラメーターをコンパイルするため、仕様ファイルが必要です。前述のように、 PeopleNet は独自の DetectNet_v2 アーキテクチャの上に構築されています。 DetectNet_v2 のサンプル構成ファイルは、次の主要モジュールで構成されています。

  • dataset_config
  • model_config
  • training_config
  • augmentation_config
  • postprocessing_config
  • Evaluation_config
  • box_rasterizer_config
  • cost_function_config

データセット構成

PeopleNet のスペックファイルの dataset_config モジュールは、次のようにフォーマットされています。

dataset_config {data_sources: {tfrecords_path: “/path/to/trainval_tfrecords/*”image_directory_path: “/path/to/trainval_root”}image_extension: “jpg”target_class_mapping {key: “person”value: “person”}target_class_mapping {key: “face”value: “face”}target_class_mapping {key: “bag”value: “bag”}validation_fold: 0# For evaluation on test set# validation_data_source: {# tfrecords_path: “/path/to/test_tfrecords/*”# image_directory_path: “/path/to/test_root”# }

検証データを指定するには、 validation_fold を使用します。テストデータには、validation_data_source を使用します

モデル構成

モデル構造と関連するハイパーパラメーターは、 model_config モジュールを使用して構成できます。選択したアーキテクチャに応じて、アーキテクチャまたはバックボーンのハイパーパラメーターが異なる場合があります。

ResNet34 は PeopleNet で使用されます。“凍結”畳み込み層を使用すると、損失の更新中に凍結層の重みが変化しません。これは、事前に学習されたウェイトによって提供される機能を再利用して学習時間を短縮できる転移学習で特に役立ちます。

model_config {pretrained_model_file: “/path/to/pretrained/model”num_layers: 34freeze_blocks: 0arch: “resnet”use_batch_norm: trueobjective_set {bbox {scale: 35.0offset: 0.5}cov {}}training_precision {backend_floatx: FLOAT32}}

・学習構成

学習構成モジュールで、バッチサイズ、学習率、正則化、オプティマイザーなどの一般的なハイパーパラメーターを指定します。

正則化の重みを低くすることから始めることを推奨いたします。徐々に微調整して、学習と検証の精度の間のギャップを狭めます。

training_config {batch_size_per_gpu: 24num_epochs: 120learning_rate {soft_start_annealing_schedule {min_learning_rate: 5e-06max_learning_rate: 0.0005soft_start: 0.1annealing: 0.7}}regularizer {type: L1weight: 3e-09}optimizer {adam {epsilon: 9.9e-09beta1: 0.9beta2: 0.999}}cost_scaling {initial_exponent: 20.0increment: 0.005decrement: 1.0}checkpoint_interval: 10}

・拡張構成

拡張モジュールは、学習中にいくつかの基本的なオンザフライデータ前処理と拡張を提供します。PeopleNet 学習パイプラインは、入力として水平反転、基本色、および平行移動の拡張を使用して 544×960 の RGB 画像を取得します。

augmentation_config {preprocessing {output_image_width: 960output_image_height: 544crop_right: 960crop_bottom: 544min_bbox_width: 1.0min_bbox_height: 1.0}spatial_augmentation {hflip_probability: 0.5zoom_min: 1.0zoom_max: 1.0translate_max_x: 8.0translate_max_y: 8.0}color_augmentation {hue_rotation_max: 25.0saturation_shift_max: 0.20000000298contrast_scale_max: 0.10000000149contrast_center: 0.5}}

・後処理構成

ポストプロセッサモジュールは、生の検出出力からレンダリング可能な境界ボックスを生成します。このプロセスでは、カバレッジテンソルの信頼値を使用してオブジェクトをしきい値処理し、クラスごとに個別にクラスタリングアルゴリズムを使用して候補境界ボックスをクラスタリングすることにより、有効な検出を保持します。 DetectNet_v2 では、ノイズのあるアプリケーションの密度ベースの空間クラスタリング DBSCAN) が使用されます。

dbscan_eps(ε) 値が大きいほど、より多くのボックスがグループ化されます。

postprocessing_config {target_class_config {key: “person”value: {clustering_config {coverage_threshold: 0.005dbscan_eps: 0.265dbscan_min_samples: 0.05minimum_bounding_box_height: 4}}}target_class_config {key: “bag”value: {clustering_config {coverage_threshold: 0.005dbscan_eps: 0.15dbscan_min_samples: 0.05minimum_bounding_box_height: 4}}}target_class_config {key: “face”value: {clustering_config {coverage_threshold: 0.005dbscan_eps: 0.15dbscan_min_samples: 0.05minimum_bounding_box_height: 2}}}}

設定 cost_function_configbox rasterizer_config さまざまなハイパーパラメーターの詳細については、Transfer LearningToolkitインテリジェントビデオ分析スタートガイドを参照してください

・学習

データの準備が完了し、スペックファイルが構成されたら、学習を開始する準備が整います。次のコマンドを使用します。

tlt-train detectnet_v2 -e $spec_file_path -r $experiment_dir_unpruned -k $KEY — gpus $N

事前学習済みの重みとして専用モデルを使用する場合は、必ず $KEYtlt_encode に設定してください。

この tlt-train コマンドは、実験ディレクトリに KEY 暗号化モデルと学習ログを生成します。マルチ GPU 学習をサポートしているため、複数の GPU を使用してモデルを並行して学習できます。複数の GPU を使用した学習により、ネットワークは大量のデータを取り込み、モデルをより短時間で学習できます。学習の進行状況は、ログまたは monitor.json ファイルで確認できます。

最初の学習が完了したら、次のステップはモデルの精度を評価することです。学習または再学習したばかりの PeopleNet モデルを評価するには、 tlt-evaluate を使用します。

スペックファイルの evaluation_config モジュールは、評価のために各クラスのさまざまなしきい値を構成するためのものです。 dataset_config テストセットを指すように validation_data_source を更新することを忘れないでください。

evaluation_config {validation_period_during_training: 10first_validation_epoch: 120minimum_detection_ground_truth_overlap {key: “bag”value: 0.5}minimum_detection_ground_truth_overlap {key: “face”value: 0.5}minimum_detection_ground_truth_overlap {key: “person”value: 0.5}evaluation_box_config {key: “bag”value {minimum_height: 40maximum_height: 9999minimum_width: 4maximum_width: 9999}}evaluation_box_config {key: “face”value {minimum_height: 2maximum_height: 9999minimum_width: 2maximum_width: 9999}}evaluation_box_config {key: “person”value {minimum_height: 40maximum_height: 9999minimum_width: 4maximum_width: 9999}}}

evaluation_config との dataset_config 値を設定すると、モデルを評価する準備が整います。

tlt-evaluate detectnet_v2 -e $spec_file_path -m $peoplenet_model_path -k $KEY

すべての検出フレームワークは、共有メトリックとして平均平均精度 (mAP) を使用します。平均精度 (AP) 計算モードは、 SAMPLE または INTEGRATE のいずれかです。

  • SAMPLE は、 AP が 11 の等間隔のリコールレベルのセットでの精度値の平均として定義されている場合、 VOC2009 以前の VOC メトリックとして使用されます。
  • INTEGRATE は、 AP が適合率と再現率のための曲線下面積 (AUC) の直接推定である場合、 VOC2010 以降に使用されます。 INTEGRATE は、モデル評価の指標としてはるかに優れているため、使用してください。

tlt_evaluate テストセットのの出力は次のようになります。

=========class mAP========person 94.19bag 75.93face 94.59

・プルーニング

プルーニングを使用すると、モデル自体の全体的な精度を損なうことなく、パラメーターの数を 1 桁減らすことで、モデルをよりスリムにすることができます。この手法により、推論が高速になり、ビデオフレームの推論スループットが向上します。

プルーニングは 2 段階のプロセスです。モデルをプルーニングしてから、モデルを再学習します。最初にモデルを整理すると、ある程度の精度が失われます。ただし、データセットを使用してモデルを再学習することで、精度を取り戻すことができます。

図 3. プルーニングされたモデルとプルーニングされていないモデルの両方の 2 つの学習済みモデルの推論スループット

図 3 は、プルーニングされていないモデルとプルーニングされたモデルの両方について、 PeopleNet、TrafficCamNet、 および DashCamNet の推論スループットを示しています。プルーニングにデータセットを使用すると、スループットを 2 倍から 3 倍に増やすことができます。

プルーニングは、ネットワークのアーキテクチャとデータセットに大きく依存します。一般に、データセットが大きいほど、同等の精度を維持しながら、より積極的に整理できます。小さいデータセットは、プルーニング後に再学習するときに過剰適合に悩まされる可能性があります。

プルーニングは -pthtlt-prune コマンドのオプションを使用してスレッショルドをプルーニングすることによって制御されます。プルーニングのしきい値が高いほど、より積極的にプルーニングされ、モデルの全体的な精度が低下する可能性があります。このハイパーパラメーターを試して、プルーニングとモデルの精度の間の適切な場所を見つける必要があります。

PeopleNet モデルを整理するには、次の tlt-prune コマンドを使用します。

tlt-prune -m $peoplenet_model_path -o $pruned_model_path -pth 0.005 -eq union -k $KEY

tlt-prune の出力は、元のモデルがどれだけプルーニングされたかを示します。

[INFO] __main__: Pruning ratio (pruned model / original model): 0.1258476362418

この例では、ほぼ 88 % 削減できます。プルーニングされたモデルは、元のモデルの 8 分の 1 のサイズです。

プルーニング後にいくつかの有用な接続が削除された可能性があるため、プルーニング後、精度を回復するためにモデルを再学習する必要があります。プルーニングされたモデルを微調整するには、tlt-train を実行する前に、スペックファイルのパラメーターpretrained_model_fileがプルーニングされたモデルパスに設定されていることを確認してください。

tlt-train detectnet_v2 -e $spec_file_path -r $experiment_dir_pruned -k $KEY — gpus $N

tlt-evaluate を使用して、プルーニングされたモデルを微調整したときに評価することができます。結果の例を次に示します。

===========class mAP===========person 95.74bag 79.17face 96.76

これで、同等の精度を維持しながら、サイズが 10 分の 1 のモデルができました。モデルに自信が持てたら、次のステップは展開のためにモデルをエクスポートすることです。

・モデルのエクスポート

最後のステップは、学習済みモデルをデプロイ用にエクスポートすることです。展開の形式は、 .etlt または暗号化された TLT です。エクスポートされたモデルをキーで暗号化し、そのキーを使用して展開中にモデルを復号化します。

INT8 精度を使用して推論を実行するために、モデルのエクスポートステップで INT8 キャリブレーションテーブルを生成することもできます。暗号化された TLT は、 DeepStreamSDK で直接使用できます。

INT8 で PeopleNet モデルをエクスポートするには、次のコマンドを使用します。

tlt-export detectnet_v2 -m $peoplenet_model_path -o $int8_etlt_file \-e $spec_file -k $KEY — cal_image_dir $calibration_image_dir — data_type int8 \— batch_size N — batches 10 — cal_cache_file $calibration_table \— cal_data_file $calibration_data_cache

DeepStream SDK を使用したモデルのデプロイ

DeepStream SDK は、AI ベースのビデオストリーミングアプリケーションを構築するためのツールキットです。 DeepStream SDK は、ストリーミングビデオデータを入力として受け取り、 AI を使用して洞察を出力する最適化されたパイプラインの構築に役立ちます。 TLT で学習されたモデルのターンキー統合を提供します。

DeepStream 5.0 DeveloperPreview をダウンロードしてインストールすることから始めます。/samples ディレクトリで、 DeepStream アプリケーションを実行するための構成ファイルを見つけます。

cd /opt/nvidia/deepstream/deepstream-5.0/samples/configs/tlt_pretrained_models

AI モデルを実行するには、 DeepStreamSDK に組み込まれているエンドツーエンドの構成可能なアプリケーションである deepstream-app を使用します。このアプリでは、入力ソース、出力シンク、 AI モデルを構成できます。暗号化キーを使用した .etlt モデルは、このアプリで直接使用できます。

INT8 キャリブレーションテーブルを提供して、 INT8 精度で推論を実行することもできます。推論には、 NVIDIA の高性能推論ランタイムである TensorRT を使用します。 TensorRT で推測するために、 DeepStream は最初に暗号化キーを含む .etlt ファイルを TensorRT エンジンファイルに変換します。

エンジンファイルが生成された後、パイプラインを開始します。プラットフォームによっては、エンジンファイルの初期生成に数分以上かかる場合があります。または、 TensorRT エンジンファイルを DeepStreamSDK に直接提供することもできます。暗号化された.etlt ファイルを TensorRT エンジンに変換するには、tlt-converter を使用します。 NVIDIA GPU を搭載した x86 で DeepStream を実行する場合 tlt-converter は、 TLT コンテナーから使用できます。NVIDIA Jetson で実行している場合は、 ARM64 ベース tlt-converter を個別にダウンロードできます。

通常、deepstream-app を実行するために必要な構成ファイルは 2 つ以上あります。1 つはパイプライン全体のパラメーターを設定する最上位の構成ファイルであり、もう 1 つは推論用の構成ファイルです。使いやすさとシンプルさのために、各推論エンジンには一意の構成ファイルが必要です。複数の推論をカスケードする場合は、複数の構成ファイルが必要です。この例では、次のファイルを使用します。

  • deepstream_app_source1_peoplenet.txt
  • config_infer_primary_peoplenet.txt
  • labels_peoplenet.txt

モデル名と暗号化されたキーが config_infer_primary_peoplenet.txt ファイルに指定されています。次の主要なパラメーターを変更します。

[property]tlt-encoded-model=<TLT model>tlt-model-key=<Model Key>labelfile-path=<Label file>int8-calib-file=<INT8 Calibration cache>input-dims=<Inference resolution>num-detected-classes=<# of classes>

次に、アプリケーションを実行します。

deepstream-app -c deepstream_app_source1_peoplenet.txt

ポップアップウィンドウが開き、歩行者と顔の周りの境界ボックスを示すサンプルビデオが表示されます。

クラスごとに検出しきい値を変更して、検出を改善したり、オブジェクトを検出から完全に削除したりすることもできます。これらのパラメーターの詳細については、 NVIDIA DeepStream SDK クイックスタートガイドおよび NVIDIA DeepStream プラグインマニュアルを参照してください。

・結論

この記事では、大規模なデータセットで学習された 6 つの高精度モデルについて学びました。これらのモデルは、事前に学習されたモデルとして使用して、さらに転移学習を行うことができますが、製品で直接使用することもできます。プルーニングされていないモデルとプルーニングされたモデルの両方が NGC から入手できます。

PeopleNet を例に、モデルの学習、評価、プルーニング、再学習、およびエクスポートのいくつかの簡単な手順を説明しました。結果のモデルは、推論アプリケーション用の DeepStream SDK パイプラインで直接使用できます。

これは、 T4 または他の Tesla GPU を搭載したサーバー、および Nano や Xavier ファミリーのデバイスなどの Jetson エッジデバイスでも動作します。 INT8 キャリブレーションファイルを生成して、 INT8 の精度で推論を実行することもできます。プルーニングと INT8 の精度により、エッジデバイスで最高の推論パフォーマンスが得られます。

詳細については、次のリソースを参照してください。

--

--