今回の開発に必要になるであろう技術のうち特に重要なものを簡単に紹介します。実際に現場で動くことも考えると必要になってくる技術です。
ステレオカメラ
ステレオカメラとは、対象物を複数の異なる方向から同時に撮影することにより、その奥行き方向の情報も記録できるようにしたカメラのことです。
今回の開発ではモノクロのステレオカメラを使用します。画像データと視差データを取得することが出来ます。画像データを使って人を検出し、視差データから距離を検出します。
エッジAIコンピューター
実際にAIを使用する際、クラウドAIとエッジAIのどちらにするかを考える必要があります。クラウドAIは文字通りクラウドを使用するAIで、エッジAIは端末上で全ての処理を行うAIのことです。
クラウドAIはクラウドと端末間の通信が必要になります。扱うデータ量が少なければ問題ないかもしれませんが、画像のように大きなデータを扱う場合、通信の際の遅延は大きくなります。リアルタイム処理が苦手なのです。一方エッジAIは、通信を行う必要がないためリアルタイム処理が得意です。
今回のような開発ではリアルタイム処理が重要です。また通信が困難な環境で使用される可能性もあります。これらを考慮すると、エッジAIを選択するのが適切です。
エッジAIを使いたい時に考えるべきことは以下のことです。
- 処理を行うハードウェア
- 高速化、最適化
1に関しては、普通のパソコンでも一応大丈夫ですが、NVIDIAのエッジAI用GPUボードであるJetsonなどを使う事もできます。Jetsonには幾つか種類がありますが、基本的にはPC用のGPUよりは性能が下がります。Jetsonの利点はその大きさにあるので、性能、大きさを考慮して何を使うのか決めるのが良いでしょう。
2に関しては、もしJetsonのようにGPUの性能が低くても小型の端末を使いたい場合、とても重要になります。性能が低い分、AIの高速化、最適化が必要になり、普通のPCで開発したAIをそのまま組み込んでも、思ったような結果を得られない可能性があります。その際に役に立つのがTensorRTです。
TensorRT
TensorRTとは推論を高速で行うためのC++ライブラリです。TensorRTを使用することで、Jetsonなどへ組み込む学習済みモデルを高速実行に適した形に最適化し、実行時には最適化されたモデルを使って高速推論が可能になります。
参考文献
[1] フリー百科事典『ウィキペディア(Wikipedia)』
https://ja.wikipedia.org/wiki/ステレオカメラ
[2] Interface 2019年8月号 AI研究モダン計測制御