前回の[物体検出アプリ開発に必要な知識] シリーズ第1話では、NVIDIA社が公開する人物検知のサンプルアプリケーションをJetsonで動作させる手順をご紹介しました。

 

実際はデータセットを追加したり、ネットワークモデルや画像表示のアプリに手を加えてみたいというご要望もあると思います。そのためには以下のような学習から推論まで一連のAI開発プロセスを実現するための仕組みが必要となりますし、そのプロセスを使用して高い精度のモデルを作成してアプリケーションとして動作させるためには、多様な専門領域のノウハウが必要されます。具体的には以下のようなフローを実施することになります。

 

データセット準備:入力データの準備、ラベルデータの準備

学習:ネットワークモデルの準備、最適な重み設定(パラメータ―)

推論:低消費電力デバイスでの高速な推論実行、想定性能で動作するアプリケーションの作成

 

NVIDIA社では、学習から推論に至るまでのアプリケーション開発をトータルで支援する仕組みとして、NVIDIA TAO TOOLKITを提供しています。第2話は、開発の要となるNVIDIA TAO TOOLKITについて理解を深めていき、推奨ハードウェアやNVIDIA TAO TOOLKITのサンプルアプリケーションの動作確認までご紹介していきます。

NVIDIA TAO TOOLKIT

NVIDIA TAO TOOLKITは学習済みモデルを使用して転移学習させることより高度な AI アプリケーションの作成を支援するツールキットです。

NVIDIA TAO TOOLKITでは物体検出、画像分類、セグメンテーション、自然言語処理等の多様なユースケースに対して機能を備えていますが、今回は物体検出の例を使用します。そして以下のような転移学習の一連のフローにおいて、特徴的な機能となる"AUGMENTATION"と"PRETRAINED MODEL"についてご紹介します。"TRAINING"以降の説明は次回以降の記事で解説していきます。

 

1:AUGMENTATION(データ拡張)

2:PRETRAINED MODEL(学習済モデル)

3:TRAINING(学習)           第4話にて解説

4:PRUNE(枝刈りでモデル軽量化)     第5話にて解説

5:QUANTIZE(量子化でモデル最適化)            第5話にて解説

6:MODEL EXPORT(推論モデルの生成)          第5話にて解説

出典: NVIDIA

そもそも転移学習とは?

前置きとなりますが、冒頭でご紹介した学習フローで触れましたが、高精度なネットワークモデルの実現には専門的な知識が必要となります。ディープラーニングの領域では様々なネットワークモデルが開発され、多く公開されていますが、想定のユースケースで性能を発揮するモデルの実現には、モデルの構造だけでなく、その各ノードのパラメーター(重み)の最適化が重要となります。

これは学習のプロセスで行われるのですが、ネットワークモデルの学習は人間の学習によく例えて説明されます。

 

人間が見たものを学習していくためには、多くの経験と正しい教師が必要となりますが、一旦学習された脳ができてしまえば経験が少なくても似たものであれば正しい結果を推測することができるようになります。ニューラルネットワークでも、初期状態のパラメータから性能が発揮できるパラメーターにチューニングされるためには、多くデータと正しい教師(正解ラベル)によって膨大な経験(学習)を行う必要があり、この学習を実現する環境の準備と実行が課題となっています。

 

転移学習とは、目的のユースケースで性能を発揮するモデルを、初期状態のネットワークモデルからの学習ではなく、すでに膨大な学習を行って生成された学習済モデルを活用することで短時間で効率よく実現する方法です。

 

具体的には、犬の種類を識別するモデルを実現する場合に、猫の種類を識別する学習済モデルを活用するといった例が考えられます。顔の形、四本足の形状などの動物の共通的な特徴の学習結果を応用でき、追加で犬種の区別に必要な特有の違いを再学習することで、効率よくモデルを実現できる可能性があります。

AUGMENTATION(データ拡張)

ディープラーニングでは入力データに対して得られた出力結果を正解ラベルと比較することで学習をおこないます。学習時に使用されたデータと近いものは正しい推論結果を得られることが期待できますが、差異が大きい入力に対しては正しい推論結果が得られない事象が発生します。

例えば、同じ画像データでも回転したり色合いが違ったりするだけで違う入力画像として推論がおこなわれてしまうことがあります。人間の場合、同じものをいろいろな環境条件(角度、色合い等)で自然と見て学習していますが、コンピュータではそのような多様なバリエーションの入力データは学習時に準備してあげる必要があります。

 

