COLUMN
【Vol.4】はじめよう!エッジAI~NVIDIA® Transfer Learning Toolkit~
「はじめよう!エッジAI」ではエッジAIの必要性、エッジAIを取り巻く環境、さらに画像処理系エッジAIを始めるために必要な環境の解説やご紹介をしていきます。
★そもそも「エッジAIってなに?」という方にはこちらのコラムをおすすめします。
Vol.1は以下です。
※【Vol.1】はじめよう!エッジAI~エッジである必要性と最適な環境構築~
Vol.2は以下です。
※【Vol.2】はじめよう!エッジAI~NVIDIA® 開発者キットのインストール~
Vol3は以下です。
※【Vol.3】はじめよう!エッジAI~JetsonでNVIDIA®DeepStream SDK~
今回は、NVIDIA® Transfer Learning Toolkit(以下、TLT)を、ご紹介させて頂きます。
ゼロからディープラーニングの教師有学習を行う際は、フレームワークの選定、環境の構築、データセットの準備、データセットのAugmentation(水増し)、アノテーション、ニューラルネットワークの選定、ハイパーパラメータの調整等を行い、学習を開始し、目標の学習精度や汎化性能に到達しない場合は、さらにデータセットの準備、アノテーション、ハイパーパラメータ調整、ニューラルネットワークの変更等を行い、再学習を行う様な繰り返しの作業が必要となります。
ゼロからディープラーニングを行う場合で、画像分類の場合のアノテーションは分類毎のフォルダに分けて入れる方法が一般的で実現したい内容にもよりけりですが、分類数が少ない場合は比較的労力がかかりません。しかし物体検出となると事前にAIのアノテーションツールを利用したとしても完全ではなく、画像に対して検出したい物体の座標情報のアノテーションが必要となり、画像分類より大きな労力となります。
TLTは、ディープラーニングの教師有学習を行う際に転移学習の環境が提供されており、目的の学習精度や汎化性能に到達しやすい環境を提供されています。転移学習は、ゼロからディープラーニングを始めるより少ないデータセットで目的が達成できる事が期待できます。
弊社では、以前にGPUを利用した白状検出のデモを構築しました。この際も転移学習を利用しており、物体検出のニューラルネットワークを利用する事により100枚程度の学習データでかなりの検出が可能でした。
リアルタイム白状検出デモ動画:
https://www.youtube.com/watch?v=PJ_K6Dckltg&feature=emb_logo
TLTの環境構築は、Docker環境で提供されており、環境構築も容易に構築可能です。
ハードウェア環境は以下の環境が推奨されております。
最小構成 | 推奨構成 | |
システムメモリ | 4GB RAM | 32GB RAM |
GPUメモリ | 4GB RAM | 32GB RAM |
CPUコア数 | 1 | 8 |
GPU数 | 1 | 4 |
ストレージ | 50GB | 100GB |
TLTの対応しているニューラルネットワークは以下です。
Image Classification |
Object Detection | |||||||
Backbone | - | DetectNet_V2 | FasterRCNN | FasterRCNN | SSD | YOLOV3 | RetinaNet | DSSD |
ResNet10/18/34/50/101 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 |
VGG 16/19 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 |
GoogleLeNET | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 |
MobleNET V1/V2 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 |
SqueezeNet | 〇 | 〇 | × | 〇 | 〇 | 〇 | 〇 | 〇 |
DarkNet 19/53 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 |
物体検出のニューラルネットワークは、大きく分けて分類層と検出層の2つの層から成り立っています。各物体検出ネットワークは多彩な分類層のニューラルネットワークに対応できることが特徴といえます。分類数を配慮しながら、分類層のニューラルネットワークと検出層のニューラルネットワークの組み合わせにより、パフォーマンスと精度の調整が色々可能と言えるかと思います。また、Google OpenImagesデータセットのサブセットでトレーニングに対応済みの様です。
アプリケーションに特化したTLTの学習済みモデルは、以下が提供されている様です。
ネットワークアーキテクチャ | クラス数 | Accuracy | 用途 | |
TrafficCamNet | DetectNet_v2-ResNet18 | 4 | 83.5% | 道路上の車の数を数え、交通の流れを把握したいスマートシティ用途 |
PeopleNet | DetectNet_v2-ResNet34 | 3 | 84% | 混雑した環境で正確に人数を数える必要がある用途 |
DashCamNet | DetectNet_v2-ResNet18 | 4 | 80% | 移動オブジェクトからオブジェクトを識別する用途 |
FaceDetect-IR | DetectNet_v2-ResNet18 | 1 | 96% | 人とカメラが近い環境での顔検出用途 |
VehicleMakeNet | ResNet18 | 20 | 91% | 人気のある自動車メーカー20種類を識別する用途 |
VehicleTypeNet | ResNet18 | 6 | 96% | クーペ、大型車両、セダン、SUV、トラック、バンの6つのクラスに分類する用途 |
TLTの興味深い点は、上記までの様々な転移学習環境と、剪定(Pruning:影響の少ないニューロンの削除)、INT8への量子化のサポートも行っております。剪定・量子化を行うと精度劣化がトレードオフの要素となりますが、高速化が期待できます。そして、その結果を本コラムで紹介してきたDeepStreamSDKへモデルのデプロイも可能との事です。
DeepStreamSDK は、ネットワークカメラやUSBカメラ・ファイル入力に対応しているため、Jetsonシリーズへモデルをデプロイすることにより今までより容易にAIでの分類・物体検出アプリケーションの構築が可能となったと考えております。
弊社ではTLTを始めるのにも最適なエッジAI導入ソリューションを提供させて抱いております。是非ご検討ください。
https://www.fsi-embedded.jp/edge-ai-solution/
本コラムにてJetson™ TX2を利用しDeepStream SDKのサンプルデザインの動作は比較的容易に動作できました。
次回以降TLTで学習を行い、DeepStramSDKへモデルのデプロイを行っていきたいと思っております。
※本コラムに記載されている社名および製品名などの固有名詞は、各社の商標または登録商標です。
個別相談も承っております。下記よりお申し込みください。