ビデオ処理が必要なアプリケーションには、今やNVIDIA Jetsonは無くてはならない存在となっているのではないでしょうか。NVIDIA社からはDeepStream SDKやNVIDIA Isaac SDKなどのソフトウェアや、NVIDIA社のGPU向けに最適化された周辺ツールも充実しており、Jetsonを用いたアプリケーション開発には、ぜひこれらのツールを利用されることをお勧めしております。しかしながら、開発するアプリケーションによっては、適当なSDKが見つからない、または特殊な要求によりそれらSDKが適さない場合もあります。その場合は、JetPackに含まれるライブラリのAPIを直接コールするようなアプリケーション開発が必要となります。

本連載記事では、システムとしてはカメラから取り込んだ画像情報をJetsonモジュール内のGPUで処理して結果を表示するものを想定し、開発を実践されるお客様向けにビデオ処理の各ステップにおける処理方法を解説します。第1話ではJetson上に構築するシステムのソフトウェア構成について考えてみます。 

[Jetsonビデオ処理プログラミング]
第1話 NVIDIA提供 JetPackとSDKでできること
第2話 ビデオ入力(CSI接続のLibargus準拠カメラ)
第3話 ビデオ入力(USB接続のV4L2準拠カメラ)
第4話 リサイズとフォーマット変換
第5話 画像表示
第6話 動画エンコード
第7話 動画デコード
第8話 画像処理
第9話 ディープラーニング推論
第10話 計算リソースの最大活用

Jetsonソフトウェア開発キット

Jetson向けソフトウェア開発キット(SDK)として、NVIDIA社からJetPackが提供されています。Jetson開発者キットにJetPackを導入することで、Jetson用アプリケーションソフトウェアの開発をすぐに始めることができます。JetPackには以下のソフトウェアが含まれています。これらのソフトウェアはアプリケーションの分野を特に選ばない汎用のものです。

オペレーティングシステム(L4T
  • Linuxカーネル
  • ブートローダー
  • 各種デバイスドライバー
  • フラッシュユーティリティー
  • Ubuntuベースのファイルシステム(サンプル)
  • ディープラーニング推論用の高速ランタイム
  • ディープニューラルネットワーク向けの高性能ライブラリー
  • GPUで高速化されたアプリケーションを開発するための開発環境
  • カメラアプリケーションAPIとセンサードライバーAPIを含む低レベルAPIを提供するパッケージ
コンピュータービジョン
開発ツール
(ホストPCへインストール)

アプリケーションの分野に特化したSDKの利用

もっとアプリケーションの分野に特化したSDKを、JetPackの上に導入することもできます。代表的なものは以下のとおりです。これらSDKは「フレームワーク」、「ツールキット」、「プラットフォーム」などと呼ばれる場合もあります。アプリケーションの分野に特化したSDKを利用できれば、より少ないプログラミング工数でアプリケーションを構築できる可能性があります。半面、きめ細やかな制御が難しい場合があります。プログラミング工数を取るか、アプリケーション固有部分の作りこみのしやすさを取るか、トレードオフです。また、そのSDKの使い方が難しいと、習得するためのコストが高くつく場合もあり、注意が必要です。

SDK

用途

特長

インテリジェントビデオ解析

NVIDIA Metropolisの一要素として提供され、学習済みモデルや、転移学習用ツールであるTransfer Learning Toolkitと組み合わせて利用可能


◎AI監視カメラ、導線(動線)解析などのアプリケーションを構築するのであれば、必ず利用を検討すべきSDK
参考:[AI画像解析アプリ開発に必要な知識] 第1話 NVIDIA DeepStream SDKとは

AIを活用したロボット
シミュレーターも併せて提供されている
オープンなSDK
ROSなど
 各SDK毎に異なる
エコシステムの充実
サードパーティーが販売するJetson対応SDK
 各SDK毎に異なる
 サードパーティー毎に特色がある

アプリケーションに特化したSDKが見つからない、または、適さない場合

冒頭にもありましたが、基本的にはNVIDIA DeepStream SDKやNVIDIA Isaac SDKの利用をお勧めしていますが、JetPackに含まれるライブラリーのAPIを直接コールする方法を知っていると今後のアプリケーション開発に役立てていただくことが可能です。
想定するビデオ処理ステップと利用するライブラリー/APIは以下のとおりです。

処理

利用するライブラリー/API

  • Libargus Camera API
  • GStreamer
  • Video for Linux API version 2 (V4L2)
  • OpenCV
  • GStreamer
  • Multimedia API
  • NVIDIA Video Programming Interface (VPI)
  • NVIDIA Performance Primitives (NPP)
  • OpenCV
  • GStreamer
  • Multimedia API
  • X11 + OpenGL ES
  • NVIDIA Tegra Direct Rendering Manager (DRM)
  • OpenCV
  • GStreamer
動画エンコード
  • Multimedia API
  • GStreamer
動画デコード
  • Mutlimedia API
  • GSteamer
画像処理
  • CUDA
  • NVIDIA Video Programming Interface (VPI)
  • OpenCV
ディープラーニング推論
  • cuDNN
  • TensorRT

次回はビデオ処理システムでまず最初に考慮すべき「ビデオ入力」方法の解説!

連載記事「Jetsonビデオ処理プログラミング」の第1話、NVIDIA提供 JetPackとSDKでできることをご紹介しましたがいかがでしたでしょうか。
次回はいよいよビデオの入力方法についてご紹介します。

お困りのことがあれば、ぜひお問い合わせください

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