NVIDIA TAO TOOLKITのAUGMENTATION機能を使用することで、既存データセットの画像から回転、色合い等の様々な環境条件のデータを自動的に生成し、多様な環境条件での学習を実施することがが可能となります。

AUGMENTATIONの例

PRETRAINED MODEL(学習済モデル)

ディープラーニングにおいて、ネットワークモデルは人間の脳にあたる部分であり、非常に重要となります。転移学習の説明の通り、モデルの構造だけでなくモデルのノードのパラメーター調整が推論性能に大きくかかわってきます。NVIDIA社では、一般的なモデルだけでなくNVIDIA TAO TOOLKITで使用できるモデルとして、以下のように多様なユースケースに対応できるよう、膨大なデータセットで学習し最適化されたパラメータを含む各種ネットワークモデルを準備しています。

例えば、人物の検知を得意とするモデルとしては、膨大な人物データを使用して学習されたPeopleNetなどがあります。

 

Model

Network architecture

Use cases

DashCamNet

DetectNet_v2-ResNet18

車、人、道路標識、自転車を検出

FaceDetect-IR

DetectNet_v2-ResNet18

顔を検出

PeopleNet

DetectNet_v2-ResNet34

人、バッグ、顔を検出

TrafficCamNet

DetectNet_v2-ResNet18

車、人、道路標識、二輪車を検出

VehicleMakeNet

ResNet18

車種の分類

VehicleTypeNet

ResNet18

車両タイプの分類

出典:NVIDIA

NVIDIA TAO TOOLKIT サンプルアプリケーションの動作確認

以下推奨ハードウェアを用いて、こちらのリンクで公開されているNVIDIA TAO TOOLKIT3.0のサンプルアプリケーションを動作させてみます。

(従来のNVIDIA TRANSFER LEARNING TOOLKITで作成されているアプリケーションですので、実行時には一部コマンドなどの修正が必要です。)

NVIDIA TAO TOOLKITの推奨ハードウェア

NVIDIA TAO TOOLKITの学習では膨大なノードのネットワーク学習をおこなうため、以下のような大容量のメモリーと高性能なGPUを搭載したハードウェア環境を準備することがが推奨されています。詳細はこちらのリンクでご確認ください。

NVIDIA A100
NVIDIA Tesla V100

Jetsonに接続されたカメラにて撮影された映像ストリームへ、以下の2段階の推論処理を組み込こんだアプリケーションの実装例です。

  ・推論処理1:手を検出します(後段の処理で手の部分の画像を切り出します。)

  ・推論処理2:切り出された手の形状を識別し、以下のジェスチャーを判定します。

        (Thumbs Up, Fist, Stop, Ok, Two, Random)

出典:NVIDIA

こちらの実行結果では、推論処理1により緑のバウンディングボックスで両手を検出しており、推論処理2により右手はOk、左手はStopと識別できていることが確認できております。第1話では人物検知アプリケーションの実行例をご紹介しましたが、今回は手の認識を行った後、そのジェスチャーの意味を判定するといったより高度な推論処理が可能となっております。NVIDIA TAO TOOLKITを使用することで、ネットワークモデルを含む複数のモデルを使用した推論が容易に構成できます。

 

推論処理1で、ネットワークモデルはNVIDIA TAO TOOLKITで転移学習を行うことで生成し、推論処理2では既存のモデルファイル(GestureNet)をそのまま使用しました。この後の記事では推論処理1にフォーカスして、データセット準備、学習、推論のフェーズに分解して、推論処理1が実行されるまでの開発の流れをご紹介していきます。

次回から、このサンプルアプリアプリケーションを徹底的に紐解きます!

本記事では、NVIDIA TAO TOOLKITとは何か、さらにNVIDIA TAO TOOLKITを用いた手の検出・ジェスチャー識別のアプリケーション動作確認までご紹介しましたが、いかがでしたでしょうか。

次回からはいよいよ、本記事でご紹介したサンプルアプリケーションを紐解きながら、学習に必要な環境を構築し、データセットを準備するまでの流れについて解説します。

ご興味がございましたら、以下のボタンをクリックして連載記事の続きをご覧いただけたら幸いです。

AI導入をご検討の方は、ぜひお問い合わせください

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

 

※記事でご紹介した実行例は、今後のソフトウェア、ハードウェアのアップデートにより変更される可能性があります。

 またサンプルプログラム、ソースコード上の細かなお問い合わせは、お受け致しかねます。あらかじめご了承ください。