Optical Flow – Typical Use-Cases
Optical Flow は、以下のようなユースケースに役立ちます。
- Object tracking for intelligent video analytics
- ビデオ フレーム インターポレーション(OFIC: Video Frame Interpolation)。 および外挿
- Stereo depth estimation
- Video action recognition
Object tracking for Intelligent Video Analytics
数年前まで、インテリジェント ビデオ解析 (IVA) には物理的な視聴と、キャプチャしたビデオの手動解析が必要でした。 コンピュータビジョンとディープラーニング技術の急速な発展により、現在では、そのような分析のほとんどが自動化されています。 セキュリティカメラの映像から関心のある物体/人/車両を識別し、ビデオフレーム全体でそれらを追跡することは、コンピュータビジョンアルゴリズムを使用して実現することができます。 計算の複雑さと並列性が要求されるため、これらのアプリケーションを実行するためのプラットフォームとしてGPUが選ばれるのは自然なことです。 最も一般的な方法は、ビデオフレームごとに関心のある物体/人物/車両を検出・識別し、連続するフレームで物体を相関させるアルゴリズムを実行して、その動きを追跡する方法です。 この方法は、正確ではありますが、オブジェクトの検出/識別が計算集約的な操作 (通常はニューラルネットワーク推論を使用) であるため、非常に高い計算複雑性の要件を受けます。
ハードウェア オプティカル フロー エンジンは、オブジェクトの追跡を支援することによって、計算複雑性の要件を大幅に軽減します。 たとえば、いったんオブジェクトが検出器によって検出/識別されると、GPU のハードウェアオプティカルフローに基づくアルゴリズムによって、連続したビデオフレームで追跡することができます。 これにより、フレームごとに検出アルゴリズムを実行する必要がなくなり、計算量が大幅に削減されます。 検出器は、精度を落とすことなく、K番目のフレームごとに実行できるようになりました(K > 1、通常K = 4)。 これにより、GPU の CUDA コアは、追加のチャネルに対する推論や他の計算集約的なタスクを実行するために自由になります。
Optical Flow SDK 2.0 には、ソース コードとすぐに使用できる API とともに、オプティカル フローに基づくオブジェクト トラッカー ライブラリが含まれています。 私たちの実験では、オプティカル フローに基づくオブジェクト トラッカーは、トラッキングの精度を損なうことなく、最も一般的なアルゴリズムのいくつかと比較して、GPU 使用率を最大 80% 削減することがわかりました。
Video Frame Interpolation and Extrapolation
Optical flow も、リアルタイムでビデオ フレームを補間または外挿して非常に効果的に使用することが可能です。 これは、ビデオ再生の滑らかさの向上、スローモーション ビデオの生成、または Oculus (詳細) で使用されているような VR 体験における見かけのレイテンシーの低減に役立ちます。 ハードウェアのこの機能は、CUDA コアから独立しています。
FAQ
A: SDK をダウンロードしたら、必要最低限のディスプレイ ドライバー バージョンを記載した “ReadMe.txt” を参照してください。 正しいドライバーをインストールしないと、SDK の起動に失敗します。これは、初期化に失敗した場合に最初に確認することです。
A: クライアントアプリケーションは、任意の機能を有効にする前に、ケイパビリティ API を使用して能力を照会する必要があります。
A: すべてのアプリケーション開発者には、アプリケーションを書く前にプログラミングガイドを詳しく読むことを強くお勧めします。 特に、Optical Flow SDK に含まれる NVOF API Programming Guide の中の
- “Guidelines for Efficient Usage of NVOF API” の項をご覧いただければ、ヒントが得られると思います。
A: NVOF API は、ユーザーが基本ドライバによってサポートされる最大 API バージョンを照会できる API を公開しています。
A: パフォーマンスについて知るには、SDKドキュメントに含まれるNVOFAアプリケーションノートを参照してください。 性能は多くの要因に依存しますが、そのうちのいくつかは以下の通りです。 使用する GPU とそのクロック速度、使用する設定 (例: プリセット、グリッド サイズ、ROI などの機能)、使用できるメモリ帯域幅、アプリケーションの設計。
Support
フォーラム コミュニティでは開発者が質問をしたり経験を共有したり、NVIDIA や他の専門家との議論に加わったりできます。
フォーラムはこちらでご確認ください。
Additional Resources
- NVIDIA Video Codec SDK
- DeepStream SDK for Intelligent Video Analytics
- ディープ ラーニング ソフトウェア
- GitHub – NVIDIA Optical flow in OpenCV
- GTC 2020 Session – NVIDIA Video Technologies: Video Codec and Optical Flow SDK
- GTC 2020 Session – Using Video Codec SDK and Optical Flow SDK on NVIDIA GPUs Effectively
- NVIDIA DevBlog – December 5, 2019 – Accelerate OpenCV.OpenCV: NVIDIA Turing GPUによるオプティカルフローアルゴリズム
- NVIDIA Developer News – 2019年8月23日 – VideoGorillasの研究者がAIを使ってアーカイブコンテンツを4K解像度以上にリマスター
- Oculus Developer blog – 5月23日, 2019年 – NVIDIA Optical FlowによるASWとPassthrough+
- NVIDIA DevBlog – 2019年2月13日 – NVIDIA Optical Flow SDKへの入門